aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2011-01-10 12:35:22 -0800
committerBrian Behlendorf <[email protected]>2011-01-11 12:14:48 -0800
commit6bf4d76f4782a13f3ed378d77a0bc17967c3642a (patch)
tree40cfcdd4731fe98617b298df391f59e14a40e99c /include/linux
parentb7dc3138375ed4c73f55183371b48db4e6e25d79 (diff)
Linux Compat: inode->i_mutex/i_sem
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.
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/file_compat.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/linux/file_compat.h b/include/linux/file_compat.h
index 77d5a27c3..0bef014ab 100644
--- a/include/linux/file_compat.h
+++ b/include/linux/file_compat.h
@@ -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 */