From 2bc5666f53685c6631f9a5d1d8beebdf1325f8e0 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 1 Oct 2014 17:07:46 -0400 Subject: [PATCH] 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 --- config/spl-build.m4 | 21 --------------------- include/linux/file_compat.h | 11 ++--------- module/spl/spl-vnode.c | 2 +- 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 @@ -926,26 +925,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 - #include - ],[ - 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 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)) {