Revert 2267b2e84593bd3d61a1188e68fba06307fa9dab
Subsystems (5)
[email protected]
maintainerPATCH 1/1 Revert 2267b2e84593bd3d61a1188e68fba06307fa9dab
From: Chuck Lever <[email protected]>
ltp test fcntl17 fails on v5.15.154. This was bisected to commit 2267b2e84593 ("lockd: introduce safe async lock op").
Reported-by Harshit Mogalapalli <[email protected]>
Signed-off-by Chuck Lever <[email protected]>
--- Documentation/filesystems/nfs/exporting.rst | 7 ------- fs/lockd/svclock.c | 4 +++- fs/nfsd/nfs4state.c | 10 +++------- include/linux/exportfs.h | 14 -------------- 4 files changed, 6 insertions(+), 29 deletions(-)
Documentation/filesystems/nfs/exporting.rst +0 -7
@@ -241,10 +241,3 @@ following flags are defined: all of an inode's dirty data on last close. Exports that behave this way should set EXPORT_OP_FLUSH_ON_CLOSE so that NFSD knows to skip waiting for writeback when closing such files. - - EXPORT_OP_ASYNC_LOCK - Indicates a capable filesystem to do async lock - requests from lockd. Only set EXPORT_OP_ASYNC_LOCK if the filesystem has - it's own ->lock() functionality as core posix_lock_file() implementation - has no async lock request handling yet. For more information about how to - indicate an async lock request from a ->lock() file_operations struct, see - fs/locks.c and comment for the function vfs_lock_file().
fs/lockd/svclock.c +3 -1
@@ -470,7 +470,9 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, struct nlm_host *host, struct nlm_lock *lock, int wait, struct nlm_cookie *cookie, int reclaim) { +#if IS_ENABLED(CONFIG_SUNRPC_DEBUG) struct inode *inode = nlmsvc_file_inode(file); +#endif struct nlm_block *block =NULL ;int error;int mode;
@@ -484,7 +486,7 @@ nlmsvc_lock(struct svc_rqst *rqstp, struct nlm_file *file, (long long )lock->fl.fl_end, wait); -if (!exportfs_lock_op_is_async (inode->i_sb->s_export_op)) { +if (nlmsvc_file_file (file)->f_op->lock) { async_block = wait; wait =0 ; }
fs/nfsd/nfs4state.c +3 -7
@@ -7420,7 +7420,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,struct nfsd4_blocked_lock *nbl =NULL ;struct file_lock *file_lock =NULL ;struct file_lock *conflock =NULL ; -struct super_block *sb;__be32 status =0 ;int lkflg;int err;
@@ -7442,7 +7441,6 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,dprintk ("NFSD: nfsd4_lock: permission denied!\n" );return status; } - sb = cstate->current_fh.fh_dentry->d_sb;if (lock->lk_is_new) {if (nfsd4_has_session (cstate))
@@ -7494,8 +7492,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, fp = lock_stp->st_stid.sc_file;switch (lock->lk_type) {case NFS4_READW_LT : -if (nfsd4_has_session (cstate) || -exportfs_lock_op_is_async (sb->s_export_op)) +if (nfsd4_has_session (cstate)) fl_flags |=FL_SLEEP ; fallthrough;case NFS4_READ_LT :
@@ -7507,8 +7504,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, fl_type =F_RDLCK ;break ;case NFS4_WRITEW_LT : -if (nfsd4_has_session (cstate) || -exportfs_lock_op_is_async (sb->s_export_op)) +if (nfsd4_has_session (cstate)) fl_flags |=FL_SLEEP ; fallthrough;case NFS4_WRITE_LT :
@@ -7536,7 +7532,7 @@ nfsd4_lock(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,* for file locks), so don't attempt blocking lock notifications * on those filesystems: */ -if (!exportfs_lock_op_is_async (sb->s_export_op)) +if (nf->nf_file->f_op->lock) fl_flags &= ~FL_SLEEP ; nbl =find_or_allocate_block (lock_sop, &fp->fi_fhandle, nn);
include/linux/exportfs.h +0 -14
@@ -222,23 +222,9 @@ struct export_operations {atomic attribute updates */ #define EXPORT_OP_FLUSH_ON_CLOSE (0x20)/* fs flushes file data on close */ -#define EXPORT_OP_ASYNC_LOCK (0x40)/* fs can do async lock request */ unsigned long flags; }; -/** -* exportfs_lock_op_is_async() - export op supports async lock operation -* @export_ops: the nfs export operations to check -* -* Returns true if the nfs export_operations structure has -* EXPORT_OP_ASYNC_LOCK in their flags set -*/ -static inline bool -exportfs_lock_op_is_async (const struct export_operations *export_ops) -{ -return export_ops->flags &EXPORT_OP_ASYNC_LOCK ; -} -extern int exportfs_encode_inode_fh (struct inode *inode,struct fid *fid,int *max_len,struct inode *parent); extern int exportfs_encode_fh(struct dentry *dentry, struct fid *fid,
Signature · 1 line
2.44.0
kernel test robot
build botFYI: kernel test robot notices the stable kernel rule is not satisfied.
Hi,
Thanks for your patch.
FYI: kernel test robot notices the stable kernel rule is not satisfied.
The check is based on https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html#option-1
Rule: add the tag "Cc: [email protected]" in the sign-off area to have the patch automatically included in the stable tree.
Subject: [PATCH] Revert 2267b2e84593bd3d61a1188e68fba06307fa9dab
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki