From: David Sterba <dsterba@suse.com>
To: torvalds@linux-foundation.org
Cc: David Sterba <dsterba@suse.com>,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] Btrfs updates for 5.6
Date: Mon, 27 Jan 2020 17:30:48 +0100 [thread overview]
Message-ID: <cover.1580142284.git.dsterba@suse.com> (raw)
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
next reply other threads:[~2020-01-27 16:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-27 16:30 David Sterba [this message]
2020-01-28 23:40 ` [GIT PULL] Btrfs updates for 5.6 pr-tracker-bot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1580142284.git.dsterba@suse.com \
--to=dsterba@suse.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.