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.5
Date: Fri, 22 Nov 2019 17:23:44 +0100	[thread overview]
Message-ID: <cover.1574439340.git.dsterba@suse.com> (raw)

Hi,

there are some new features, followed by cleanups. Please pull, thanks.

User visible changes:

- new block group profiles: RAID1 with 3- and 4- copies
  - RAID1 in btrfs has always 2 copies, now add support for 3 and 4
  - this is an incompat feature (named RAID1C34)
  - recommended use of RAID1C3 is replacement of RAID6 profile on metadata,
    this brings a more reliable resiliency against 2 device loss/damage

- support for new checksums
  - per-filesystem, set at mkfs time
  - fast hash (crc32c successor): xxhash, 64bit digest
  - strong hashes (both 256bit): sha256 (slower, FIPS), blake2b (faster)
  - the blake2b module goes via the crypto tree, btrfs.ko has a soft
    dependency

- speed up lseek, don't take inode locks unnecessarily, this can speed up
  parallel SEEK_CUR/SEEK_SET/SEEK_END by 80%

- send:
  - allow clone operations within the same file
  - limit maximum number of sent clone references to avoid slow backref walking

- error message improvements: device scan prints process name and PID

Core changes:

- cleanups
  - remove unique workqueue helpers, used to provide a way to avoid deadlocks
    in the workqueue code, now done in a simpler way
  - remove lots of indirect function calls in compression code
  - extent IO tree code moved out of extent_io.c
  - cleanup backup superblock handling at mount time
  - transaction life cycle documentation and cleanups
  - locking code cleanups, annotations and documentation
  - add more cold, const, pure function attributes
  - removal of unused or redundant struct members or variables

- new tree-checker sanity tests
  - try to detect missing INODE_ITEM, cross-reference checks of DIR_ITEM,
    DIR_INDEX, INODE_REF, and XATTR_* items

- remove own bio scheduling code (used to avoid checksum submissions being
  stuck behind other IO), replaced by cgroup controller-based code to allow
  better control and avoid priority inversions in cases where the custom and
  cgroup scheduling disagreed

Fixes:

- avoid getting stuck during cyclic writebacks

- fix trimming of ranges crossing block group boundaries

- fix rename exchange on subvolumes, all involved subvolumes need to be
  recorded in the transaction

----------------------------------------------------------------
The following changes since commit af42d3466bdc8f39806b26f593604fdc54140bcb:

  Linux 5.4-rc8 (2019-11-17 14:47:30 -0800)

are available in the Git repository at:

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

for you to fetch changes up to fa17ed069c61286b26382e23b57a62930657b9c1:

  btrfs: drop bdev argument from submit_extent_page (2019-11-18 23:43:58 +0100)

----------------------------------------------------------------
Anand Jain (3):
      btrfs: balance: use term redundancy instead of integrity in message
      btrfs: print process name and pid that calls device scanning
      btrfs: use bool argument in free_root_pointers()

Chengguang Xu (3):
      btrfs: props: remove unnecessary hash_init()
      btrfs: use enum for extent type defines
      btrfs: use better definition of number of compression type

Chris Mason (5):
      Btrfs: stop using btrfs_schedule_bio()
      Btrfs: delete the entire async bio submission framework
      Btrfs: only associate the locked page with one async_chunk struct
      Btrfs: use REQ_CGROUP_PUNT for worker thread submitted bios
      Btrfs: extent_write_locked_range() should attach inode->i_wb

Dan Carpenter (1):
      btrfs: clean up locking name in scrub_enumerate_chunks()

David Sterba (54):
      btrfs: make locking assertion helpers static inline
      btrfs: make btrfs_assert_tree_locked static inline
      btrfs: move btrfs_set_path_blocking to other locking functions
      btrfs: move btrfs_unlock_up_safe to other locking functions
      btrfs: add 64bit safe helper for power of two checks
      btrfs: use has_single_bit_set for clarity
      btrfs: drop unused parameter is_new from btrfs_iget
      btrfs: add __cold attribute to more functions
      btrfs: add const function attribute
      btrfs: add __pure attribute to functions
      btrfs: opencode extent_buffer_get
      btrfs: export compression and decompression callbacks
      btrfs: switch compression callbacks to direct calls
      btrfs: compression: attach workspace manager to the ops
      btrfs: compression: let workspace manager init take only the type
      btrfs: compression: inline init_workspace_manager
      btrfs: compression: let workspace manager cleanup take only the type
      btrfs: compression: inline cleanup_workspace_manager
      btrfs: compression: export alloc/free/get/put callbacks of all algos
      btrfs: compression: inline get_workspace
      btrfs: compression: inline put_workspace
      btrfs: compression: pass type to btrfs_get_workspace
      btrfs: compression: inline alloc_workspace
      btrfs: compression: pass type to btrfs_put_workspace
      btrfs: compression: inline free_workspace
      btrfs: compression: remove ops pointer from workspace_manager
      btrfs: tracepoints: drop typecasts from printk
      btrfs: tracepoints: constify all pointers
      btrfs: assert extent_map bdevs and lookup_map and split
      btrfs: get bdev from latest_dev for dio bh_result
      btrfs: sysfs: export supported checksums
      btrfs: add member for a specific checksum driver
      btrfs: add blake2b to checksumming algorithms
      btrfs: move block_group_item::used to block group
      btrfs: move block_group_item::flags to block group
      btrfs: remove embedded block_group_cache::item
      btrfs: rename block_group_item on-stack accessors to follow naming
      btrfs: rename extent buffer block group item accessors
      btrfs: add dedicated members for start and length of a block group
      btrfs: sink write_flags to __extent_writepage_io
      btrfs: sink write flags to cow_file_range_async
      btrfs: add support for 3-copy replication (raid1c3)
      btrfs: add support for 4-copy replication (raid1c4)
      btrfs: add incompat for raid1 with 3, 4 copies
      btrfs: drop incompat bit for raid1c34 after last block group is gone
      btrfs: merge blocking_writers branches in btrfs_tree_read_lock
      btrfs: set blocking_writers directly, no increment or decrement
      btrfs: access eb::blocking_writers according to ACCESS_ONCE policies
      btrfs: document extent buffer locking
      btrfs: rename btrfs_block_group_cache
      btrfs: get bdev directly from fs_devices in submit_extent_page
      btrfs: drop bio_set_dev where not needed
      btrfs: remove extent_map::bdev
      btrfs: drop bdev argument from submit_extent_page

Filipe Manana (8):
      Btrfs: make btrfs_wait_extents() static
      Btrfs: fix negative subv_writers counter and data space leak after buffered write
      Btrfs: fix metadata space leak on fixup worker failure to set range as delalloc
      Btrfs: remove wait queue from space_info structure
      Btrfs: remove unnecessary delalloc mutex for inodes
      Btrfs: send, allow clone operations within the same file
      Btrfs: send, skip backreference walking for extents with many references
      Btrfs: fix block group remaining RO forever after error during device replace

Goldwyn Rodrigues (1):
      btrfs: simplify inode locking for RWF_NOWAIT

Johannes Thumshirn (10):
      btrfs: raid56: reduce indentation in lock_stripe_add
      btrfs: remove pointless local variable in lock_stripe_add()
      btrfs: reduce indentation in btrfs_may_alloc_data_chunk
      btrfs: remove pointless indentation in btrfs_read_sys_array()
      btrfs: add xxhash64 to checksumming algorithms
      btrfs: add sha256 to checksumming algorithm
      btrfs: sysfs: show used checksum driver per filesystem
      btrfs: remove cached space_info in btrfs_statfs()
      btrfs: change btrfs_fs_devices::seeding to bool
      btrfs: change btrfs_fs_devices::rotating to bool

Josef Bacik (9):
      btrfs: separate out the extent leak code
      btrfs: separate out the extent io init function
      btrfs: move extent_io_tree defs to their own header
      btrfs: export find_delalloc_range
      btrfs: move the failrec tree stuff into extent-io-tree.h
      btrfs: use refcount_inc_not_zero in kill_all_nodes
      btrfs: check page->mapping when loading free space cache
      btrfs: use btrfs_block_group_cache_done in update_block_group
      btrfs: record all roots for rename exchange on a subvol

Marcos Paulo de Souza (2):
      btrfs: block-group: Rework documentation of check_system_chunk function
      btrfs: ioctl: Try to use btrfs_fs_info instead of *file

Nikolay Borisov (17):
      btrfs: Add assert to catch nested transaction commit
      btrfs: Don't opencode btrfs_find_name_in_backref in backref_in_log
      btrfs: Properly handle backref_in_log retval
      btrfs: Open-code name_in_log_ref in replay_one_name
      btrfs: User assert to document transaction requirement
      btrfs: Rename btrfs_join_transaction_nolock
      btrfs: Speed up btrfs_file_llseek
      btrfs: Simplify btrfs_file_llseek
      btrfs: Return offset from find_desired_extent
      btrfs: Cleanup and simplify find_newest_super_backup
      btrfs: Remove newest_gen argument from find_oldest_super_backup
      btrfs: Add read_backup_root
      btrfs: Factor out tree roots initialization during mount
      btrfs: Don't use objectid_mutex during mount
      btrfs: Remove unused next_root_backup function
      btrfs: Rename find_oldest_super_backup to init_backup_root_slot
      btrfs: Streamline btrfs_fs_info::backup_root_index semantics

Omar Sandoval (7):
      btrfs: get rid of unnecessary memset() of work item
      btrfs: don't prematurely free work in run_ordered_work()
      btrfs: don't prematurely free work in end_workqueue_fn()
      btrfs: don't prematurely free work in reada_start_machine_worker()
      btrfs: don't prematurely free work in scrub_missing_raid56_worker()
      btrfs: get rid of unique workqueue helper functions
      btrfs: get rid of pointless wtag variable in async-thread.c

Qu Wenruo (16):
      btrfs: tree-checker: Try to detect missing INODE_ITEM
      btrfs: tree-checker: Add check for INODE_REF
      btrfs: ctree: Reduce one indent level for btrfs_search_slot()
      btrfs: ctree: Reduce one indent level for btrfs_search_old_slot()
      btrfs: ctree: Remove stray comment of setting up path lock
      btrfs: transaction: describe transaction states and transitions
      btrfs: transaction: Cleanup unused TRANS_STATE_BLOCKED
      btrfs: tree-checker: Refactor prev_key check for ino into a function
      btrfs: Enhance error output for write time tree checker
      btrfs: Remove btrfs_bio::flags member
      btrfs: tree-checker: Check item size before reading file extent type
      btrfs: volumes: Use more straightforward way to calculate map length
      btrfs: Ensure we trim ranges across block group boundary
      btrfs: block-group: Refactor btrfs_read_block_groups()
      btrfs: block-group: Reuse the item key from caller of read_one_block_group()
      btrfs: scrub: Don't check free space before marking a block group RO

