Message ID | daf0d3941f34438c1fbdc94a5f3a47c2b22f3ee8.1445524157.git.bcodding@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
On Thu, 22 Oct 2015, Benjamin Coddington wrote: > 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. > > Signed-off-by: Benjamin Coddington <bcodding@redhat.com> > --- > fs/locks.c | 24 ++++++++++++++++++++++++ > include/linux/fs.h | 11 +++++++++++ > 2 files changed, 35 insertions(+), 0 deletions(-) > > diff --git a/fs/locks.c b/fs/locks.c > index 2a54c80..68b1784 100644 > --- a/fs/locks.c > +++ b/fs/locks.c > @@ -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. > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 72d8a84..2e283b7 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -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; > +} > + 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 > 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; > -- > 1.7.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/fs/locks.c b/fs/locks.c index 2a54c80..68b1784 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -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. diff --git a/include/linux/fs.h b/include/linux/fs.h index 72d8a84..2e283b7 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -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;
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. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> --- fs/locks.c | 24 ++++++++++++++++++++++++ include/linux/fs.h | 11 +++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)