Skip to content

Commit 00608e3

Browse files
fdmananamorbidrsa
authored andcommitted
btrfs: use mapping shared locking for reading super block
There's no need to exclusively lock the mapping, shared locking is enough to protect from a concurrent set block size operation (BLKBSZSET ioctl). Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 1ba72d8 commit 00608e3

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

fs/btrfs/volumes.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,9 +1369,9 @@ struct btrfs_super_block *btrfs_read_disk_super(struct block_device *bdev,
13691369
(bytenr + BTRFS_SUPER_INFO_SIZE) >> PAGE_SHIFT);
13701370
}
13711371

1372-
filemap_invalidate_lock(mapping);
1372+
filemap_invalidate_lock_shared(mapping);
13731373
page = read_cache_page_gfp(mapping, bytenr >> PAGE_SHIFT, GFP_NOFS);
1374-
filemap_invalidate_unlock(mapping);
1374+
filemap_invalidate_unlock_shared(mapping);
13751375
if (IS_ERR(page))
13761376
return ERR_CAST(page);
13771377

fs/btrfs/zoned.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,10 +131,10 @@ static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones,
131131
u64 bytenr = ALIGN_DOWN(zone_end, BTRFS_SUPER_INFO_SIZE) -
132132
BTRFS_SUPER_INFO_SIZE;
133133

134-
filemap_invalidate_lock(mapping);
134+
filemap_invalidate_lock_shared(mapping);
135135
page[i] = read_cache_page_gfp(mapping,
136136
bytenr >> PAGE_SHIFT, GFP_NOFS);
137-
filemap_invalidate_unlock(mapping);
137+
filemap_invalidate_unlock_shared(mapping);
138138
if (IS_ERR(page[i])) {
139139
if (i == 1)
140140
btrfs_release_disk_super(super[0]);

0 commit comments

Comments
 (0)