summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2014-10-01 17:07:46 -0400
committerBrian Behlendorf <[email protected]>2014-10-17 15:11:51 -0700
commit2bc5666f53685c6631f9a5d1d8beebdf1325f8e0 (patch)
treee0e7ba30123dad6b67a5280343db8211e63884d8
parent9f36cace4154f7dd855c42aae2eb13a6e1d79362 (diff)
Remove i_mutex() configure check
The inode structure has used i_mutex as its internal locking primitive since 2.6.16. The compatibility code to check for the previous semaphore primitive has been removed. However, the wrapper function itself is being kept because it's entirely possible this primitive will change again to allow finer grained locking. Signed-off-by: Brian Behlendorf <[email protected]>
-rw-r--r--config/spl-build.m421
-rw-r--r--include/linux/file_compat.h11
-rw-r--r--module/spl/spl-vnode.c2
3 files changed, 3 insertions, 31 deletions
diff --git a/config/spl-build.m4 b/config/spl-build.m4
index b1e8d930e..b7ce61fc8 100644
--- a/config/spl-build.m4
+++ b/config/spl-build.m4
@@ -27,7 +27,6 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
SPL_AC_CTL_NAME
SPL_AC_VMALLOC_INFO
SPL_AC_PDE_DATA
- SPL_AC_INODE_I_MUTEX
SPL_AC_MUTEX_OWNER
SPL_AC_MUTEX_OWNER_TASK_STRUCT
SPL_AC_MUTEX_LOCK_NESTED
@@ -927,26 +926,6 @@ AC_DEFUN([SPL_AC_CTL_NAME], [
])
dnl #
-dnl # 2.6.16 API change,
-dnl # check whether 'struct inode' has i_mutex
-dnl #
-AC_DEFUN([SPL_AC_INODE_I_MUTEX], [
- AC_MSG_CHECKING([whether struct inode has i_mutex])
- SPL_LINUX_TRY_COMPILE([
- #include <linux/fs.h>
- #include <linux/mutex.h>
- ],[
- struct inode i;
- mutex_init(&i.i_mutex);
- ],[
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_INODE_I_MUTEX, 1, [struct inode has i_mutex])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
-
-dnl #
dnl # 2.6.29 API change,
dnl # Adaptive mutexs were introduced which track the mutex owner. The
dnl # mutex wrappers leverage this functionality to avoid tracking the
diff --git a/include/linux/file_compat.h b/include/linux/file_compat.h
index 949d844e7..09d0e8250 100644
--- a/include/linux/file_compat.h
+++ b/include/linux/file_compat.h
@@ -81,15 +81,8 @@ spl_filp_fallocate(struct file *fp, int mode, loff_t offset, loff_t len)
# define spl_filp_fsync(fp, sync) file_fsync(fp, (fp)->f_dentry, sync)
#endif /* HAVE_VFS_FSYNC */
-#ifdef HAVE_INODE_I_MUTEX
-#define spl_inode_lock(ip) (mutex_lock(&(ip)->i_mutex))
-#define spl_inode_lock_nested(ip, type) (mutex_lock_nested((&(ip)->i_mutex), \
- (type)))
-#define spl_inode_unlock(ip) (mutex_unlock(&(ip)->i_mutex))
-#else
-#define spl_inode_lock(ip) (down(&(ip)->i_sem))
-#define spl_inode_unlock(ip) (up(&(ip)->i_sem))
-#endif /* HAVE_INODE_I_MUTEX */
+#define spl_inode_lock(ip) mutex_lock(&(ip)->i_mutex)
+#define spl_inode_unlock(ip) mutex_unlock(&(ip)->i_mutex)
#endif /* SPL_FILE_COMPAT_H */
diff --git a/module/spl/spl-vnode.c b/module/spl/spl-vnode.c
index e4eac22eb..a8c5f974d 100644
--- a/module/spl/spl-vnode.c
+++ b/module/spl/spl-vnode.c
@@ -381,7 +381,7 @@ spl_kern_path_locked(const char *name, struct path *path)
if (rc)
return (ERR_PTR(rc));
- spl_inode_lock_nested(parent.dentry->d_inode, I_MUTEX_PARENT);
+ spl_inode_lock(parent.dentry->d_inode);
dentry = lookup_one_len(basename, parent.dentry, len);
if (IS_ERR(dentry)) {