aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/rust/pin-init/internal/src
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2025-07-31 08:20:01 +0930
committerDavid Sterba <dsterba@suse.com>2025-08-13 14:08:45 +0200
commit1f3d56db694cce6dfbffba0f398a06a222204487 (patch)
treee27999a0fe6c55598f5d90bbc79d1142a1e7221a /rust/pin-init/internal/src
parentbtrfs: do not set mtime/ctime to current time when unlinking for log replay (diff)
downloadwireguard-linux-1f3d56db694cce6dfbffba0f398a06a222204487.tar.xz
wireguard-linux-1f3d56db694cce6dfbffba0f398a06a222204487.zip
btrfs: clear TAG_TOWRITE from buffer tree when submitting a tree block
[POSSIBLE BUG] After commit 5e121ae687b8 ("btrfs: use buffer xarray for extent buffer writeback operations"), we have a dedicated xarray for extent buffers, and a lot of tags are migrated to that buffer tree, like PAGECACHE_TAG_TOWRITE/DIRTY/WRITEBACK. This frees us from the limits of page flags, but there is a new asymmetric behavior, we call buffer_tree_tag_for_writeback() to set PAGECACHE_TAG_TOWRITE for the involved ranges, but there is no one to clear that tag. Before that rework, we relied on the page cache tag which was cleared when folio_start_writeback() was called. Although this has its own problems (e.g. the first one calling folio_start_writeback() will clear the tag for the whole page), it at least cleared the tag. But now our real tags are stored in the buffer tree, no one is really clearing the PAGECACHE_TAG_TOWRITE tag now. [FIX] Thankfully this is not going to cause any real bug, but just some inefficiency iterating the extent buffers. As if we hit an extent buffer which is not dirty but still has the PAGECACHE_TAG_TOWRITE tag, lock_extent_buffer_for_io() will skip it so we won't writeback the extent buffer again. To properly fix the inefficiency, just clear the PAGECACHE_TAG_TOWRITE inside lock_extent_buffer_for_io(). There is no error path between lock_extent_buffer_for_io() and write_one_eb(), so we're safe to clear the tag there. Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'rust/pin-init/internal/src')
0 files changed, 0 insertions, 0 deletions