summaryrefslogtreecommitdiffstats
path: root/fs/locks.c
diff options
context:
space:
mode:
authorBenjamin Coddington <bcodding@redhat.com>2015-10-22 13:38:13 -0400
committerJeff Layton <jeff.layton@primarydata.com>2015-10-22 14:57:20 -0400
commite55c34a66f87e78fb1fc6b623b78c5ad74b475af (patch)
treeaefee1b4c4e7a0fb2c6ba1db9fee681e52e08506 /fs/locks.c
parent6ca7d910121af4dd8c83294b50546f4664b2a932 (diff)
downloadlinux-e55c34a66f87e78fb1fc6b623b78c5ad74b475af.tar.gz
linux-e55c34a66f87e78fb1fc6b623b78c5ad74b475af.tar.bz2
linux-e55c34a66f87e78fb1fc6b623b78c5ad74b475af.zip
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. Signed-off-by: Benjamin Coddington <bcodding@redhat.com> Signed-off-by: Jeff Layton <jeff.layton@primarydata.com>
Diffstat (limited to 'fs/locks.c')
-rw-r--r--fs/locks.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/fs/locks.c b/fs/locks.c
index c74c9df419bc..c1745119fc5b 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1882,6 +1882,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.