2019-07-15 08:57:10

by David Sterba

[permalink] [raw]
Subject: [GIT PULL] Btrfs updates for 5.3

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


2019-07-17 02:06:07

by pr-tracker-bot

[permalink] [raw]
Subject: Re: [GIT PULL] Btrfs updates for 5.3

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!

--
Deet-doot-dot, I am a bot.
https://korg.wiki.kernel.org/userdoc/prtracker