All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.