[GIT,PULL] Btrfs updates for 5.3
mbox series

Message ID cover.1563178381.git.dsterba@suse.com
State New
Headers show
Series
  • [GIT,PULL] Btrfs updates for 5.3
Related show

Pull-request

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

Message

David Sterba July 15, 2019, 8:57 a.m. UTC
Hi,

there's majority of cleanups and refactoring, no big new features made
it to the final branch, the rest are fixes.

No merge conflicts. Please pull, thanks.

Hilights:

- chunks that have been trimmed and unchanged since last mount are
  tracked and skipped on repeated trims

- use hw assissed crc32c on more arches, speedups if native instructions
  or optimized implementation is available

- the RAID56 incompat bit is automatically removed when the last block
  group of that type is removed

Fixes:

- fsync fix for reflink on NODATACOW files that could lead to ENOSPC

- fix data loss after inode eviction, renaming it, and fsync it

- fix fsync not persisting dentry deletions due to inode evictions

- update ctime/mtime/iversion after hole punching

- fix compression type validation (reported by KASAN)

- send won't be allowed to start when relocation is in progress, this
  can cause spurious errors or produce incorrect send stream

Core:

- new tracepoints for space update

- tree-checker: better check for end of extents for some tree items

- preparatory work for more checksum algorithms

- run delayed iput at unlink time and don't push the work to cleaner
  thread where it's not properly throttled

- wrap block mapping to structures and helpers, base for further
  refactoring

- split large files, part 1:
  - space info handling
  - block group reservations
  - delayed refs
  - delayed allocation

- other cleanups and refactoring

----------------------------------------------------------------
The following changes since commit 6fbc7275c7a9ba97877050335f290341a1fd8dbf:

  Linux 5.2-rc7 (2019-06-30 11:25:36 +0800)

are available in the Git repository at:

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

for you to fetch changes up to e02d48eaaed77f6c36916a7aa65c451e1f9d9aab:

  btrfs: fix memory leak of path on error return path (2019-07-05 18:47:57 +0200)

----------------------------------------------------------------
Arnd Bergmann (1):
      btrfs: shut up bogus -Wmaybe-uninitialized warning

Colin Ian King (1):
      btrfs: fix memory leak of path on error return path

David Sterba (32):
      btrfs: detect fast implementation of crc32c on all architectures
      btrfs: fiemap: preallocate ulists for btrfs_check_shared
      btrfs: fix minimum number of chunk errors for DUP
      btrfs: raid56: allow the exact minimum number of devices for balance convert
      btrfs: remove mapping tree structures indirection
      btrfs: use raid_attr table in get_profile_num_devs
      btrfs: use raid_attr in btrfs_chunk_max_errors
      btrfs: use raid_attr to get allowed profiles for balance conversion
      btrfs: use raid_attr table to find profiles for integrity lowering
      btrfs: use raid_attr table for btrfs_bg_type_to_factor
      btrfs: factor out helper for counting data stripes
      btrfs: use u8 for raid_array members
      btrfs: factor out devs_max setting in __btrfs_alloc_chunk
      btrfs: refactor helper for bg flags to name conversion
      btrfs: constify map parameter for nr_parity_stripes and nr_data_stripes
      btrfs: read number of data stripes from map only once
      btrfs: use file:line format for assertion report
      btrfs: tests: add locks around add_extent_mapping
      btrfs: assert delayed ref lock in btrfs_find_delayed_ref_head
      btrfs: switch extent_buffer blocking_writers from atomic to int
      btrfs: switch extent_buffer spinning_writers from atomic to int
      btrfs: switch extent_buffer write_locks from atomic to int
      btrfs: raid56: clear incompat block group flags after removing the last one
      btrfs: add mask for all RAID1 types
      btrfs: use mask for RAID56 profiles
      btrfs: document BTRFS_MAX_MIRRORS
      btrfs: improve messages when updating feature flags
      btrfs: use common helpers for extent IO state insertion messages
      btrfs: drop default value assignments in enums
      btrfs: use raid_attr to adjust minimal stripe size in btrfs_calc_avail_data_space
      btrfs: use raid_attr for minimum stripe count in btrfs_calc_avail_data_space
      btrfs: lift bio_set_dev from bio allocation helpers

