Skip to content

Commit

Permalink
btrfs: move the !zoned assert into run_delalloc_cow
Browse files Browse the repository at this point in the history
Having the assert in the actual helper documents the pre-conditions
much better than having it in the caller, so move it.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Christoph Hellwig authored and David Sterba committed Aug 21, 2023
1 parent 38dc888 commit 76c5126
Showing 1 changed file with 7 additions and 8 deletions.
15 changes: 7 additions & 8 deletions fs/btrfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1976,6 +1976,13 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
u64 ino = btrfs_ino(inode);
struct can_nocow_file_extent_args nocow_args = { 0 };

/*
* Normally on a zoned device we're only doing COW writes, but in case
* of relocation on a zoned filesystem serializes I/O so that we're only
* writing sequentially and can end up here as well.
*/
ASSERT(!btrfs_is_zoned(fs_info) || btrfs_is_data_reloc_root(root));

path = btrfs_alloc_path();
if (!path) {
ret = -ENOMEM;
Expand Down Expand Up @@ -2257,14 +2264,6 @@ int btrfs_run_delalloc_range(struct btrfs_inode *inode, struct page *locked_page
start >= page_offset(locked_page) + PAGE_SIZE));

if (should_nocow(inode, start, end)) {
/*
* Normally on a zoned device we're only doing COW writes, but
* in case of relocation on a zoned filesystem we have taken
* precaution, that we're only writing sequentially. It's safe
* to use run_delalloc_nocow() here, like for regular
* preallocated inodes.
*/
ASSERT(!zoned || btrfs_is_data_reloc_root(inode->root));
ret = run_delalloc_nocow(inode, locked_page, start, end);
goto out;
}
Expand Down

0 comments on commit 76c5126

Please sign in to comment.