From: Marc Eshel <eshel@xxxxxxxxxxxxxxx> - unquoted The nfsv4 protocol's lock operation, in the case of a conflict, returns information about the conflicting lock. It's unclear how clients can use this, so for now we're not going so far as to add a filesystem method that can return a conflicting lock, but we may as well return something in the local case when it's easy to. Signed-off-by: "J. Bruce Fields" <bfields@xxxxxxxxxxxxxx> --- fs/locks.c | 18 ++++++++++++++++++ include/linux/lockd/bind.h | 1 + 2 files changed, 19 insertions(+), 0 deletions(-) diff --git a/fs/locks.c b/fs/locks.c index c88139d..1bd6418 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -1706,6 +1706,24 @@ int vfs_lock_file(struct file *filp, unsigned int cmd, struct file_lock *fl) } EXPORT_SYMBOL(vfs_lock_file); +/** + * vfs_lock_file_conf - file byte range lock + * @filp: The file to apply the lock to + * @fl: The lock to be applied + * @conf: Place to return a copy of the conflicting lock, if found. + * + * read comments for vfs_lock_file() + */ +int vfs_lock_file_conf(struct file *filp, struct file_lock *fl, struct file_lock *conf) +{ + if (filp->f_op && filp->f_op->lock) { + __locks_copy_lock(conf, fl); + return filp->f_op->lock(filp, F_SETLK, fl); + } else + return posix_lock_file_conf(filp, fl, conf); +} +EXPORT_SYMBOL(vfs_lock_file_conf); + /* Apply the lock described by l to an open file descriptor. * This implements both the F_SETLK and F_SETLKW commands of fcntl(). */ diff --git a/include/linux/lockd/bind.h b/include/linux/lockd/bind.h index c88da8e..01c25e4 100644 --- a/include/linux/lockd/bind.h +++ b/include/linux/lockd/bind.h @@ -40,5 +40,6 @@ extern void lockd_down(void); extern int vfs_test_lock(struct file *, struct file_lock *, struct file_lock *); extern int vfs_lock_file(struct file *, int cmd, struct file_lock *); +extern int vfs_lock_file_conf(struct file *, struct file_lock *, struct file_lock *); #endif /* LINUX_LOCKD_BIND_H */ -- 1.5.0.rc1.g72fe - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html