* [GIT PULL] Btrfs updates for 5.6 @ 2020-01-27 16:30 David Sterba 2020-01-28 23:40 ` pr-tracker-bot 0 siblings, 1 reply; 2+ messages in thread From: David Sterba @ 2020-01-27 16:30 UTC (permalink / raw) To: torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel Hi, please pull the following updates for btrfs, thanks. Features, highlights: * async discard * "mount -o discard=async" to enable it * freed extents are not discarded immediatelly, but grouped together and trimmed later, with IO rate limiting * the "sync" mode submits short extents that could have been ignored completely by the device, for SATA prior to 3.1 the requests are unqueued and have a big impact on performance * the actual discard IO requests have been moved out of transaction commit to a worker thread, improving commit latency * IO rate and request size can be tuned by sysfs files, for now enabled only with CONFIG_BTRFS_DEBUG as we might need to add/delete the files and don't have a stable-ish ABI for general use, defaults are conservative * export device state info in sysfs, eg. missing, writeable * no discard of extents known to be untouched on disk (eg. after reservation) * device stats reset is logged with process name and PID that called the ioctl Fixes: * fix missing hole after hole punching and fsync when using NO_HOLES * writeback: range cyclic mode could miss some dirty pages and lead to OOM * two more corner cases for metadata_uuid change after power loss during the change * fix infinite loop during fsync after mix of rename operations Core changes: * qgroup assign returns ENOTCONN when quotas not enabled, used to return EINVAL that was confusing * device closing does not need to allocate memory anymore * snapshot aware code got removed, disabled for years due to performance problems, reimplmentation will allow to select wheter defrag breaks or does not break COW on shared extents * tree-checker: * check leaf chunk item size, cross check against number of stripes * verify location keys for DIR_ITEM, DIR_INDEX and XATTR items * new self test for physical -> logical mapping code, used for super block range exclusion * assertion helpers/macros updated to avoid objtool "unreachable code" reports on older compilers or config option combinations ---------------------------------------------------------------- The following changes since commit def9d2780727cec3313ed3522d0123158d87224d: Linux 5.5-rc7 (2020-01-19 16:02:49 -0800) are available in the Git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.6-tag for you to fetch changes up to 4e19443da1941050b346f8fc4c368aa68413bc88: btrfs: free block groups after free'ing fs trees (2020-01-23 17:24:39 +0100) ---------------------------------------------------------------- Anand Jain (6): btrfs: sysfs, rename devices kobject holder to devices_kobj btrfs: sysfs, btrfs_sysfs_add_fsid() drop unused argument parent btrfs: sysfs, rename btrfs_sysfs_add_device() btrfs: sysfs, merge btrfs_sysfs_add devices_kobj and fsid btrfs: device stats, log when stats are zeroed btrfs: sysfs, add devid/dev_state kobject and device attributes David Sterba (5): btrfs: use raid_attr table in calc_stripe_length for nparity btrfs: fill ncopies for all raid table entries btrfs: remove unused member btrfs_device::work btrfs: safely advance counter when looking up bio csums btrfs: separate definition of assertion failure handlers Dennis Zhou (24): bitmap: genericize percpu bitmap region iterators btrfs: rename DISCARD mount option to to DISCARD_SYNC btrfs: keep track of which extents have been discarded btrfs: keep track of free space bitmap trim status cleanliness btrfs: add the beginning of async discard, discard workqueue btrfs: handle empty block_group removal for async discard btrfs: discard one region at a time in async discard btrfs: sysfs: add removal calls for debug/ btrfs: sysfs: make UUID/debug have its own kobject btrfs: sysfs: add UUID/debug/discard directory btrfs: track discardable extents for async discard btrfs: keep track of discardable_bytes for async discard btrfs: calculate discard delay based on number of extents btrfs: add kbps discard rate limit for async discard btrfs: limit max discard size for async discard btrfs: make max async discard size tunable btrfs: have multiple discard lists btrfs: only keep track of data extents for async discard btrfs: keep track of discard reuse stats btrfs: add async discard implementation overview btrfs: increase the metadata allowance for the free_space_cache btrfs: make smaller extents more likely to go into bitmaps btrfs: ensure removal of discardable_* in free_bitmap() btrfs: add correction to handle -1 edge case in async discard Filipe Manana (2): Btrfs: fix missing hole after hole punching and fsync when using NO_HOLES Btrfs: fix infinite loop during fsync after rename operations Johannes Thumshirn (6): btrfs: fix possible NULL-pointer dereference in integrity checks btrfs: remove superfluous BUG_ON() in integrity checks btrfs: remove impossible WARN_ON in btrfs_destroy_dev_replace_tgtdev() btrfs: decrement number of open devices after closing the device not before btrfs: reset device back to allocation state when removing btrfs: remove unnecessary wrapper get_alloc_profile Josef Bacik (6): btrfs: don't pass system_chunk into can_overcommit btrfs: kill min_allocable_bytes in inc_block_group_ro btrfs: fix improper setting of scanned for range cyclic write cache pages btrfs: drop log root for dropped roots btrfs: set trans->drity in btrfs_commit_transaction btrfs: free block groups after free'ing fs trees Marcos Paulo de Souza (2): btrfs: qgroup: remove one-time use variables for quota_root checks btrfs: qgroup: return ENOTCONN instead of EINVAL when quotas are not enabled Nikolay Borisov (12): btrfs: Don't discard unwritten extents btrfs: Open code __btrfs_free_reserved_extent in btrfs_free_reserved_extent btrfs: Rename __btrfs_free_reserved_extent to btrfs_pin_reserved_extent btrfs: Remove WARN_ON in walk_log_tree btrfs: Remove redundant WARN_ON in walk_down_log_tree btrfs: Opencode ordered_data_tree_panic btrfs: Move and unexport btrfs_rmap_block btrfs: selftests: Add support for dummy devices btrfs: Add self-tests for btrfs_rmap_block btrfs: Refactor btrfs_rmap_block to improve readability btrfs: Handle another split brain scenario with metadata uuid feature btrfs: Fix split-brain handling when changing FSID to metadata uuid Omar Sandoval (11): btrfs: use simple_dir_inode_operations for placeholder subvolume directory btrfs: get rid of trivial __btrfs_lookup_bio_sums() wrappers btrfs: get rid of at_offset parameter to btrfs_lookup_bio_sums() btrfs: remove dead snapshot-aware defrag code btrfs: make btrfs_ordered_extent naming consistent with btrfs_file_extent_item btrfs: remove unnecessary pg_offset assignments in __extent_writepage() btrfs: remove trivial goto label in __extent_writepage() btrfs: remove redundant i_size check in __extent_writepage_io() btrfs: drop create parameter to btrfs_get_extent() btrfs: simplify compressed/inline check in __extent_writepage_io() btrfs: remove struct find_free_extent.ram_bytes Qu Wenruo (6): btrfs: relocation: Output current relocation stage at btrfs_relocate_block_group() btrfs: tree-checker: Check leaf chunk item size btrfs: tree-checker: Clean up fs_info parameter from error message wrapper btrfs: tree-checker: Refactor inode key check into seperate function btrfs: tree-checker: Refactor root key check into separate function btrfs: tree-checker: Verify location key for DIR_ITEM/DIR_INDEX Su Yue (2): btrfs: Call find_fsid from find_fsid_inprogress btrfs: Factor out metadata_uuid code from find_fsid. Yunfeng Ye (1): btrfs: remove unused condition check in btrfs_page_mkwrite() zhengbin (1): btrfs: Remove unneeded semicolon fs/btrfs/Makefile | 2 +- fs/btrfs/block-group.c | 212 ++++++++-- fs/btrfs/block-group.h | 40 ++ fs/btrfs/check-integrity.c | 4 +- fs/btrfs/compression.c | 4 +- fs/btrfs/ctree.h | 81 +++- fs/btrfs/dev-replace.c | 1 + fs/btrfs/discard.c | 702 ++++++++++++++++++++++++++++++++ fs/btrfs/discard.h | 41 ++ fs/btrfs/disk-io.c | 37 +- fs/btrfs/disk-io.h | 4 +- fs/btrfs/extent-tree.c | 50 +-- fs/btrfs/extent_io.c | 54 +-- fs/btrfs/extent_io.h | 6 +- fs/btrfs/file-item.c | 41 +- fs/btrfs/file.c | 23 +- fs/btrfs/free-space-cache.c | 619 ++++++++++++++++++++++++---- fs/btrfs/free-space-cache.h | 41 +- fs/btrfs/inode-map.c | 13 +- fs/btrfs/inode.c | 834 ++++---------------------------------- fs/btrfs/ioctl.c | 2 +- fs/btrfs/ordered-data.c | 81 ++-- fs/btrfs/ordered-data.h | 26 +- fs/btrfs/print-tree.c | 2 +- fs/btrfs/qgroup.c | 44 +- fs/btrfs/relocation.c | 20 +- fs/btrfs/scrub.c | 7 +- fs/btrfs/space-info.c | 42 +- fs/btrfs/super.c | 39 +- fs/btrfs/sysfs.c | 394 ++++++++++++++++-- fs/btrfs/sysfs.h | 5 +- fs/btrfs/tests/btrfs-tests.c | 29 ++ fs/btrfs/tests/btrfs-tests.h | 1 + fs/btrfs/tests/extent-map-tests.c | 154 ++++++- fs/btrfs/tests/inode-tests.c | 44 +- fs/btrfs/transaction.c | 30 +- fs/btrfs/tree-checker.c | 225 +++++++--- fs/btrfs/tree-log.c | 455 +++++++-------------- fs/btrfs/volumes.c | 284 ++++++------- fs/btrfs/volumes.h | 10 +- include/linux/bitmap.h | 35 ++ include/trace/events/btrfs.h | 6 +- mm/percpu.c | 61 +-- 43 files changed, 3042 insertions(+), 1763 deletions(-) create mode 100644 fs/btrfs/discard.c create mode 100644 fs/btrfs/discard.h ^ permalink raw reply [flat|nested] 2+ messages in thread

Linux-BTRFS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-btrfs/0 linux-btrfs/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-btrfs linux-btrfs/ https://lore.kernel.org/linux-btrfs \ linux-btrfs@vger.kernel.org public-inbox-index linux-btrfs Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-btrfs AGPL code for this site: git clone https://public-inbox.org/public-inbox.git