summary refs log tree commit diff
path: root/fs
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
parent6ca7d910121af4dd8c83294b50546f4664b2a932 (diff)
downloadlinux-e55c34a66f87e78fb1fc6b623b78c5ad74b475af.tar.gz
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')
-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.