Skip to content

locking fixups for NFS

Benjamin Coddington linux-nfs 4 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest10 patches 11 repliesIn review
  2. v310 patches 10 repliesSuperseded
  3. v210 patches 7 repliesSuperseded
Earlier versions · 1
VersionPostedPatchesRepliesStatus
v110 patches9 repliesSuperseded

Changes in v4 from the cover letter

- combine tests for fl_type into single switch on 02/10

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/10NFS4: remove a redundant lock range checkfs/nfs/nfs4proc.c+0 -31 reply
2/10NFS: Move the flock open mode check into nfs_flock()fs/nfs/file.c fs/nfs/nfs4proc.c+17 -161 reply
3/10NFS: Pass nfs_open_context instead of file to the lock procsfs/nfs/file.c fs/nfs/nfs3proc.c fs/nfs/nfs4proc.c +2 more+12 -111 reply
4/10NFSv4: Pass nfs_open_context instead of nfs4_state to nfs4_proc_unlck()fs/nfs/nfs4proc.c+5 -31 reply
5/10lockd: Plumb nfs_open_context into nlm client unlockfs/lockd/clntproc.c fs/nfs/nfs3proc.c fs/nfs/proc.c +1 more+14 -131 reply
6/10lockd: Send the inode to nlmclnt_setlockargs()fs/lockd/clntproc.c+6 -51 reply
7/10lockd: do_vfs_lock() only needs the inodefs/lockd/clntproc.c+7 -61 reply
8/10locks: Set FL_CLOSE when removing flock locks on close()fs/locks.c+1 -11 reply
9/10NFS: Deferred unlocks - always unlock on FL_CLOSEfs/nfs/file.c fs/nfs/inode.c fs/nfs/pagelist.c +1 more+52 -72 replies
10/10NFS: cleanup do_vfs_lock()fs/lockd/clntproc.c fs/nfs/file.c fs/nfs/nfs4proc.c+13 -261 reply

Reviews trailers per patch

9 of 10 patches have a Reviewed-by or Acked-by.

PatchJeff LaytonChristoph Hellwig
1/10R-b R-b
2/10R-b
3/10R-b R-b
4/10R-b R-b
5/10R-b
6/10R-b
7/10R-b
8/10R-b
9/10
10/10R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v4 thread

Cover letter [PATCH v4 00/10] locking fixups for NFS

This set addresses a few NFS related locking issues as well as a couple minor cleanups. It does a bit of plumbing to make sure we can complete unlocks after close when the fl_file may be unavailable, and it attempts to always release locks even when a wait for oustanding IO is interrupted before sending an unlock. This can orphan a lock on a server, which might mean a delay for matching lock NFS4, or require a server restart to clean up that lock for NFS3.

Change for v4:
- combine tests for fl_type into single switch on 02/10

Change for v3:
- update a comment on open mode checking for flock() locks

Changes for v2:
- the change to move do_vfs_lock() to a shared inline has been removed
- added patch to set FL_CLOSE for flock unlock on close (08/10)
- instead of keeping a copied list of deferred file_locks to unlock, just send an unlock for the entire file if FL_CLOSE is set.

Benjamin Coddington (10):
NFS4: remove a redundant lock range check
NFS: Move the flock open mode check into nfs_flock()
NFS: Pass nfs_open_context instead of file to the lock procs
NFSv4: Pass nfs_open_context instead of nfs4_state to

    nfs4_proc_unlck()

lockd: Plumb nfs_open_context into nlm client unlock
lockd: Send the inode to nlmclnt_setlockargs()
lockd: do_vfs_lock() only needs the inode
locks: Set FL_CLOSE when removing flock locks on close()
NFS: Deferred unlocks - always unlock on FL_CLOSE
NFS: cleanup do_vfs_lock()

 fs/lockd/clntproc.c        |   41 ++++++++++++++++---------------
 fs/locks.c                 |    2 +-
 fs/nfs/file.c              |   58 ++++++++++++++++++++++++++++++++-----------
 fs/nfs/inode.c             |   22 ++++++++++++++++
 fs/nfs/nfs3proc.c          |    6 +---
 fs/nfs/nfs4proc.c          |   45 ++++++++++------------------------
 fs/nfs/pagelist.c          |    8 ++++-
 fs/nfs/proc.c              |    6 +---
 include/linux/lockd/bind.h |    3 +-
 include/linux/nfs_fs.h     |    3 ++
 include/linux/nfs_xdr.h    |    2 +-
 11 files changed, 116 insertions(+), 80 deletions(-)