diff options
| -rw-r--r-- | fs/reiserfs/xattr.c | 2 | ||||
| -rw-r--r-- | include/linux/reiserfs_fs.h | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/fs/reiserfs/xattr.c b/fs/reiserfs/xattr.c index 8891cd88a3f4..a0e2e7acdc75 100644 --- a/fs/reiserfs/xattr.c +++ b/fs/reiserfs/xattr.c | |||
| @@ -484,7 +484,7 @@ reiserfs_xattr_set_handle(struct reiserfs_transaction_handle *th, | |||
| 484 | if (IS_ERR(dentry)) | 484 | if (IS_ERR(dentry)) |
| 485 | return PTR_ERR(dentry); | 485 | return PTR_ERR(dentry); |
| 486 | 486 | ||
| 487 | down_write(&REISERFS_I(inode)->i_xattr_sem); | 487 | reiserfs_down_read_safe(&REISERFS_I(inode)->i_xattr_sem, inode->i_sb); |
| 488 | 488 | ||
| 489 | xahash = xattr_hash(buffer, buffer_size); | 489 | xahash = xattr_hash(buffer, buffer_size); |
| 490 | while (buffer_pos < buffer_size || buffer_pos == 0) { | 490 | while (buffer_pos < buffer_size || buffer_pos == 0) { |
diff --git a/include/linux/reiserfs_fs.h b/include/linux/reiserfs_fs.h index 4351b49e2b1e..35d3f459b0ac 100644 --- a/include/linux/reiserfs_fs.h +++ b/include/linux/reiserfs_fs.h | |||
| @@ -106,6 +106,14 @@ reiserfs_mutex_lock_nested_safe(struct mutex *m, unsigned int subclass, | |||
| 106 | reiserfs_write_lock(s); | 106 | reiserfs_write_lock(s); |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | static inline void | ||
| 110 | reiserfs_down_read_safe(struct rw_semaphore *sem, struct super_block *s) | ||
| 111 | { | ||
| 112 | reiserfs_write_unlock(s); | ||
| 113 | down_read(sem); | ||
| 114 | reiserfs_write_lock(s); | ||
| 115 | } | ||
| 116 | |||
| 109 | /* | 117 | /* |
| 110 | * When we schedule, we usually want to also release the write lock, | 118 | * When we schedule, we usually want to also release the write lock, |
| 111 | * according to the previous bkl based locking scheme of reiserfs. | 119 | * according to the previous bkl based locking scheme of reiserfs. |
