diff options
author | Christoph Hellwig <hch@lst.de> | 2023-05-24 18:03:14 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2023-06-19 14:59:33 +0300 |
commit | 816f589b8d43f7c258b0c10a5ce29daf01614651 (patch) | |
tree | 6a7df70ef3ac6ba6f907b705d51d3104487056dc /fs/btrfs/dev-replace.c | |
parent | 53d9981ca20efcded0f6cf6b480d713f490ca9f1 (diff) | |
download | linux-816f589b8d43f7c258b0c10a5ce29daf01614651.tar.xz |
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