diff options
Diffstat (limited to 'fs/btrfs/file.c')
-rw-r--r-- | fs/btrfs/file.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index a760d97279ac..8a9c76aecdf3 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -188,15 +188,15 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, | |||
188 | if (!split2) | 188 | if (!split2) |
189 | split2 = alloc_extent_map(GFP_NOFS); | 189 | split2 = alloc_extent_map(GFP_NOFS); |
190 | 190 | ||
191 | spin_lock(&em_tree->lock); | 191 | write_lock(&em_tree->lock); |
192 | em = lookup_extent_mapping(em_tree, start, len); | 192 | em = lookup_extent_mapping(em_tree, start, len); |
193 | if (!em) { | 193 | if (!em) { |
194 | spin_unlock(&em_tree->lock); | 194 | write_unlock(&em_tree->lock); |
195 | break; | 195 | break; |
196 | } | 196 | } |
197 | flags = em->flags; | 197 | flags = em->flags; |
198 | if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) { | 198 | if (skip_pinned && test_bit(EXTENT_FLAG_PINNED, &em->flags)) { |
199 | spin_unlock(&em_tree->lock); | 199 | write_unlock(&em_tree->lock); |
200 | if (em->start <= start && | 200 | if (em->start <= start && |
201 | (!testend || em->start + em->len >= start + len)) { | 201 | (!testend || em->start + em->len >= start + len)) { |
202 | free_extent_map(em); | 202 | free_extent_map(em); |
@@ -259,7 +259,7 @@ int btrfs_drop_extent_cache(struct inode *inode, u64 start, u64 end, | |||
259 | free_extent_map(split); | 259 | free_extent_map(split); |
260 | split = NULL; | 260 | split = NULL; |
261 | } | 261 | } |
262 | spin_unlock(&em_tree->lock); | 262 | write_unlock(&em_tree->lock); |
263 | 263 | ||
264 | /* once for us */ | 264 | /* once for us */ |
265 | free_extent_map(em); | 265 | free_extent_map(em); |