aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/reiserfs/inode.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
index 1893c8198439..cc70b56bf6f2 100644
--- a/fs/reiserfs/inode.c
+++ b/fs/reiserfs/inode.c
@@ -2079,8 +2079,9 @@ int reiserfs_truncate_file(struct inode *inode, int update_timestamps)
2079 int error; 2079 int error;
2080 struct buffer_head *bh = NULL; 2080 struct buffer_head *bh = NULL;
2081 int err2; 2081 int err2;
2082 int lock_depth;
2082 2083
2083 reiserfs_write_lock(inode->i_sb); 2084 lock_depth = reiserfs_write_lock_once(inode->i_sb);
2084 2085
2085 if (inode->i_size > 0) { 2086 if (inode->i_size > 0) {
2086 error = grab_tail_page(inode, &page, &bh); 2087 error = grab_tail_page(inode, &page, &bh);
@@ -2149,14 +2150,17 @@ int reiserfs_truncate_file(struct inode *inode, int update_timestamps)
2149 page_cache_release(page); 2150 page_cache_release(page);
2150 } 2151 }
2151 2152
2152 reiserfs_write_unlock(inode->i_sb); 2153 reiserfs_write_unlock_once(inode->i_sb, lock_depth);
2154
2153 return 0; 2155 return 0;
2154 out: 2156 out:
2155 if (page) { 2157 if (page) {
2156 unlock_page(page); 2158 unlock_page(page);
2157 page_cache_release(page); 2159 page_cache_release(page);
2158 } 2160 }
2159 reiserfs_write_unlock(inode->i_sb); 2161
2162 reiserfs_write_unlock_once(inode->i_sb, lock_depth);
2163
2160 return error; 2164 return error;
2161} 2165}
2162 2166