Re: [PATCH 0/3] Eliminate delegation self-conflicts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Aug 25, 2017, at 5:52 PM, J. Bruce Fields <bfields@xxxxxxxxxx> wrote:
> 
> From: "J. Bruce Fields" <bfields@xxxxxxxxxx>
> 
> This is my attempt to fix the NFS server so we don't unnecessarily
> recall delegations when the operation breaking the delegation comes from
> the same client that holds the delegation.
> 
> To do that we need some way to pass the identity of the breaker down
> through the VFS.
> 
> I didn't feel like adding another argument to all the VFS functions that
> this might need to be passed down through.  But all of those functions
> already take a struct inode **delegated inode, so instead I turned that
> into a single-member struct deleg_ctrl *, which I then added a second
> member to.
> 
> I dunno, welcome any more straightforward ways of doing this if anyone
> has suggestions.
> 
> My first attempt was to do this by instead checking for conflicts in the
> caller (nfsd) and then passing down one just one bit telling the lease
> code conflicts had already been checked so it didn't need to.  But
> that's much too early to check for conflicts, since the caller doesn't
> have the necessary inode locks yet.
> 
> I'm still missing testing.  Regression tests pass, but I haven't
> actually confirmed that the self-conflicts are gone!  Off to go hack on
> pynfs....

FWIW, I observe a lot of delegation recall activity when running
the git regression tests on an NFSv4.x mount. This is a single
client.

Unpack a recent release of the git tarball.

$ cd src/git
$ make clean
$ make
$ make test

Easily scriptable, and you can "cd t/" and run individual
regression tests if you like.


> --b.
> 
> J. Bruce Fields (3):
>  fs: cleanup to hide some details of delegation logic
>  fs: hide another detail of delegation logic
>  nfsd: clients don't need to break their own delegations
> 
> Documentation/filesystems/Locking |  2 ++
> fs/attr.c                         | 10 +++---
> fs/locks.c                        |  7 +++-
> fs/namei.c                        | 70 ++++++++++++++++++---------------------
> fs/nfsd/nfs4state.c               | 40 ++++++++++++++++++++++
> fs/nfsd/vfs.c                     | 26 ++++++++++++---
> fs/open.c                         | 24 ++++++--------
> fs/utimes.c                       | 12 +++----
> include/linux/fs.h                | 61 +++++++++++++++++++++-------------
> 9 files changed, 159 insertions(+), 93 deletions(-)
> 
> -- 
> 2.13.5
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever






[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux