]> git.baikalelectronics.ru Git - kernel.git/commit
btrfs: zoned: deal with holes writing out tree-log pages
authorNaohiro Aota <naohiro.aota@wdc.com>
Fri, 5 Feb 2021 14:58:36 +0000 (23:58 +0900)
committerDavid Sterba <dsterba@suse.com>
Tue, 9 Feb 2021 01:52:24 +0000 (02:52 +0100)
commitdf42a2758b7fbf6d43457f0911e253467f9840da
treed72e78acac82d542aa1de05db6a36f9b5181ec00
parent6c455433ae6907b1601c222739e16877269cf38e
btrfs: zoned: deal with holes writing out tree-log pages

Since the zoned filesystem requires sequential write out of metadata, we
cannot proceed with a hole in tree-log pages. When such a hole exists,
btree_write_cache_pages() will return -EAGAIN. This happens when someone,
e.g., a concurrent transaction commit, writes a dirty extent in this
tree-log commit.

If we are not going to wait for the extents, we can hope the concurrent
writing fills the hole for us. So, we can ignore the error in this case and
hope the next write will succeed.

If we want to wait for them and got the error, we cannot wait for them
because it will cause a deadlock. So, let's bail out to a full commit in
this case.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-log.c