History log of /haiku/src/add-ons/kernel/file_systems/layers/attribute_overlay/attribute_overlay.cpp
Revision Date Author Comments
# 711e2dc0 01-Dec-2021 Augustin Cavalier <waddlesplash@gmail.com>

Adjust all struct dirent creations (again), this time to use offsetof().

The dirent struct is not packed, so offsetof(dirent, d_name) != sizeof(dirent).
Thus in order not to waste the alignment bytes (which are significant,
on x86_64 at least, sizeof(dirent)==32, but offsetof(...)=26.)

This is also the most portable way to handle things, and should
work just fine in cross-platform code that has a non-zero-sized d_name.


# 6f7fc220 07-Mar-2016 Axel Dörfler <axeld@pinc-software.de>

NodeMonitor: Added B_WATCH_CHILDREN flag.

* Added a directory argument for notify_{stat/attribute}_changed().
* This allows to watch only a directory, and get the notifications for
all of its files, not just add/remove entry notifications.


# 88499de1 29-Apr-2013 Jérôme Duval <jerome.duval@gmail.com>

attribute_overlay: fixed a warning.

* warning about comparison between signed and unsigned integer expressions.


# d63f4274 18-Oct-2010 Jérôme Duval <korli@users.berlios.de>

added a file system call preallocate() as described in #6285, currently unused


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1e2c72fc 29-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* FindAttribute() was broken and would find partial names (ie. if an attribute
with the name "abc" existed, it would be returned when opening any attribute
starting with "abc".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38432 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 001d7548 29-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Style cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38430 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d570af7 24-May-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the type of the "op" parameter of the fs_vnode_ops::ioctl() hook and
the _kern_ioctl() syscall from ulong to uint32.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36927 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40fa690b 19-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

The vnode->private_node holds our object, not vnode itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35191 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 271b9ad4 01-Sep-2009 Michael Lotz <mmlr@mlotz.ch>

Enable the IO hook for both attribute and write overlay. Attribute overlay isn't
concerned by it as it does not do file data, it simply passes the hook through.
In the write_overlay case we check for write operations and for modified nodes.
In both cases we return B_NOT_SUPPORTED which will cause a fallback to
synchronous IO. The main problem with the fallback is not that it is synchronous
but that the physical buffers of the request will be mapped and filled page
wise, which makes it slow for various reasons. In any case with this setup all
reads to write_overlay that can go through unmodified now do. This should speed
up CD boot as there is no physical to virtual translation overhead and no limit
to page wise reads. In the best case it should now read 256 blocks at the time
instead of always falling back to 2. My tests show no side effects on creating,
writing or partially modifying nodes so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32897 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 940e8add 28-May-2009 Michael Lotz <mmlr@mlotz.ch>

Apply r30895 and r30897 to the attribute_overlay as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30898 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2cdc24e4 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Fix two instances of handing wrong vnodes to the next layer in attribute_overlay.
The target vnode in link and the toDir vnode in rename were passed directly,
meaning that an attribute_overlay vnode was handed to the next layer causing
crashes when moving/renaming a file on ISO-only CDs for example. Fixes #3885.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2fc5fcd1 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Add missing put_vnode() in error case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30890 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4251f056 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

When writing an attribute store file the parent directory might have been
invalidated since the creation of the object. If this is the case we have to
look it up again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30889 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06359766 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Invalidate our cached inode numbers when removing the attribute file. Basically
we want to ensure that we re-enumerate our environment when eventually writing
a new one as it has most probably changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30888 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfada888 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Add functionality for removing a attribute file. In case a file is (re-)moved
we will later remove the attribute backing file using this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30887 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3cf43c26 25-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the fs_vnode_ops::create_dir() parameter for returning the ID of the
newly created dir. The VFS really doesn't need it and for some file systems
it might not be easy to get by. Several file systems (e.g. rootfs and fat)
were ignoring the parameter anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29719 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c67a177 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

No need to relay the attribute calls. Fixes attribute overlays when used with another layer.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29258 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ef49450 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Rename the trace output as well.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29256 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af4245f8 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Split overlay filesystem into attribute_overlay and write_overlay.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29255 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 77fdecfe 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Preparing to split the overlay filesystem into an attribute_overlay and write_overlay module.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29253 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 88499de19083878db3cf4f5a7acd4e75e71bf255 29-Apr-2013 Jérôme Duval <jerome.duval@gmail.com>

attribute_overlay: fixed a warning.

* warning about comparison between signed and unsigned integer expressions.


# d63f4274b665d32065f24a7a01a025578c8a43c9 18-Oct-2010 Jérôme Duval <korli@users.berlios.de>

added a file system call preallocate() as described in #6285, currently unused


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39006 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1e2c72fcfc16119a7db98020316646204bb3e35d 29-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* FindAttribute() was broken and would find partial names (ie. if an attribute
with the name "abc" existed, it would be returned when opening any attribute
starting with "abc".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38432 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 001d7548ab93e77d995eef249fac1ab1818a9a79 29-Aug-2010 Axel Dörfler <axeld@pinc-software.de>

* Style cleanup, no functional change.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38430 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9d570af7c878ba30043b23e6dce5f3ae5578aa7c 24-May-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the type of the "op" parameter of the fs_vnode_ops::ioctl() hook and
the _kern_ioctl() syscall from ulong to uint32.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36927 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40fa690b518b2a837dd3e5eb81d9142d33da2615 19-Jan-2010 Michael Lotz <mmlr@mlotz.ch>

The vnode->private_node holds our object, not vnode itself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35191 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 271b9ad49ac034af9e979d020a048476a9fecbd4 01-Sep-2009 Michael Lotz <mmlr@mlotz.ch>

Enable the IO hook for both attribute and write overlay. Attribute overlay isn't
concerned by it as it does not do file data, it simply passes the hook through.
In the write_overlay case we check for write operations and for modified nodes.
In both cases we return B_NOT_SUPPORTED which will cause a fallback to
synchronous IO. The main problem with the fallback is not that it is synchronous
but that the physical buffers of the request will be mapped and filled page
wise, which makes it slow for various reasons. In any case with this setup all
reads to write_overlay that can go through unmodified now do. This should speed
up CD boot as there is no physical to virtual translation overhead and no limit
to page wise reads. In the best case it should now read 256 blocks at the time
instead of always falling back to 2. My tests show no side effects on creating,
writing or partially modifying nodes so far.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32897 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 940e8add935c54af562b6a5474cfb33026a7bbef 28-May-2009 Michael Lotz <mmlr@mlotz.ch>

Apply r30895 and r30897 to the attribute_overlay as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30898 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2cdc24e4ad4d36d08c4d3ea54600823655aeab9c 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Fix two instances of handing wrong vnodes to the next layer in attribute_overlay.
The target vnode in link and the toDir vnode in rename were passed directly,
meaning that an attribute_overlay vnode was handed to the next layer causing
crashes when moving/renaming a file on ISO-only CDs for example. Fixes #3885.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2fc5fcd1ad3f16ca5277fd124e62886f5c7bfc1f 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Add missing put_vnode() in error case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30890 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4251f05625ca44b4575584208d95741d77128f2f 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

When writing an attribute store file the parent directory might have been
invalidated since the creation of the object. If this is the case we have to
look it up again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30889 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 063597660675ef225be219b1159e7f7b6c1f81f7 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Invalidate our cached inode numbers when removing the attribute file. Basically
we want to ensure that we re-enumerate our environment when eventually writing
a new one as it has most probably changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30888 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dfada888409f48cc036dacc0c1283cab3d7e1138 27-May-2009 Michael Lotz <mmlr@mlotz.ch>

Add functionality for removing a attribute file. In case a file is (re-)moved
we will later remove the attribute backing file using this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30887 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3cf43c26516b695e35b7433196a530f7541c4ca8 25-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Removed the fs_vnode_ops::create_dir() parameter for returning the ID of the
newly created dir. The VFS really doesn't need it and for some file systems
it might not be easy to get by. Several file systems (e.g. rootfs and fat)
were ignoring the parameter anyway.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29719 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c67a177a883e5a6ac87770aa8dd3f68253bbb72 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

No need to relay the attribute calls. Fixes attribute overlays when used with another layer.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29258 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4ef49450014054078584cd4d05f35316c3199efa 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Rename the trace output as well.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29256 a95241bf-73f2-0310-859d-f6bbb57e9c96


# af4245f8a34f087dda1bec13a54846116f1f8250 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Split overlay filesystem into attribute_overlay and write_overlay.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29255 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 77fdecfec83f0d2878594fbdde5510405033fff0 19-Feb-2009 Michael Lotz <mmlr@mlotz.ch>

Preparing to split the overlay filesystem into an attribute_overlay and write_overlay module.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29253 a95241bf-73f2-0310-859d-f6bbb57e9c96