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
])
])
-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
# 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 */
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)) {