#define spl_filp_write(fp, b, s, p) (fp)->f_op->write((fp), (b), (s), p)
#ifdef HAVE_3ARGS_FILE_FSYNC
-#define spl_filp_fsync(fp, sync) (fp)->f_op->fsync((fp), \
+#define spl_filp_fsync(fp, sync) (fp)->f_op->fsync((fp), \
(fp)->f_dentry, sync)
#else
#define spl_filp_fsync(fp, sync) (fp)->f_op->fsync((fp), sync)
#endif
+#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 */
+
#endif /* SPL_FILE_COMPAT_H */
if (nd.last_type != LAST_NORM)
SGOTO(exit1, rc);
-#ifdef HAVE_INODE_I_MUTEX
- mutex_lock_nested(&nd.nd_dentry->d_inode->i_mutex, I_MUTEX_PARENT);
-#else
- down(&nd.nd_dentry->d_inode->i_sem);
-#endif /* HAVE_INODE_I_MUTEX */
+ spl_inode_lock_nested(nd.nd_dentry->d_inode, I_MUTEX_PARENT);
dentry = vn_lookup_hash(&nd);
rc = PTR_ERR(dentry);
if (!IS_ERR(dentry)) {
exit2:
dput(dentry);
}
-#ifdef HAVE_INODE_I_MUTEX
- mutex_unlock(&nd.nd_dentry->d_inode->i_mutex);
-#else
- up(&nd.nd_dentry->d_inode->i_sem);
-#endif /* HAVE_INODE_I_MUTEX */
+
+ spl_inode_unlock(nd.nd_dentry->d_inode);
if (inode)
iput(inode); /* truncate the inode here */
exit1: