wrappers for ->i_mutex access
parallel to mutex_{lock,unlock,trylock,is_locked,lock_nested},
inode_foo(inode) being mutex_foo(&inode->i_mutex).
Please, use those for access to ->i_mutex; over the coming cycle
->i_mutex will become rwsem, with ->lookup() done with it held
only shared.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -714,6 +714,31 @@ enum inode_i_mutex_lock_class
|
||||
I_MUTEX_PARENT2,
|
||||
};
|
||||
|
||||
static inline void inode_lock(struct inode *inode)
|
||||
{
|
||||
mutex_lock(&inode->i_mutex);
|
||||
}
|
||||
|
||||
static inline void inode_unlock(struct inode *inode)
|
||||
{
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
}
|
||||
|
||||
static inline int inode_trylock(struct inode *inode)
|
||||
{
|
||||
return mutex_trylock(&inode->i_mutex);
|
||||
}
|
||||
|
||||
static inline int inode_is_locked(struct inode *inode)
|
||||
{
|
||||
return mutex_is_locked(&inode->i_mutex);
|
||||
}
|
||||
|
||||
static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
|
||||
{
|
||||
mutex_lock_nested(&inode->i_mutex, subclass);
|
||||
}
|
||||
|
||||
void lock_two_nondirectories(struct inode *, struct inode*);
|
||||
void unlock_two_nondirectories(struct inode *, struct inode*);
|
||||
|
||||
@@ -3047,8 +3072,8 @@ static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
|
||||
}
|
||||
static inline bool dir_relax(struct inode *inode)
|
||||
{
|
||||
mutex_unlock(&inode->i_mutex);
|
||||
mutex_lock(&inode->i_mutex);
|
||||
inode_unlock(inode);
|
||||
inode_lock(inode);
|
||||
return !IS_DEADDIR(inode);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user