aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/reiserfs/inode.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index 47dbfb18877a..c876341ea738 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -3140,8 +3140,17 @@ int reiserfs_setattr(struct dentry *dentry, struct iattr *attr)
3140 journal_end(&th, inode->i_sb, jbegin_count); 3140 journal_end(&th, inode->i_sb, jbegin_count);
3141 } 3141 }
3142 } 3142 }
3143 if (!error) 3143 if (!error) {
3144 /*
3145 * Relax the lock here, as it might truncate the
3146 * inode pages and wait for inode pages locks.
3147 * To release such page lock, the owner needs the
3148 * reiserfs lock
3149 */
3150 reiserfs_write_unlock_once(inode->i_sb, depth);
3144 error = inode_setattr(inode, attr); 3151 error = inode_setattr(inode, attr);
3152 depth = reiserfs_write_lock_once(inode->i_sb);
3153 }
3145 } 3154 }
3146 3155
3147 if (!error && reiserfs_posixacl(inode->i_sb)) { 3156 if (!error && reiserfs_posixacl(inode->i_sb)) {