]> granicus.if.org Git - spl/commitdiff
Linux Compat: inode->i_mutex/i_sem
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 10 Jan 2011 20:35:22 +0000 (12:35 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 11 Jan 2011 20:14:48 +0000 (12:14 -0800)
Create spl_inode_lock/spl_inode_unlock compability macros to simply
access to the inode mutex/sem.  This avoids the need to have to ugly
up the code with the required #define's at every call site.  At the
moment the SPL only uses this in one place but higher layers can
benefit from the macro.

include/linux/file_compat.h
module/spl/spl-vnode.c

index 77d5a27c3aec5e6089b463bd9516c74e91108b87..0bef014abe7070efb5e9a5a7a48f10eade374625 100644 (file)
@@ -51,11 +51,21 @@ spl_filp_open(const char *name, int flags, int mode, int *err)
 #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 */
 
index 5c64f05fb0f106db46e6a2280275a3bb79a98ca2..1847c779418e595f8d5a7b4240f1f3df799b06bd 100644 (file)
@@ -295,11 +295,7 @@ vn_remove(const char *path, uio_seg_t seg, int flags)
         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)) {
@@ -318,11 +314,8 @@ vn_remove(const char *path, uio_seg_t seg, int flags)
 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: