mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
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.
This commit is contained in:
parent
b7dc313837
commit
6bf4d76f47
@ -57,5 +57,15 @@ spl_filp_open(const char *name, int flags, int mode, int *err)
|
|||||||
#define spl_filp_fsync(fp, sync) (fp)->f_op->fsync((fp), sync)
|
#define spl_filp_fsync(fp, sync) (fp)->f_op->fsync((fp), sync)
|
||||||
#endif
|
#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 */
|
#endif /* SPL_FILE_COMPAT_H */
|
||||||
|
|
||||||
|
@ -295,11 +295,7 @@ vn_remove(const char *path, uio_seg_t seg, int flags)
|
|||||||
if (nd.last_type != LAST_NORM)
|
if (nd.last_type != LAST_NORM)
|
||||||
SGOTO(exit1, rc);
|
SGOTO(exit1, rc);
|
||||||
|
|
||||||
#ifdef HAVE_INODE_I_MUTEX
|
spl_inode_lock_nested(nd.nd_dentry->d_inode, I_MUTEX_PARENT);
|
||||||
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 */
|
|
||||||
dentry = vn_lookup_hash(&nd);
|
dentry = vn_lookup_hash(&nd);
|
||||||
rc = PTR_ERR(dentry);
|
rc = PTR_ERR(dentry);
|
||||||
if (!IS_ERR(dentry)) {
|
if (!IS_ERR(dentry)) {
|
||||||
@ -318,11 +314,8 @@ vn_remove(const char *path, uio_seg_t seg, int flags)
|
|||||||
exit2:
|
exit2:
|
||||||
dput(dentry);
|
dput(dentry);
|
||||||
}
|
}
|
||||||
#ifdef HAVE_INODE_I_MUTEX
|
|
||||||
mutex_unlock(&nd.nd_dentry->d_inode->i_mutex);
|
spl_inode_unlock(nd.nd_dentry->d_inode);
|
||||||
#else
|
|
||||||
up(&nd.nd_dentry->d_inode->i_sem);
|
|
||||||
#endif /* HAVE_INODE_I_MUTEX */
|
|
||||||
if (inode)
|
if (inode)
|
||||||
iput(inode); /* truncate the inode here */
|
iput(inode); /* truncate the inode here */
|
||||||
exit1:
|
exit1:
|
||||||
|
Loading…
Reference in New Issue
Block a user