Filipe Manana (4):
      Btrfs: fix data loss after inode eviction, renaming it, and fsync it
      Btrfs: prevent send failures and crashes due to concurrent relocation
      Btrfs: fix fsync not persisting dentry deletions due to inode evictions
      Btrfs: add missing inode version, ctime and mtime updates when punching hole

Goldwyn Rodrigues (3):
      btrfs: Remove unused variable mode in btrfs_mount
      btrfs: Simplify update of space_info in __reserve_metadata_bytes()
      btrfs: Evaluate io_tree in find_lock_delalloc_range()

Johannes Thumshirn (13):
      btrfs: use btrfs_csum_data() instead of directly calling crc32c
      btrfs: resurrect btrfs_crc32c()
      btrfs: use btrfs_crc32c{,_final}() in for free space cache
      btrfs: don't assume ordered sums to be 4 bytes
      btrfs: don't assume compressed_bio sums to be 4 bytes
      btrfs: format checksums according to type for printing
      btrfs: add common checksum type validation
      btrfs: check for supported superblock checksum type before checksum validation
      btrfs: Simplify btrfs_check_super_csum() and get rid of size assumptions
      btrfs: add boilerplate code for directly including the crypto framework
      btrfs: directly call into crypto framework for checksumming
      btrfs: remove assumption about csum type form btrfs_print_data_csum_error()
      btrfs: correctly validate compression type

Josef Bacik (23):
      btrfs: run delayed iput at unlink time
      btrfs: move space_info to space-info.h
      btrfs: rename do_chunk_alloc to btrfs_chunk_alloc
      btrfs: export space_info_add_*_bytes
      btrfs: move the space_info handling code to space-info.c
      btrfs: move and export can_overcommit
      btrfs: move the space info update macro to space-info.h
      btrfs: move btrfs_space_info_add_*_bytes to space-info.c
      btrfs: export block_rsv_use_bytes
      btrfs: move dump_space_info to space-info.c
      btrfs: move reserve_metadata_bytes and supporting code to space-info.c
      btrfs: unexport can_overcommit
      btrfs: move btrfs_block_rsv definitions into it's own header
      btrfs: export btrfs_block_rsv_add_bytes
      btrfs: export __btrfs_block_rsv_release
      btrfs: cleanup the target logic in __btrfs_block_rsv_release
      btrfs: stop using block_rsv_release_bytes everywhere
      btrfs: migrate the block-rsv code to block-rsv.c
      btrfs: migrate the global_block_rsv helpers to block-rsv.c
      btrfs: migrate the delayed refs rsv code
      btrfs: migrate btrfs_trans_release_chunk_metadata
      btrfs: migrate the delalloc space stuff to it's own home
      btrfs: move the subvolume reservation stuff out of extent-tree.c

Liu Bo (1):
      Btrfs: remove unused variables in __btrfs_unlink_inode

Nikolay Borisov (17):
      btrfs: Don't opencode sync_blockdev in btrfs_init_dev_replace_tgtdev
      btrfs: Reduce critical section in btrfs_init_dev_replace_tgtdev
      btrfs: dev-replace: Remove impossible WARN_ON
      btrfs: Ensure btrfs_init_dev_replace_tgtdev sees up to date values
      btrfs: Streamline replace sem unlock in btrfs_dev_replace_start
      btrfs: Explicitly reserve space for devreplace item
      btrfs: Remove redundant assignment of tgt_device->commit_total_bytes
      btrfs: add new helper btrfs_lock_and_flush_ordered_range
      btrfs: Use newly introduced btrfs_lock_and_flush_ordered_range
      btrfs: Always use a cached extent_state in btrfs_lock_and_flush_ordered_range
      btrfs: Add comments on locking of several device-related fields
      btrfs: Return EAGAIN if we can't start no snpashot write in check_can_nocow
      btrfs: trim: make reserved device area adjustments more explicit
      btrfs: Don't trim returned range based on input value in find_first_clear_extent_bit
      btrfs: Document __etree_search
      btrfs: Introduce btrfs_io_geometry infrastructure
      btrfs: Use btrfs_get_io_geometry appropriately

