linux/fs/btrfs
Qu Wenruo 2c70fe16ea btrfs: remove the nr_ret parameter from __extent_writepage_io()
The parameter @nr_ret is used to tell the caller how many sectors have
been submitted for IO.

Then callers check @nr_ret value to determine if we need to manually
clear the PAGECACHE_TAG_DIRTY, as if we submitted no sector (e.g. all
sectors are beyond i_size) there is no folio_start_writeback() called thus
PAGECACHE_TAG_DIRTY tag will not be cleared.

Remove this parameter by:

- Moving the btrfs_folio_clear_writeback() call into
  __extent_writepage_io()
  So that if we didn't submit any IO, then manually call
  btrfs_folio_set_writeback() to clear PAGECACHE_TAG_DIRTY when
  the page is no longer dirty.

- Use a bool to record if we have submitted any sector
  Instead of an int.

- Use subpage compatible helpers to end folio writeback.
  This brings no change to the behavior, just for the sake of consistency.

  As for the call site inside __extent_writepage(), we're always called
  for the whole page, so the existing full page helper
  folio_(start|end)_writeback() is totally fine.

  For the call site inside extent_write_locked_range(), although we can
  have subpage range, folio_start_writeback() will only clear
  PAGECACHE_TAG_DIRTY if the page is no longer dirty, and the full folio
  will still be dirty if there is any subpage dirty range.
  Only when the last dirty subpage sector is cleared, the
  folio_start_writeback() will clear PAGECACHE_TAG_DIRTY.

  So no matter if we call the full page or subpage helper, the result
  is still the same, then just use the subpage helpers for consistency.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2024-09-10 16:51:18 +02:00
