aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/compression.c
diff options
context:
space:
mode:
authorDavid Sterba <[email protected]>2024-08-27 02:05:48 +0000
committerDavid Sterba <[email protected]>2024-09-10 14:51:19 +0000
commit276940915f232f8569124811fd8a9524f27f5748 (patch)
tree3ed84fee9e666e802ba93c11f22847f046bb5d4b /fs/btrfs/compression.c
parentbtrfs: rename __btrfs_run_defrag_inode() and drop double underscores (diff)
downloadkernel-276940915f232f8569124811fd8a9524f27f5748.tar.gz
kernel-276940915f232f8569124811fd8a9524f27f5748.zip
btrfs: clear defragmented inodes using postorder in btrfs_cleanup_defrag_inodes()
btrfs_cleanup_defrag_inodes() is not called frequently, only in remount or unmount, but the way it frees the inodes in fs_info->defrag_inodes is inefficient. Each time it needs to locate first node, remove it, potentially rebalance tree until it's done. This allows to do a conditional reschedule. For cleanups the rbtree_postorder_for_each_entry_safe() iterator is convenient but we can't reschedule and restart iteration because some of the tree nodes would be already freed. The cleanup operation is kmem_cache_free() which will likely take the fast path for most objects so rescheduling should not be necessary. Reviewed-by: Qu Wenruo <[email protected]> Signed-off-by: David Sterba <[email protected]>
Diffstat (limited to 'fs/btrfs/compression.c')
0 files changed, 0 insertions, 0 deletions