diff options
| author | NeilBrown <neil@brown.name> | 2026-07-17 19:27:52 +1000 |
|---|---|---|
| committer | Chuck Lever <cel@kernel.org> | 2026-08-26 16:40:14 -0400 |
| commit | fa1ed1f333a80f69ecc9bfd78b1bc847a31b760c (patch) | |
| tree | 19549f133cb04e3d189e9332fe59c8e79195d8fd /scripts | |
| parent | 77f542cb3ca56ae8866fbeb607836815694c0fd4 (diff) | |
| download | linux-next-fa1ed1f333a80f69ecc9bfd78b1bc847a31b760c.tar.gz linux-next-fa1ed1f333a80f69ecc9bfd78b1bc847a31b760c.zip | |
nfsd: replace fh_fill_both_attrs() with fh_fill_post_noop()
fh_fill_both_attrs() is only needed for open/create and is used in the
case when the target already existed so no creating happens.
As part of refactoring this code it is changed to call
fh_fill_pre_attrs() once early on (so errors only need to be caught in
one place) and then to use a new fh_fill_post_noop() when it is
determined that no creation happened.
fh_fill_pre_attrs() now stores the attrs (which it had to get all of
anyway)_ in ->fh_post_attr. fh_fill_post_noop() simply marks them as
valid. fh_fill_post_attrs() replaces them.
This change involves moving fh_fill_pre_attrs() out of the inode_lock on
the directory. This means that we cannot provide "atomic" wcc data so a
new fh_fill_pre_attrs_unlocked() is provided which marks the attrs as
non-atomic.
This is unfortunate but inevitable if we are ever to allow concurrent
updates in a directory (which can significantly improve performance in
some cases). To get atomic pre/post attributes we will need to be able
to ask the fs to provide them, or to request a lease on the directory
for the duration of an operation.
Note that we haven't provided pre/post attrs on WRITE requests for a
long time for exactly this reason - we cannot lock the file to get them.
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: NeilBrown <neil@brown.name>
Link: https://patch.msgid.link/20260717093001.1972119-5-neilb@ownmail.net
Signed-off-by: Chuck Lever <cel@kernel.org>
Diffstat (limited to 'scripts')
0 files changed, 0 insertions, 0 deletions