..
tests btrfs: convert find_lock_delalloc_range() to use a folio 2024-09-10 16:51:14 +02:00
accessors.c
accessors.h btrfs: remove raid-stripe-tree encoding field from stripe_extent 2024-07-11 15:33:28 +02:00
acl.c
acl.h
async-thread.c
async-thread.h
backref.c
backref.h
bio.c btrfs: set search_commit_root on stripe io in case of relocation 2024-09-10 16:51:17 +02:00
bio.h
block-group.c btrfs: zoned: fix zone_unusable accounting on making block group read-write again 2024-07-29 19:21:19 +02:00
block-group.h btrfs: switch btrfs_block_group::inode to struct btrfs_inode 2024-07-11 15:33:28 +02:00
block-rsv.c
block-rsv.h
btrfs_inode.h btrfs: convert btrfs_get_extent() to take a folio 2024-09-10 16:51:16 +02:00
compression.c btrfs: convert add_ra_bio_pages() to use only folios 2024-09-10 16:51:13 +02:00
compression.h btrfs: pass a btrfs_inode to btrfs_compress_heuristic() 2024-07-11 15:33:28 +02:00
ctree.c btrfs: fix data race when accessing the last_trans field of a root 2024-07-11 15:52:25 +02:00
ctree.h btrfs: fix race between direct IO write and fsync when using same fd 2024-09-03 20:29:55 +02:00
defrag.c btrfs: fix data race when accessing the last_trans field of a root 2024-07-11 15:52:25 +02:00
defrag.h
delalloc-space.c btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
delalloc-space.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
delayed-inode.c btrfs: pass a btrfs_inode to btrfs_readdir_get_delayed_items() 2024-07-11 15:33:28 +02:00
delayed-inode.h btrfs: pass a btrfs_inode to btrfs_readdir_get_delayed_items() 2024-07-11 15:33:28 +02:00
delayed-ref.c btrfs: qgroup: use xarray to track dirty extents in transaction 2024-09-10 16:51:18 +02:00
delayed-ref.h btrfs: qgroup: use xarray to track dirty extents in transaction 2024-09-10 16:51:18 +02:00
dev-replace.c btrfs: more efficient chunk map iteration when device replace finishes 2024-09-10 16:51:17 +02:00
dev-replace.h
dir-item.c btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
dir-item.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
direct-io.c btrfs: fix race between direct IO write and fsync when using same fd 2024-09-03 20:29:55 +02:00
direct-io.h btrfs: move the direct IO code into its own file 2024-07-11 15:33:29 +02:00
discard.c
discard.h
disk-io.c for-6.11-tag 2024-07-17 12:38:04 -07:00
disk-io.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
export.c btrfs: remove super block argument from btrfs_iget() 2024-07-11 15:33:25 +02:00
export.h
extent-io-tree.c btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
extent-io-tree.h
extent-tree.c btrfs: check delayed refs when we're checking if a ref exists 2024-08-13 13:42:26 +02:00
extent-tree.h btrfs: do not BUG_ON() when freeing tree block after error 2024-07-11 15:33:26 +02:00
extent_io.c btrfs: remove the nr_ret parameter from __extent_writepage_io() 2024-09-10 16:51:18 +02:00
extent_io.h btrfs: convert extent_write_locked_range() to take a folio 2024-09-10 16:51:15 +02:00
extent_map.c btrfs: reduce size and overhead of extent_map_block_end() 2024-09-10 16:51:12 +02:00
extent_map.h btrfs: do not directly include rwlock_types.h 2024-07-11 15:33:22 +02:00
fiemap.c btrfs: initialize last_extent_end to fix -Wmaybe-uninitialized warning in extent_fiemap() 2024-08-26 16:58:13 +02:00
fiemap.h btrfs: move fiemap code into its own file 2024-07-11 15:33:20 +02:00
file-item.c btrfs: introduce new "rescue=ignoremetacsums" mount option 2024-07-11 15:33:29 +02:00
file-item.h
file.c btrfs: utilize folio more in btrfs_page_mkwrite() 2024-09-10 16:51:14 +02:00
file.h btrfs: move the direct IO code into its own file 2024-07-11 15:33:29 +02:00
free-space-cache.c btrfs: zoned: properly take lock to read/update block group's zoned variables 2024-08-15 20:35:56 +02:00
free-space-cache.h
free-space-tree.c btrfs: do not BUG_ON() when freeing tree block after error 2024-07-11 15:33:26 +02:00
free-space-tree.h
fs.c
fs.h for-6.11-tag 2024-07-19 14:34:52 -07:00
inode-item.c btrfs: abort transaction if we don't find extref in btrfs_del_inode_extref() 2024-07-11 15:33:27 +02:00
inode-item.h
inode.c btrfs: add comment about locking in cow_file_range_inline() 2024-09-10 16:51:17 +02:00
ioctl.c btrfs: directly wake up cleaner kthread in the BTRFS_IOC_SYNC ioctl 2024-09-10 16:51:18 +02:00
ioctl.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
Kconfig
locking.c
locking.h btrfs: cleanup recursive include of the same header 2024-07-11 15:33:22 +02:00
lru_cache.c
lru_cache.h btrfs: cleanup recursive include of the same header 2024-07-11 15:33:22 +02:00
lzo.c btrfs: enhance compression error messages 2024-07-11 15:52:25 +02:00
Makefile btrfs: move the direct IO code into its own file 2024-07-11 15:33:29 +02:00
messages.c btrfs: introduce new "rescue=ignoremetacsums" mount option 2024-07-11 15:33:29 +02:00
messages.h
misc.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
ordered-data.c btrfs: convert btrfs_mark_ordered_io_finished() to take a folio 2024-09-10 16:51:14 +02:00
ordered-data.h btrfs: convert btrfs_mark_ordered_io_finished() to take a folio 2024-09-10 16:51:14 +02:00
orphan.c
orphan.h
print-tree.c btrfs: avoid using fixed char array size for tree names 2024-08-02 22:44:27 +02:00
print-tree.h
props.c btrfs: pass a btrfs_inode to btrfs_set_prop() 2024-07-11 15:33:29 +02:00
props.h btrfs: pass a btrfs_inode to btrfs_set_prop() 2024-07-11 15:33:29 +02:00
qgroup.c btrfs: qgroup: use xarray to track dirty extents in transaction 2024-09-10 16:51:18 +02:00
qgroup.h btrfs: qgroup: use xarray to track dirty extents in transaction 2024-09-10 16:51:18 +02:00
raid-stripe-tree.c btrfs: change RST lookup error message level to debug 2024-09-10 16:51:17 +02:00
raid-stripe-tree.h btrfs: remove raid-stripe-tree encoding field from stripe_extent 2024-07-11 15:33:28 +02:00
raid56.c btrfs: rename the extra_gfp parameter of btrfs_alloc_page_array() 2024-07-11 15:33:30 +02:00
raid56.h
rcu-string.h
ref-verify.c btrfs: fix uninitialized return value in the ref-verify tool 2024-07-02 19:14:57 +02:00
ref-verify.h
reflink.c btrfs: pass a btrfs_inode to btrfs_wait_ordered_range() 2024-07-11 15:33:18 +02:00
reflink.h
relocation.c btrfs: don't readahead the relocation inode on RST 2024-09-10 16:51:17 +02:00
relocation.h
root-tree.c
root-tree.h
scrub.c btrfs: rename btrfs_io_stripe::is_scrub to rst_search_commit_root 2024-09-10 16:51:17 +02:00
scrub.h
send.c btrfs: send: fix grammar in comments 2024-09-10 16:51:18 +02:00
send.h btrfs: pass a btrfs_inode to btrfs_ioctl_send() 2024-07-11 15:33:28 +02:00
space-info.c btrfs: fix uninitialized return value from btrfs_reclaim_sweep() 2024-08-27 16:42:09 +02:00
space-info.h btrfs: fix uninitialized return value from btrfs_reclaim_sweep() 2024-08-27 16:42:09 +02:00
subpage.c btrfs: refactor __extent_writepage_io() to do sector-by-sector submission 2024-09-10 16:51:18 +02:00
subpage.h btrfs: refactor __extent_writepage_io() to do sector-by-sector submission 2024-09-10 16:51:18 +02:00
super.c btrfs: only enable extent map shrinker for DEBUG builds 2024-08-16 21:22:39 +02:00
super.h btrfs: change BTRFS_MOUNT_* flags to 64bit type 2024-07-19 17:20:23 +02:00
sysfs.c btrfs: introduce new "rescue=ignoresuperflags" mount option 2024-07-11 15:33:30 +02:00
sysfs.h
transaction.c btrfs: qgroup: use xarray to track dirty extents in transaction 2024-09-10 16:51:18 +02:00
transaction.h btrfs: fix race between direct IO write and fsync when using same fd 2024-09-03 20:29:55 +02:00
tree-checker.c btrfs: tree-checker: add dev extent item checks 2024-08-15 20:35:52 +02:00
tree-checker.h
tree-log.c btrfs: remove super block argument from btrfs_iget() 2024-07-11 15:33:25 +02:00
tree-log.h btrfs: avoid transaction commit on any fsync after subvolume creation 2024-07-11 15:33:24 +02:00
tree-mod-log.c
tree-mod-log.h
ulist.c btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
ulist.h btrfs: preallocate ulist memory for qgroup rsv 2024-07-11 15:33:26 +02:00
uuid-tree.c btrfs: move uuid tree related code to uuid-tree.[ch] 2024-09-10 16:51:12 +02:00
uuid-tree.h btrfs: move uuid tree related code to uuid-tree.[ch] 2024-09-10 16:51:12 +02:00
verity.c
verity.h
volumes.c btrfs: reduce chunk_map lookups in btrfs_map_block() 2024-09-10 16:51:18 +02:00
volumes.h btrfs: rename btrfs_io_stripe::is_scrub to rst_search_commit_root 2024-09-10 16:51:17 +02:00
xattr.c btrfs: pass a btrfs_inode to btrfs_set_prop() 2024-07-11 15:33:29 +02:00
xattr.h btrfs: constify pointer parameters where applicable 2024-07-11 15:33:22 +02:00
zlib.c btrfs: enhance compression error messages 2024-07-11 15:52:25 +02:00
zoned.c btrfs: zoned: handle broken write pointer on zones 2024-09-02 23:39:34 +02:00
zoned.h btrfs: change BTRFS_MOUNT_* flags to 64bit type 2024-07-19 17:20:23 +02:00
zstd.c btrfs: enhance compression error messages 2024-07-11 15:52:25 +02:00