diff options
| author | Linus Walleij <linus.walleij@linaro.org> | 2020-11-17 22:23:05 +0100 |
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2020-11-17 22:23:05 +0100 |
| commit | ad9a72f9c6fd3998f0080701f1cc1f43a4317b7c (patch) | |
| tree | dd53a560a1523f5dcd9823b29ae92bdcc0b7da4d /fs/btrfs/inode.c | |
| parent | b9bf97105f4b9adc32604d24072147b242564fb3 (diff) | |
| parent | 09162bc32c880a791c6c0668ce0745cf7958f576 (diff) | |
Merge tag 'v5.10-rc4' into devel
Linux 5.10-rc4
Diffstat (limited to 'fs/btrfs/inode.c')
| -rw-r--r-- | fs/btrfs/inode.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 936c3137c646..da58c58ef9aa 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -9672,10 +9672,16 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode, * clear_offset by our extent size. */ clear_offset += ins.offset; - btrfs_dec_block_group_reservations(fs_info, ins.objectid); last_alloc = ins.offset; trans = insert_prealloc_file_extent(trans, inode, &ins, cur_offset); + /* + * Now that we inserted the prealloc extent we can finally + * decrement the number of reservations in the block group. + * If we did it before, we could race with relocation and have + * relocation miss the reserved extent, making it fail later. + */ + btrfs_dec_block_group_reservations(fs_info, ins.objectid); if (IS_ERR(trans)) { ret = PTR_ERR(trans); btrfs_free_reserved_extent(fs_info, ins.objectid, |
