Minor cleanup for locks API
Subsystems (13)
cover Minor cleanup for locks API
NFS has recently been moving things around to cope with the situation where a struct file may not be available during an unlock. That work has presented an opportunity to do a minor cleanup on the locks API.
Users of posix_lock_file_wait() (for FL_POSIX style locks) and flock_lock_file_wait() (for FL_FLOCK style locks) can instead call locks_lock_file_wait() for both lock types. Because the passed-in file_lock specifies its own type, the correct function can be selected on behalf of the user.
This work allows further cleanup within NFS and lockd which will be submitted separately.
Benjamin Coddington (3):
locks: introduce locks_lock_inode_wait()
Move locks API users to locks_lock_inode_wait()
locks: cleanup posix_lock_inode_wait and flock_lock_inode_wait
drivers/staging/lustre/lustre/llite/file.c | 8 +----- fs/9p/vfs_file.c | 4 +- fs/ceph/locks.c | 4 +- fs/cifs/file.c | 2 +- fs/dlm/plock.c | 4 +- fs/fuse/file.c | 2 +- fs/gfs2/file.c | 8 +++--- fs/lockd/clntproc.c | 13 +---------- fs/locks.c | 31 +++++++++++++++++++++++---- fs/nfs/file.c | 13 +---------- fs/nfs/nfs4proc.c | 13 +---------- fs/ocfs2/locks.c | 8 +++--- include/linux/fs.h | 21 +++--------------- 13 files changed, 51 insertions(+), 80 deletions(-)
PATCH 1/3 locks: introduce locks_lock_inode_wait()
Users of the locks API commonly call either posix_lock_file_wait() or flock_lock_file_wait() depending upon the lock type. Add a new function locks_lock_inode_wait() which will check and call the correct function for the type of lock passed in.
--- fs/locks.c | 24 ++++++++++++++++++++++++ include/linux/fs.h | 11 +++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)
fs/locks.c +24 -0
@@ -1876,6 +1876,30 @@ int flock_lock_inode_wait(struct inode *inode, struct file_lock *fl)EXPORT_SYMBOL (flock_lock_inode_wait);/** +* locks_lock_inode_wait - Apply a lock to an inode +* @inode: inode of the file to apply to +* @fl: The lock to be applied +* +* Apply a POSIX or FLOCK style lock request to an inode. +*/ +int locks_lock_inode_wait (struct inode *inode,struct file_lock *fl) +{ +int res =0 ; +switch (fl->fl_flags & (FL_POSIX |FL_FLOCK )) { +case FL_POSIX : + res =posix_lock_inode_wait (inode, fl); +break ; +case FL_FLOCK : + res =flock_lock_inode_wait (inode, fl); +break ; +default : +BUG (); + } +return res; +} +EXPORT_SYMBOL (locks_lock_inode_wait); + +/** * sys_flock: - flock() system call. * @fd: the file descriptor to lock. * @cmd: the type of lock to apply.
include/linux/fs.h +11 -0
@@ -1059,6 +1059,7 @@ extern int vfs_test_lock(struct file *, struct file_lock *);extern int vfs_lock_file (struct file *,unsigned int ,struct file_lock *,struct file_lock *);extern int vfs_cancel_lock (struct file *filp,struct file_lock *fl);extern int flock_lock_inode_wait (struct inode *inode,struct file_lock *fl); +extern int locks_lock_inode_wait (struct inode *inode,struct file_lock *fl);extern int __break_lease (struct inode *inode,unsigned int flags,unsigned int type);extern void lease_get_mtime (struct inode *,struct timespec *time);extern int generic_setlease (struct file *,long ,struct file_lock **,void **priv);
@@ -1177,6 +1178,11 @@ static inline int flock_lock_inode_wait(struct inode *inode,return -ENOLCK ; } +static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) +{ +return -ENOLCK ; +} +static inline int __break_lease (struct inode *inode,unsigned int mode,unsigned int type) {return 0 ;
@@ -1225,6 +1231,11 @@ static inline int flock_lock_file_wait(struct file *filp, struct file_lock *fl)return flock_lock_inode_wait (file_inode (filp), fl); } +static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) +{ +return locks_lock_inode_wait (file_inode (filp), fl); +} +struct fasync_struct {spinlock_t fa_lock;int magic;
Signature · 1 line
1.7.1
kbuild test robot
build botRe: [PATCH 1/3] locks: introduce locks_lock_inode_wait()
reproduce:
Hi Benjamin,
[auto build test ERROR on jlayton/linux-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]
url: https://github.com/0day-ci/linux/commits/Benjamin-Coddington/locks-introduce-locks_lock_inode_wait/20151022-233848 config: x86_64-allnoconfig (attached as .config) reproduce: # save the attached .config to linux build tree make ARCH=x86_64
All errors (new ones prefixed by >>):
In file included from include/linux/cgroup.h:17:0,
from include/linux/memcontrol.h:22,
from include/linux/swap.h:8,
from include/linux/suspend.h:4,
from arch/x86/kernel/asm-offsets.c:12:
>> include/linux/fs.h:1234:19: error: redefinition of 'locks_lock_file_wait'
static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
^
include/linux/fs.h:1181:19: note: previous definition of 'locks_lock_file_wait' was here
static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
^
include/linux/fs.h: In function 'locks_lock_file_wait':
>> include/linux/fs.h:1236:9: error: implicit declaration of function 'locks_lock_inode_wait' [-Werror=implicit-function-declaration]
return locks_lock_inode_wait(file_inode(filp), fl);
^ cc1: some warnings being treated as errors make[2]: *** [arch/x86/kernel/asm-offsets.s] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [prepare0] Error 2
make[1]: Target 'prepare' not remade because of errors.
make: *** [sub-make] Error 2
vim +/locks_lock_file_wait +1234 include/linux/fs.h
1228
1229 static inline int flock_lock_file_wait(struct file *filp, struct file_lock *fl)
1230 {
1231 return flock_lock_inode_wait(file_inode(filp), fl);
1232 }
1233
> 1234 static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
1235 {
> 1236 return locks_lock_inode_wait(file_inode(filp), fl); 1237 }
1238
1239 struct fasync_struct {
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH 1/3] locks: introduce locks_lock_inode_wait()
In reply to Benjamin CoddingtonQuoted 59 lines · Benjamin Coddington
Users of the locks API commonly call either
posix_lock_file_wait()orflock_lock_file_wait()depending upon the lock type. Add a new functionlocks_lock_inode_wait()which will check and call the correct function for the type of lock passed in.Signed-off-by Benjamin Coddington <[email protected]>--- fs/locks.c | 24 ++++++++++++++++++++++++ include/linux/fs.h | 11 +++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)fs/locks.c +24
-0@@ -1876,6 +1876,30 @@ int flock_lock_inode_wait(struct inode *inode, struct file_lock *fl)EXPORT_SYMBOL (flock_lock_inode_wait);/** +* locks_lock_inode_wait - Apply a lock to an inode +* @inode: inode of the file to apply to +* @fl: The lock to be applied +* +* Apply a POSIX or FLOCK style lock request to an inode. +*/ +int locks_lock_inode_wait (struct inode *inode,struct file_lock *fl) +{ +int res =0 ; +switch (fl->fl_flags & (FL_POSIX |FL_FLOCK )) { +case FL_POSIX : + res =posix_lock_inode_wait (inode, fl); +break ; +case FL_FLOCK : + res =flock_lock_inode_wait (inode, fl); +break ; +default : +BUG (); + } +return res; +} +EXPORT_SYMBOL (locks_lock_inode_wait); + +/** * sys_flock: - flock() system call. * @fd: the file descriptor to lock. * @cmd: the type of lock to apply. include/linux/fs.h +1
-0@@ -1059,6 +1059,7 @@ extern int vfs_test_lock(struct file *, struct file_lock *);extern int vfs_lock_file (struct file *,unsigned int ,struct file_lock *,struct file_lock *);extern int vfs_cancel_lock (struct file *filp,struct file_lock *fl);extern int flock_lock_inode_wait (struct inode *inode,struct file_lock *fl); +extern int locks_lock_inode_wait (struct inode *inode,struct file_lock *fl);extern int __break_lease (struct inode *inode,unsigned int flags,unsigned int type);extern void lease_get_mtime (struct inode *,struct timespec *time);extern int generic_setlease (struct file *,long ,struct file_lock **,void **priv);
include/linux/fs.h static inline int flock_lock_inode_wait(struct inode *inode, · line 1185
Quoted 8 lines
include/linux/fs.h +5
-0@@ -1177,6 +1178,11 @@ static inline int flock_lock_inode_wait(struct inode *inode,return -ENOLCK ; } +static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) +{ +return -ENOLCK ; +} +
So, this is obviously wrong - thank you 0-day robot. Yes, I did build and test against these patches, but went back and added this after I realized it should work w/o CONFIG_FILE_LOCKING. I'll re-send.
Ben
Quoted 23 lines
include/linux/fs.h +5
-1static inline int __break_lease (struct inode *inode,unsigned int mode,unsigned int type) {return 0 ;@@ -1225,6 +1231,11 @@ static inline int flock_lock_file_wait(struct file *filp, struct file_lock *fl)return flock_lock_inode_wait (file_inode (filp), fl); } +static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) +{ +return locks_lock_inode_wait (file_inode (filp), fl); +} +struct fasync_struct {spinlock_t fa_lock;int magic; --1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/3 Move locks API users to locks_lock_inode_wait()
In reply to Benjamin CoddingtonInstead of having users check for FL_POSIX or FL_FLOCK to call the correct locks API function, use the check within locks_lock_inode_wait(). This allows for some later cleanup.
--- drivers/staging/lustre/lustre/llite/file.c | 8 ++------ fs/9p/vfs_file.c | 4 ++-- fs/ceph/locks.c | 4 ++-- fs/cifs/file.c | 2 +- fs/dlm/plock.c | 4 ++-- fs/fuse/file.c | 2 +- fs/gfs2/file.c | 8 ++++---- fs/lockd/clntproc.c | 13 +------------ fs/locks.c | 2 +- fs/nfs/file.c | 13 +------------ fs/nfs/nfs4proc.c | 13 +------------ fs/ocfs2/locks.c | 8 ++++---- 12 files changed, 22 insertions(+), 59 deletions(-)
drivers/staging/lustre/lustre/llite/file.c +2 -6
@@ -2763,13 +2763,9 @@ ll_file_flock(struct file *file, int cmd, struct file_lock *file_lock) rc =md_enqueue (sbi->ll_md_exp, &einfo,NULL , op_data, &lockh, &flock,0 ,NULL /* req */ , flags); -if ((file_lock->fl_flags &FL_FLOCK ) && - (rc ==0 || file_lock->fl_type ==F_UNLCK )) - rc2 =flock_lock_file_wait (file, file_lock); -if ((file_lock->fl_flags &FL_POSIX ) && - (rc ==0 || file_lock->fl_type ==F_UNLCK ) && +if ((rc ==0 || file_lock->fl_type ==F_UNLCK ) && !(flags &LDLM_FL_TEST_LOCK )) - rc2 =posix_lock_file_wait (file, file_lock); + rc2 =locks_lock_file_wait (file, file_lock);if (rc2 && file_lock->fl_type !=F_UNLCK ) { einfo.ei_mode =LCK_NL ;
fs/9p/vfs_file.c +2 -2
@@ -161,7 +161,7 @@ static int v9fs_file_do_lock(struct file *filp, int cmd, struct file_lock *fl)if ((fl->fl_flags &FL_POSIX ) !=FL_POSIX )BUG (); - res =posix_lock_file_wait (filp, fl); + res =locks_lock_file_wait (filp, fl);if (res <0 ) goto out;
@@ -231,7 +231,7 @@ out_unlock:if (res <0 && fl->fl_type !=F_UNLCK ) { fl_type = fl->fl_type; fl->fl_type =F_UNLCK ; - res =posix_lock_file_wait (filp, fl); + res =locks_lock_file_wait (filp, fl); fl->fl_type = fl_type; } out:
fs/ceph/locks.c +2 -2
@@ -228,12 +228,12 @@ int ceph_flock(struct file *file, int cmd, struct file_lock *fl) err =ceph_lock_message (CEPH_LOCK_FLOCK ,CEPH_MDS_OP_SETFILELOCK , file, lock_cmd, wait, fl);if (!err) { - err =flock_lock_file_wait (file, fl); + err =locks_lock_file_wait (file, fl);if (err) {ceph_lock_message (CEPH_LOCK_FLOCK ,CEPH_MDS_OP_SETFILELOCK , file,CEPH_LOCK_UNLOCK ,0 , fl); -dout ("got %d on flock_lock_file_wait, undid lock" , err); +dout ("got %d on locks_lock_file_wait, undid lock" , err); } }return err;
fs/cifs/file.c +1 -1
@@ -1553,7 +1553,7 @@ cifs_setlk(struct file *file, struct file_lock *flock, __u32 type, out:if (flock->fl_flags &FL_POSIX && !rc) - rc =posix_lock_file_wait (file, flock); + rc =locks_lock_file_wait (file, flock);return rc; }
fs/dlm/plock.c +2 -2
@@ -172,7 +172,7 @@ int dlm_posix_lock(dlm_lockspace_t *lockspace, u64 number, struct file *file, rv = op->info.rv;if (!rv) { -if (posix_lock_file_wait (file, fl) <0 ) +if (locks_lock_file_wait (file, fl) <0 )log_error (ls,"dlm_posix_lock: vfs lock error %llx" , (unsigned long long )number); }
@@ -262,7 +262,7 @@ int dlm_posix_unlock(dlm_lockspace_t *lockspace, u64 number, struct file *file,/* cause the vfs unlock to return ENOENT if lock is not found */ fl->fl_flags |=FL_EXISTS ; - rv =posix_lock_file_wait (file, fl); + rv =locks_lock_file_wait (file, fl);if (rv == -ENOENT ) { rv =0 ; goto out_free;
fs/fuse/file.c +1 -1
@@ -2189,7 +2189,7 @@ static int fuse_file_flock(struct file *file, int cmd, struct file_lock *fl)int err;if (fc->no_flock) { - err =flock_lock_file_wait (file, fl); + err =locks_lock_file_wait (file, fl); }else {struct fuse_file *ff = file->private_data;
fs/gfs2/file.c +4 -4
@@ -1000,7 +1000,7 @@ static int gfs2_lock(struct file *file, int cmd, struct file_lock *fl) }if (unlikely (test_bit (SDF_SHUTDOWN , &sdp->sd_flags))) {if (fl->fl_type ==F_UNLCK ) -posix_lock_file_wait (file, fl); +locks_lock_file_wait (file, fl);return -EIO ; }if (IS_GETLK (cmd))
@@ -1031,7 +1031,7 @@ static int do_flock(struct file *file, int cmd, struct file_lock *fl)if (gl) {if (fl_gh->gh_state == state) goto out; -flock_lock_file_wait (file, +locks_lock_file_wait (file, &(struct file_lock ){.fl_type =F_UNLCK });gfs2_glock_dq (fl_gh);gfs2_holder_reinit (state, flags, fl_gh);
@@ -1056,7 +1056,7 @@ static int do_flock(struct file *file, int cmd, struct file_lock *fl)if (error ==GLR_TRYFAILED ) error = -EAGAIN ; }else { - error =flock_lock_file_wait (file, fl); + error =locks_lock_file_wait (file, fl);gfs2_assert_warn (GFS2_SB (&ip->i_inode), !error); }
@@ -1071,7 +1071,7 @@ static void do_unflock(struct file *file, struct file_lock *fl)struct gfs2_holder *fl_gh = &fp->f_fl_gh;mutex_lock (&fp->f_fl_mutex); -flock_lock_file_wait (file, fl); +locks_lock_file_wait (file, fl);if (fl_gh->gh_gl) {gfs2_glock_dq (fl_gh);gfs2_holder_uninit (fl_gh);
fs/lockd/clntproc.c +1 -12
@@ -474,18 +474,7 @@ static void nlmclnt_locks_init_private(struct file_lock *fl, struct nlm_host *hostatic int do_vfs_lock (struct file_lock *fl) { -int res =0 ; -switch (fl->fl_flags & (FL_POSIX |FL_FLOCK )) { -case FL_POSIX : - res =posix_lock_file_wait (fl->fl_file, fl); -break ; -case FL_FLOCK : - res =flock_lock_file_wait (fl->fl_file, fl); -break ; -default : -BUG (); - } -return res; +return locks_lock_file_wait (fl->fl_file, fl); }/*
fs/locks.c +1 -1
@@ -1955,7 +1955,7 @@ SYSCALL_DEFINE2(flock, unsigned int, fd, unsigned int, cmd) (can_sleep) ?F_SETLKW :F_SETLK , lock); else - error =flock_lock_file_wait (f.file, lock); + error =locks_lock_file_wait (f.file, lock); out_free:locks_free_lock (lock);
fs/nfs/file.c +1 -12
@@ -738,18 +738,7 @@ out_noconflict:static int do_vfs_lock (struct file *file,struct file_lock *fl) { -int res =0 ; -switch (fl->fl_flags & (FL_POSIX |FL_FLOCK )) { -case FL_POSIX : - res =posix_lock_file_wait (file, fl); -break ; -case FL_FLOCK : - res =flock_lock_file_wait (file, fl); -break ; -default : -BUG (); - } -return res; +return locks_lock_file_wait (file, fl); } static int
fs/nfs/nfs4proc.c +1 -12
@@ -5513,18 +5513,7 @@ static int nfs4_proc_getlk(struct nfs4_state *state, int cmd, struct file_lock *static int do_vfs_lock (struct inode *inode,struct file_lock *fl) { -int res =0 ; -switch (fl->fl_flags & (FL_POSIX |FL_FLOCK )) { -case FL_POSIX : - res =posix_lock_inode_wait (inode, fl); -break ; -case FL_FLOCK : - res =flock_lock_inode_wait (inode, fl); -break ; -default : -BUG (); - } -return res; +return locks_lock_inode_wait (inode, fl); }struct nfs4_unlockdata {
fs/ocfs2/locks.c +4 -4
@@ -66,7 +66,7 @@ static int ocfs2_do_flock(struct file *file, struct inode *inode,* level. */ -flock_lock_file_wait (file, +locks_lock_file_wait (file, &(struct file_lock ){.fl_type =F_UNLCK });ocfs2_file_unlock (file);
@@ -81,7 +81,7 @@ static int ocfs2_do_flock(struct file *file, struct inode *inode, goto out; } - ret =flock_lock_file_wait (file, fl); + ret =locks_lock_file_wait (file, fl);if (ret)ocfs2_file_unlock (file);
@@ -98,7 +98,7 @@ static int ocfs2_do_funlock(struct file *file, int cmd, struct file_lock *fl)mutex_lock (&fp->fp_mutex);ocfs2_file_unlock (file); - ret =flock_lock_file_wait (file, fl); + ret =locks_lock_file_wait (file, fl);mutex_unlock (&fp->fp_mutex);return ret;
@@ -119,7 +119,7 @@ int ocfs2_flock(struct file *file, int cmd, struct file_lock *fl)if ((osb->s_mount_opt &OCFS2_MOUNT_LOCALFLOCKS ) ||ocfs2_mount_local (osb)) -return flock_lock_file_wait (file, fl); +return locks_lock_file_wait (file, fl);if (fl->fl_type ==F_UNLCK )return ocfs2_do_funlock (file, cmd, fl);
Signature · 1 line
1.7.1
PATCH 3/3 locks: cleanup posix_lock_inode_wait and flock_lock_inode_wait
In reply to Benjamin CoddingtonAll callers use locks_lock_inode_wait() instead.
--- fs/locks.c | 5 +---- include/linux/fs.h | 24 ------------------------ 2 files changed, 1 insertions(+), 28 deletions(-)
fs/locks.c +1 -4
@@ -1167,8 +1167,7 @@ EXPORT_SYMBOL(posix_lock_file);* @inode: inode of file to which lock request should be applied * @fl: The lock to be applied * -* Variant of posix_lock_file_wait that does not take a filp, and so can be -* used after the filp has already been torn down. +* Apply a POSIX style lock request to an inode. */ int posix_lock_inode_wait (struct inode *inode,struct file_lock *fl) {
@@ -1187,7 +1186,6 @@ int posix_lock_inode_wait(struct inode *inode, struct file_lock *fl) }return error; } -EXPORT_SYMBOL (posix_lock_inode_wait);/** * locks_mandatory_locked - Check for an active lock
@@ -1873,7 +1871,6 @@ int flock_lock_inode_wait(struct inode *inode, struct file_lock *fl) }return error; } -EXPORT_SYMBOL (flock_lock_inode_wait);/** * locks_lock_inode_wait - Apply a lock to an inode
include/linux/fs.h +0 -24
@@ -1053,12 +1053,10 @@ extern void locks_remove_file(struct file *);extern void locks_release_private (struct file_lock *);extern void posix_test_lock (struct file *,struct file_lock *);extern int posix_lock_file (struct file *,struct file_lock *,struct file_lock *); -extern int posix_lock_inode_wait (struct inode *,struct file_lock *);extern int posix_unblock_lock (struct file_lock *);extern int vfs_test_lock (struct file *,struct file_lock *);extern int vfs_lock_file (struct file *,unsigned int ,struct file_lock *,struct file_lock *);extern int vfs_cancel_lock (struct file *filp,struct file_lock *fl); -extern int flock_lock_inode_wait (struct inode *inode,struct file_lock *fl);extern int locks_lock_inode_wait (struct inode *inode,struct file_lock *fl);extern int __break_lease (struct inode *inode,unsigned int flags,unsigned int type);extern void lease_get_mtime (struct inode *,struct timespec *time);
@@ -1145,12 +1143,6 @@ static inline int posix_lock_file(struct file *filp, struct file_lock *fl,return -ENOLCK ; } -static inline int posix_lock_inode_wait (struct inode *inode, -struct file_lock *fl) -{ -return -ENOLCK ; -} -static inline int posix_unblock_lock (struct file_lock *waiter) {return -ENOENT ;
@@ -1172,12 +1164,6 @@ static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)return 0 ; } -static inline int flock_lock_inode_wait (struct inode *inode, -struct file_lock *request) -{ -return -ENOLCK ; -} -static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) {return -ENOLCK ;
@@ -1221,16 +1207,6 @@ static inline struct inode *file_inode(const struct file *f)return f->f_inode; } -static inline int posix_lock_file_wait (struct file *filp,struct file_lock *fl) -{ -return posix_lock_inode_wait (file_inode (filp), fl); -} - -static inline int flock_lock_file_wait (struct file *filp,struct file_lock *fl) -{ -return flock_lock_inode_wait (file_inode (filp), fl); -} -static inline int locks_lock_file_wait (struct file *filp,struct file_lock *fl) {return locks_lock_inode_wait (file_inode (filp), fl);
Signature · 1 line
1.7.1
kbuild test robot
build bot[RFC PATCH] locks: posix_lock_inode_wait() can be static
Signed-off-by: Fengguang Wu <[email protected]>
--- locks.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
fs/locks.c +2 -2
@@ -1173,7 +1173,7 @@ EXPORT_SYMBOL(posix_lock_file);* * Apply a POSIX style lock request to an inode. */ -int posix_lock_inode_wait (struct inode *inode,struct file_lock *fl) +static int posix_lock_inode_wait (struct inode *inode,struct file_lock *fl) {int error;might_sleep ();
@@ -1860,7 +1860,7 @@ int fcntl_setlease(unsigned int fd, struct file *filp, long arg)* * Apply a FLOCK style lock request to an inode. */ -int flock_lock_inode_wait (struct inode *inode,struct file_lock *fl) +static int flock_lock_inode_wait (struct inode *inode,struct file_lock *fl) {int error;might_sleep ();
kbuild test robot
build botRe: [PATCH 3/3] locks: cleanup posix_lock_inode_wait and flock_lock_inode_wait
In reply to Benjamin Coddingtonurl: https://github.com/0day-ci/linux/commits/Benjamin-Coddington/locks-introduce-locks_lock_inode_wait/20151022-233848 reproduce:
Hi Benjamin,
[auto build test WARNING on jlayton/linux-next -- if it's inappropriate base, please suggest rules for selecting the more suitable base]
url: https://github.com/0day-ci/linux/commits/Benjamin-Coddington/locks-introduce-locks_lock_inode_wait/20151022-233848
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__sparse warnings: (new ones prefixed by >>)
>> fs/locks.c:1176:5: sparse: symbol 'posix_lock_inode_wait' was not declared. Should it be static? >> fs/locks.c:1863:5: sparse: symbol 'flock_lock_inode_wait' was not declared. Should it be static?
Please review and possibly fold the followup patch.
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation