linux-kernel.vger.kernel.org archive mirror
 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.18
Date: Mon, 21 Mar 2022 22:33:04 +0100	[thread overview]
Message-ID: <cover.1647894991.git.dsterba@suse.com> (raw)

Hi,

this update contains feature updates, performance improvements,
preparatory and core work and some related VFS updates.  Please pull,
thanks.

Features:

- encoded read/write ioctls, allows user space to read or write raw data
  directly to extents (now compressed, encrypted in the future), will be
  used by send/receive v2 where it saves processing time

- zoned mode now works with metadata DUP (the mkfs.btrfs default)

- error message header updates:
  - print error state: transaction abort, other error, log tree errors
  - print transient filesystem state: remount, device replace, ignored
    checksum verifications

- tree-checker: verify the transaction id of the to-be-written dirty
  extent buffer

Performance improvements:

- fsync speedups
  - directory logging speedups (up to -90% run time)
  - avoid logging all directory changes during renames (up to -60% run
    time)
  - avoid inode logging during rename and link when possible (up to -60%
    run time)
  - prepare extents to be logged before locking a log tree path
    (throughput +7%)
  - stop copying old file extents when doing a full fsync ()
  - improved logging of old extents after truncate

Core, fixes:

- improved stale device identification by dev_t and not just path (for
  devices that are behind other layers like device mapper)

- continued extent tree v2 preparatory work
  - disable features that won't work yet
  - add wrappers and abstractions for new tree roots

- improved error handling

- add super block write annotations around background block group
  reclaim

- fix device scanning messages potentially accessing stale pointer

- cleanups and refactoring

VFS:

- allow reflinks/deduplication from two different mounts of the same
  filesystem

- export and add helpers for read/write range verification, for the
  encoded ioctls

----------------------------------------------------------------
The following changes since commit 09688c0166e76ce2fb85e86b9d99be8b0084cdf9:

  Linux 5.17-rc8 (2022-03-13 13:23:37 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-5.18-tag

for you to fetch changes up to d3e29967079c522ce1c5cab0e9fab2c280b977eb:

  btrfs: zoned: put block group after final usage (2022-03-14 13:13:54 +0100)

----------------------------------------------------------------
Anand Jain (6):
      btrfs: simplify fs_devices member access in btrfs_init_dev_replace_tgtdev
      btrfs: harden identification of a stale device
      btrfs: match stale devices by dev_t
      btrfs: add device major-minor info in the struct btrfs_device
      btrfs: use dev_t to match device in device_matched
      btrfs: cleanup temporary variables when finding rotational device status

David Sterba (1):
      btrfs: replace BUILD_BUG_ON by static_assert

Dongliang Mu (1):
      btrfs: don't access possibly stale fs_info data in device_list_add

Dāvis Mosāns (1):
      btrfs: add lzo workspace buffer length constants

Filipe Manana (28):
      btrfs: remove write and wait of struct walk_control
      btrfs: don't log unnecessary boundary keys when logging directory
      btrfs: put initial index value of a directory in a constant
      btrfs: stop copying old dir items when logging a directory
      btrfs: stop trying to log subdirectories created in past transactions
      btrfs: add helper to delete a dir entry from a log tree
      btrfs: pass the dentry to btrfs_log_new_name() instead of the inode
      btrfs: avoid logging all directory changes during renames
      btrfs: stop doing unnecessary log updates during a rename
      btrfs: avoid inode logging during rename and link when possible
      btrfs: use single variable to track return value at btrfs_log_inode()
      btrfs: remove unnecessary leaf free space checks when pushing items
      btrfs: avoid unnecessary COW of leaves when deleting items from a leaf
      btrfs: avoid unnecessary computation when deleting items from a leaf
      btrfs: remove constraint on number of visited leaves when replacing extents
      btrfs: remove useless path release in the fast fsync path
      btrfs: prepare extents to be logged before locking a log tree path
      btrfs: stop checking for NULL return from btrfs_get_extent()
      btrfs: fix lost error return value when reading a data page
      btrfs: remove no longer used counter when reading data page
      btrfs: assert we have a write lock when removing and replacing extent maps
      btrfs: stop copying old file extents when doing a full fsync
      btrfs: hold on to less memory when logging checksums during full fsync
      btrfs: voluntarily relinquish cpu when doing a full fsync
      btrfs: reset last_reflink_trans after fsyncing inode
      btrfs: fix unexpected error path when reflinking an inline extent
      btrfs: deal with unexpected extent type during reflinking
      btrfs: add and use helper for unlinking inode during log replay

Jiapeng Chong (2):
      btrfs: zoned: remove redundant initialization of to_add
      btrfs: scrub: remove redundant initialization of increment

Johannes Thumshirn (5):
      btrfs: zoned: make zone activation multi stripe capable
      btrfs: zoned: make zone finishing multi stripe capable
      btrfs: zoned: prepare for allowing DUP on zoned
      btrfs: zoned: allow DUP on meta-data block groups
      btrfs: stop checking for NULL return from btrfs_get_extent_fiemap()

Josef Bacik (27):
      btrfs: add definition for EXTENT_TREE_V2
      btrfs: disable balance for extent tree v2 for now
      btrfs: disable device manipulation ioctl's EXTENT_TREE_V2
      btrfs: disable qgroups in extent tree v2
      btrfs: disable scrub for extent-tree-v2
      btrfs: disable snapshot creation/deletion for extent tree v2
      btrfs: disable space cache related mount options for extent tree v2
      btrfs: tree-checker: don't fail on empty extent roots for extent tree v2
      btrfs: abstract out loading the tree root
      btrfs: add code to support the block group root
      btrfs: add support for multiple global roots
      btrfs: make search_csum_tree return 0 if we get -EFBIG
      btrfs: handle csum lookup errors properly on reads
      btrfs: check correct bio in finish_compressed_bio_read
      btrfs: remove the bio argument from finish_compressed_bio_read
      btrfs: track compressed bio errors as blk_status_t
      btrfs: do not double complete bio on errors during compressed reads
      btrfs: do not try to repair bio that has no mirror set
      btrfs: do not clean up repair bio if submit fails
      btrfs: pass btrfs_fs_info for deleting snapshots and cleaner
      btrfs: pass btrfs_fs_info to btrfs_recover_relocation
      btrfs: remove the cross file system checks from remap
      fs: allow cross-vfsmount reflink/dedupe
      btrfs: remove BUG_ON(ret) in alloc_reserved_tree_block
      btrfs: add a alloc_reserved_extent helper
      btrfs: remove last_ref from the extent freeing code
      btrfs: factor out do_free_extent_accounting helper

Minghao Chi (1):
      btrfs: send: remove redundant ret variable in fs_path_copy

Naohiro Aota (1):
      btrfs: zoned: mark relocation as writing

Niels Dossche (2):
      btrfs: extend locking to all space_info members accesses
      btrfs: add lockdep_assert_held to need_preemptive_reclaim

Nikolay Borisov (3):
      btrfs: move missing device handling in a dedicate function
      btrfs: move QUOTA_ENABLED check to rescan_should_stop from btrfs_qgroup_rescan_worker
      btrfs: zoned: put block group after final usage

Omar Sandoval (10):
      fs: export rw_verify_area()
      fs: export variant of generic_write_checks without iov_iter
      btrfs: don't advance offset for compressed bios in btrfs_csum_one_bio()
      btrfs: add ram_bytes and offset to btrfs_ordered_extent
      btrfs: support different disk extent size for delalloc
      btrfs: clean up cow_file_range_inline()
      btrfs: optionally extend i_size in cow_file_range_inline()
      btrfs: add definitions and documentation for encoded I/O ioctls
      btrfs: add BTRFS_IOC_ENCODED_READ ioctl
      btrfs: add BTRFS_IOC_ENCODED_WRITE

Pankaj Raghav (1):
      btrfs: zoned: remove redundant assignment in btrfs_check_zoned_mode

Qu Wenruo (4):
      btrfs: populate extent_map::generation when reading from disk
      btrfs: unify the error handling pattern for read_tree_block()
      btrfs: unify the error handling of btrfs_read_buffer()
      btrfs: verify the tranisd of the to-be-written dirty extent buffer

Sahil Kang (2):
      btrfs: reuse existing pointers from btrfs_ioctl
      btrfs: reuse existing inode from btrfs_ioctl

Sidong Yang (2):
      btrfs: qgroup: remove duplicated check in adding qgroup relations
      btrfs: qgroup: remove outdated TODO comments

Sweet Tea Dorminy (1):
      btrfs: add filesystems state details to error messages

 fs/btrfs/backref.c                |    7 +-
 fs/btrfs/block-group.c            |   36 +-
 fs/btrfs/block-group.h            |    1 +
 fs/btrfs/btrfs_inode.h            |   42 +-
 fs/btrfs/compression.c            |   63 +-
 fs/btrfs/compression.h            |   10 +-
 fs/btrfs/ctree.c                  |  108 ++--
 fs/btrfs/ctree.h                  |   83 ++-
 fs/btrfs/delalloc-space.c         |   18 +-
 fs/btrfs/dev-replace.c            |   18 +-
 fs/btrfs/disk-io.c                |  219 +++++--
 fs/btrfs/disk-io.h                |    2 +
 fs/btrfs/extent-tree.c            |  148 +++--
 fs/btrfs/extent_io.c              |   45 +-
 fs/btrfs/extent_map.c             |    4 +
 fs/btrfs/file-item.c              |   76 +--
 fs/btrfs/file.c                   |   79 ++-
 fs/btrfs/free-space-tree.c        |    2 +
 fs/btrfs/inode.c                  | 1183 +++++++++++++++++++++++++++++--------
 fs/btrfs/ioctl.c                  |  309 ++++++++--
 fs/btrfs/lzo.c                    |   11 +-
 fs/btrfs/ordered-data.c           |  132 ++---
 fs/btrfs/ordered-data.h           |   25 +-
 fs/btrfs/print-tree.c             |    5 +-
 fs/btrfs/qgroup.c                 |   72 ++-
 fs/btrfs/reflink.c                |   43 +-
 fs/btrfs/relocation.c             |   11 +-
 fs/btrfs/scrub.c                  |    2 +-
 fs/btrfs/send.c                   |   11 +-
 fs/btrfs/send.h                   |    2 +-
 fs/btrfs/space-info.c             |    5 +-
 fs/btrfs/super.c                  |   96 ++-
 fs/btrfs/sysfs.c                  |   15 +-
 fs/btrfs/tests/extent-map-tests.c |    2 +
 fs/btrfs/transaction.c            |   19 +-
 fs/btrfs/transaction.h            |    2 +-
 fs/btrfs/tree-checker.c           |   35 +-
 fs/btrfs/tree-log.c               |  982 ++++++++++++++++++------------
 fs/btrfs/tree-log.h               |    7 +-
 fs/btrfs/volumes.c                |  147 ++---
 fs/btrfs/volumes.h                |    7 +-
 fs/btrfs/zoned.c                  |  167 ++++--
 fs/internal.h                     |    5 -
 fs/ioctl.c                        |    4 -
 fs/read_write.c                   |   34 +-
 fs/remap_range.c                  |    7 +-
 include/linux/fs.h                |    2 +
 include/trace/events/btrfs.h      |    1 +
 include/uapi/linux/btrfs.h        |  133 +++++
 include/uapi/linux/btrfs_tree.h   |    3 +
 50 files changed, 3109 insertions(+), 1331 deletions(-)

             reply	other threads:[~2022-03-22  1:13 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-21 21:33 David Sterba [this message]
2022-03-22  2:35 ` [GIT PULL] Btrfs updates for 5.18 Linus Torvalds
2022-03-22 18:23 ` Linus Torvalds
2022-03-22 20:55   ` Josef Bacik
2022-03-22 21:15     ` Linus Torvalds
2022-03-22 21:19     ` Darrick J. Wong
2022-03-24 10:10       ` Amir Goldstein
2022-03-22 22:09   ` Amir Goldstein
2022-03-22 18:32 ` 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.1647894991.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).