Qu Wenruo (7):
      btrfs: extent-tree: Refactor add_pinned_bytes() to add|sub_pinned_bytes()
      btrfs: tree-checker: Check if the file extent end overflows
      btrfs: extent-tree: Add lockdep assert when updating space info
      btrfs: extent-tree: Add trace events for space info numbers update
      btrfs: remove the incorrect comment on RO fs when btrfs_run_delalloc_range() fails
      btrfs: Flush before reflinking any extent to prevent NOCOW write falling back to COW without data reservation
      btrfs: qgroup: Don't hold qgroup_ioctl_lock in btrfs_qgroup_inherit()

Su Yue (1):
      btrfs: switch order of unlocks of space_info and bg in do_trimming()

 fs/btrfs/Kconfig                  |    3 +-
 fs/btrfs/Makefile                 |    3 +-
 fs/btrfs/backref.c                |   17 +-
 fs/btrfs/backref.h                |    3 +-
 fs/btrfs/block-rsv.c              |  425 ++++++
 fs/btrfs/block-rsv.h              |  101 ++
 fs/btrfs/btrfs_inode.h            |   22 +-
 fs/btrfs/check-integrity.c        |   11 +-
 fs/btrfs/compression.c            |   65 +-
 fs/btrfs/compression.h            |    3 +-
 fs/btrfs/ctree.h                  |  282 ++--
 fs/btrfs/delalloc-space.c         |  494 +++++++
 fs/btrfs/delalloc-space.h         |   23 +
 fs/btrfs/delayed-ref.c            |  181 ++-
 fs/btrfs/delayed-ref.h            |   10 +
 fs/btrfs/dev-replace.c            |   31 +-
 fs/btrfs/disk-io.c                |  166 ++-
 fs/btrfs/disk-io.h                |    2 -
 fs/btrfs/extent-tree.c            | 2755 ++++---------------------------------
 fs/btrfs/extent_io.c              |  149 +-
 fs/btrfs/extent_io.h              |   10 +-
 fs/btrfs/file-item.c              |   43 +-
 fs/btrfs/file.c                   |   28 +-
 fs/btrfs/free-space-cache.c       |   16 +-
 fs/btrfs/inode-map.c              |    1 +
 fs/btrfs/inode.c                  |  109 +-
 fs/btrfs/ioctl.c                  |   23 +
 fs/btrfs/locking.c                |   62 +-
 fs/btrfs/ordered-data.c           |   56 +-
 fs/btrfs/ordered-data.h           |    8 +-
 fs/btrfs/print-tree.c             |    6 +-
 fs/btrfs/props.c                  |    8 +-
 fs/btrfs/qgroup.c                 |   24 +-
 fs/btrfs/raid56.h                 |    4 +-
 fs/btrfs/relocation.c             |    1 +
 fs/btrfs/root-tree.c              |   56 +
 fs/btrfs/scrub.c                  |   50 +-
 fs/btrfs/send.c                   |   16 +-
 fs/btrfs/space-info.c             | 1094 +++++++++++++++
 fs/btrfs/space-info.h             |  133 ++
 fs/btrfs/super.c                  |   30 +-
 fs/btrfs/sysfs.c                  |    1 +
 fs/btrfs/tests/extent-io-tests.c  |  117 +-
 fs/btrfs/tests/extent-map-tests.c |   22 +
 fs/btrfs/transaction.c            |   18 +
 fs/btrfs/transaction.h            |    1 +
 fs/btrfs/tree-checker.c           |   11 +
 fs/btrfs/tree-log.c               |   40 +-
 fs/btrfs/volumes.c                |  376 ++---
 fs/btrfs/volumes.h                |   52 +-
 include/trace/events/btrfs.h      |   40 +
 include/uapi/linux/btrfs_tree.h   |    2 +
 52 files changed, 3954 insertions(+), 3250 deletions(-)
 create mode 100644 fs/btrfs/block-rsv.c
 create mode 100644 fs/btrfs/block-rsv.h
 create mode 100644 fs/btrfs/delalloc-space.c
 create mode 100644 fs/btrfs/delalloc-space.h
 create mode 100644 fs/btrfs/space-info.c
 create mode 100644 fs/btrfs/space-info.h

Comments

pr-tracker-bot@kernel.org July 17, 2019, 2:05 a.m. UTC | #1
The pull request you sent on Mon, 15 Jul 2019 10:57:01 +0200:

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

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/a18f8775419d3df282dd83efdb51c5a64d092f31

Thank you!