reiserfs: make per-inode xattr locking more fine grained

The per-inode locking can be made more fine-grained to surround just the
interaction with the filesystem itself.  This really only applies to
protecting reads during a write, since concurrent writes are barred with
inode->i_mutex at the vfs level.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Jeff Mahoney
2009-03-30 14:02:36 -04:00
committed by Linus Torvalds
parent d984561b32
commit 8b6dd72a44
4 changed files with 55 additions and 90 deletions
+1 -1
View File
@@ -59,7 +59,7 @@ struct reiserfs_inode_info {
struct posix_acl *i_acl_default;
#endif
#ifdef CONFIG_REISERFS_FS_XATTR
struct rw_semaphore xattr_sem;
struct rw_semaphore i_xattr_sem;
#endif
struct inode vfs_inode;
};
-22
View File
@@ -67,24 +67,6 @@ extern struct reiserfs_xattr_handler user_handler;
extern struct reiserfs_xattr_handler trusted_handler;
extern struct reiserfs_xattr_handler security_handler;
static inline void reiserfs_write_lock_xattr_i(struct inode *inode)
{
down_write(&REISERFS_I(inode)->i_xattr_sem);
}
static inline void reiserfs_write_unlock_xattr_i(struct inode *inode)
{
up_write(&REISERFS_I(inode)->i_xattr_sem);
}
static inline void reiserfs_read_lock_xattr_i(struct inode *inode)
{
down_read(&REISERFS_I(inode)->i_xattr_sem);
}
static inline void reiserfs_read_unlock_xattr_i(struct inode *inode)
{
up_read(&REISERFS_I(inode)->i_xattr_sem);
}
static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
{
init_rwsem(&REISERFS_I(inode)->i_xattr_sem);
@@ -96,10 +78,6 @@ static inline void reiserfs_init_xattr_rwsem(struct inode *inode)
#define reiserfs_setxattr NULL
#define reiserfs_listxattr NULL
#define reiserfs_removexattr NULL
#define reiserfs_write_lock_xattrs(sb) do {;} while(0)
#define reiserfs_write_unlock_xattrs(sb) do {;} while(0)
#define reiserfs_read_lock_xattrs(sb)
#define reiserfs_read_unlock_xattrs(sb)
#define reiserfs_permission NULL