Tejun Heo (1):
      btrfs: Avoid getting stuck during cyclic writebacks

 fs/btrfs/Kconfig                       |   2 +
 fs/btrfs/async-thread.c                | 113 +++----
 fs/btrfs/async-thread.h                |  37 +--
 fs/btrfs/block-group.c                 | 589 +++++++++++++++++----------------
 fs/btrfs/block-group.h                 |  51 +--
 fs/btrfs/btrfs_inode.h                 |   3 -
 fs/btrfs/compression.c                 | 269 +++++++++++----
 fs/btrfs/compression.h                 |  46 +--
 fs/btrfs/ctree.c                       | 287 +++++++---------
 fs/btrfs/ctree.h                       |  51 +--
 fs/btrfs/delalloc-space.c              |  21 +-
 fs/btrfs/delayed-inode.c               |  18 +-
 fs/btrfs/dev-replace.c                 |   2 +-
 fs/btrfs/dev-replace.h                 |   2 +-
 fs/btrfs/disk-io.c                     | 365 ++++++++++----------
 fs/btrfs/disk-io.h                     |   4 +-
 fs/btrfs/export.c                      |   4 +-
 fs/btrfs/extent-io-tree.h              | 248 ++++++++++++++
 fs/btrfs/extent-tree.c                 | 146 ++++----
 fs/btrfs/extent_io.c                   | 120 ++++---
 fs/btrfs/extent_io.h                   | 231 +------------
 fs/btrfs/extent_map.c                  |   6 +-
 fs/btrfs/extent_map.h                  |  11 +-
 fs/btrfs/file-item.c                   |   1 -
 fs/btrfs/file.c                        |  74 ++---
 fs/btrfs/free-space-cache.c            | 118 +++----
 fs/btrfs/free-space-cache.h            |  39 +--
 fs/btrfs/free-space-tree.c             | 133 ++++----
 fs/btrfs/free-space-tree.h             |  18 +-
 fs/btrfs/inode.c                       | 170 ++++++----
 fs/btrfs/ioctl.c                       |  49 ++-
 fs/btrfs/locking.c                     | 309 ++++++++++++++---
 fs/btrfs/locking.h                     |  13 +-
 fs/btrfs/lzo.c                         |  53 +--
 fs/btrfs/misc.h                        |  11 +
 fs/btrfs/ordered-data.c                |   7 +-
 fs/btrfs/ordered-data.h                |   2 +-
 fs/btrfs/print-tree.c                  |   6 +-
 fs/btrfs/props.c                       |   6 +-
 fs/btrfs/qgroup.c                      |  11 +-
 fs/btrfs/qgroup.h                      |   2 +-
 fs/btrfs/raid56.c                      | 101 +++---
 fs/btrfs/reada.c                       |  19 +-
 fs/btrfs/relocation.c                  |  43 ++-
 fs/btrfs/scrub.c                       | 100 +++---
 fs/btrfs/send.c                        |  45 ++-
 fs/btrfs/space-info.c                  |   8 +-
 fs/btrfs/space-info.h                  |   3 +-
 fs/btrfs/super.c                       |  26 +-
 fs/btrfs/sysfs.c                       |  47 ++-
 fs/btrfs/sysfs.h                       |   2 +-
 fs/btrfs/tests/btrfs-tests.c           |  11 +-
 fs/btrfs/tests/btrfs-tests.h           |   4 +-
 fs/btrfs/tests/free-space-tests.c      |  15 +-
 fs/btrfs/tests/free-space-tree-tests.c | 101 +++---
 fs/btrfs/transaction.c                 |  98 +++++-
 fs/btrfs/transaction.h                 |   5 +-
 fs/btrfs/tree-checker.c                | 211 +++++++++---
 fs/btrfs/tree-log.c                    | 136 ++++----
 fs/btrfs/volumes.c                     | 494 ++++++++-------------------
 fs/btrfs/volumes.h                     |  24 +-
 fs/btrfs/zlib.c                        |  52 +--
 fs/btrfs/zstd.c                        |  47 +--
 include/trace/events/btrfs.h           | 131 ++++----
 include/uapi/linux/btrfs.h             |   5 +-
 include/uapi/linux/btrfs_tree.h        |  23 +-
 66 files changed, 2780 insertions(+), 2619 deletions(-)
 create mode 100644 fs/btrfs/extent-io-tree.h

             reply	other threads:[~2019-11-22 16:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-22 16:23 David Sterba [this message]
2019-11-25 22:45 ` [GIT PULL] Btrfs updates for 5.5 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.1574439340.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.