nfs_complete_rename() calls d_move() without i_mutex
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v4 Latest2 patches 0 repliesNew
- v32 patches 2 repliesSuperseded
- v22 patches 2 repliesSuperseded
Earlier versions · 1
| Version | Posted | Patches | Replies | Status |
|---|---|---|---|---|
| v1 | 2 patches | 7 replies | Superseded |
Patches in v4 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/2 | Revert "NFS: nfs_rename() handle -ERESTARTSYS dentry left behind"fs/ | +24 | 0 replies | |
| 2/2 | NFS: nfs_rename() - revalidate directories on -ERESTARTSYSfs/ fs/ include/ | +19 | 0 replies |
Reviews trailers per patch
All 2 patches have a Reviewed-by or Acked-by.
| Patch | Jeff Layton |
|---|---|
| 1/2 | R-b |
| 2/2 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [PATCH v4 0/2] nfs_complete_rename() calls d_move() without i_mutex
Once commit 920b4530fb80430ff30ef83efe21ba1fa5623731 "NFS: nfs_rename() handle -ERESTARTSYS dentry left behind" moved the local d_move() into the RPC asyncronous context, d_move() could be called without holding the directories' i_mutex.
Let's revert that commit, and a follow-up fix for it in 1/2, and then fix the original problem once more by forcing a revalidation of the old and new directories if we notice that the rename was interrupted in 2/2.
v2: Add memory barrier, hold directory i_locks while revalidating, specify
single-bit field width for cancelled flag.
v3: Add some comments, change cancelled flag to bool.
v4: Where old_dir == new_dir, don't bump revalidation counter twice.
Benjamin Coddington (2):
Revert "NFS: nfs_rename() handle -ERESTARTSYS dentry left behind"
NFS: nfs_rename() - revalidate directories on -ERESTARTSYS
fs/nfs/dir.c | 57 +++++++++++++++++++++++++------------------------ fs/nfs/unlink.c | 13 +++++++++++ include/linux/nfs_xdr.h | 1 + 3 files changed, 43 insertions(+), 28 deletions(-)
Signature · 1 line
2.9.3