diff options
| author | Christoph Hellwig <hch@lst.de> | 2023-05-24 17:03:14 +0200 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2023-06-19 13:59:33 +0200 |
| commit | 816f589b8d43f7c258b0c10a5ce29daf01614651 (patch) | |
| tree | 6a7df70ef3ac6ba6f907b705d51d3104487056dc /fs/btrfs/dev-replace.c | |
| parent | btrfs: split btrfs_alloc_ordered_extent to allocation and insertion helpers (diff) | |
| download | linux-816f589b8d43f7c258b0c10a5ce29daf01614651.tar.gz linux-816f589b8d43f7c258b0c10a5ce29daf01614651.zip | |
btrfs: atomically insert the new extent in btrfs_split_ordered_extent
Currently there is a small race window in btrfs_split_ordered_extent,
where the reduced old extent can be looked up on the per-inode rbtree
or the per-root list while the newly split out one isn't visible yet.
Fix this by open coding btrfs_alloc_ordered_extent in
btrfs_split_ordered_extent, and holding the tree lock and
root->ordered_extent_lock over the entire tree and extent manipulation.
Note that this introduces new lock ordering because previously
ordered_extent_lock was never held over the tree lock.
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/dev-replace.c')
0 files changed, 0 insertions, 0 deletions
