diff options
-rw-r--r-- | fs/reiserfs/inode.c | 10 |
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 | ||