btrfs: explicitly protect ->last_byte_to_unpin in unpin_extent_range
[sfrench/cifs-2.6.git] / fs / btrfs / extent-tree.c
index 27523e6b6c2d081c7ed6f615d920efb63e0fc66e..d7a68203cda0ee41c508acdc9487e42126e1b3eb 100644 (file)
@@ -2769,11 +2769,13 @@ static int unpin_extent_range(struct btrfs_fs_info *fs_info,
                len = cache->start + cache->length - start;
                len = min(len, end + 1 - start);
 
+               down_read(&fs_info->commit_root_sem);
                if (start < cache->last_byte_to_unpin && return_free_space) {
                        u64 add_len = min(len, cache->last_byte_to_unpin - start);
 
                        btrfs_add_free_space(cache, start, add_len);
                }
+               up_read(&fs_info->commit_root_sem);
 
                start += len;
                total_unpinned += len;