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>,
	clm@fb.com, linux-btrfs@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] Btrfs updates for 4.19
Date: Mon, 13 Aug 2018 14:54:07 +0200	[thread overview]
Message-ID: <cover.1534161966.git.dsterba@suse.com> (raw)

Hi,

there are mostly fixes and cleanups, nothing big, though the notable
thing is the inserted/deleted lines delta -1124.

There are no known pending merge conflicts with other trees. Please
pull, thanks.


User visible changes:

* allow defrag on opened read-only files that have rw permissions; similar
  to what dedupe will allow on such files


Core changes:

* tree checker improvements, reported by fuzzing:
  * more checks for: block group items, essential trees
  * chunk type validation
  * mount time cross-checks that physical and logical chunks match
  * switch more error codes to EUCLEAN aka. EFSCORRUPTED


Fixes:

* fsync corner case fixes

* fix send failure when root has deleted files still open

* send, fix incorrect file layout after hole punching beyond eof

* fix races between mount and deice scan ioctl, found by fuzzing

* fix deadlock when delayed iput is called from writeback on the same
  inode; rare but has been observed in practice, also removes code

* fix pinned byte accounting, using the right percpu helpers; this should
  avoid some write IO inefficiency during low space conditions

* don't remove block group that still has pinned bytes

* reset on-disk device stats value after replace, otherwise this would
  report stale values for the new device


Cleanups:

* time64_t/timespec64 cleanups

* remove remaining dead code in scrub handling NOCOW extents after
  disabling it in previous cycle

* simplify fsync regarding ordered extents logic and remove all the
  related code

* remove redundant arguments in order to reduce stack space consumption

* remove support for V0 type of extents, not in use since 2.6.30

* remove several unused structure members

* fewer indirect function calls by inlining some callbacks

* qgroup rescan timing fixes

* vfs: iget cleanups

----------------------------------------------------------------
The following changes since commit 1ffaddd029c867d134a1dde39f540dcc8c52e274:

  Linux 4.18-rc8 (2018-08-05 12:37:41 -0700)

are available in the Git repository at:

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

for you to fetch changes up to 39379faaad79e3cf403a6904a08676b7850043ae:

  btrfs: revert fs_devices state on error of btrfs_init_new_device (2018-08-06 13:13:04 +0200)

----------------------------------------------------------------
Adam Borowski (1):
      btrfs: allow defrag on a file opened read-only that has rw permissions

Al Viro (4):
      btrfs: btrfs_iget never returns an is_bad_inode inode
      btrfs: simplify IS_ERR/PTR_ERR checks
      btrfs: lift make_bad_inode into btrfs_iget
      btrfs: simplify btrfs_iget

Allen Pais (1):
      btrfs: replace get_seconds with new 64bit time API

Anand Jain (9):
      btrfs: use a temporary variable for fs_devices in btrfs_init_new_device
      btrfs: drop unnecessary variable in btrfs_init_new_device
      btrfs: fix in-memory value of total_devices after seed device deletion
      btrfs: do btrfs_free_stale_devices outside of device_list_add
      btrfs: extend locked section when adding a new device in device_list_add
      btrfs: rename local devices for fs_devices in btrfs_free_stale_devices(
      btrfs: use device_list_mutex when removing stale devices
      btrfs: rename btrfs_parse_early_options
      btrfs: use the assigned fs_devices instead of the dereference

Arnd Bergmann (2):
      btrfs: use monotonic time for transaction handling
      btrfs: use timespec64 for i_otime

Bart Van Assche (3):
      btrfs: Fix misleading indentation reported by smatch
      btrfs: Annotate fall-through when parsing mount option
      btrfs: Fix a C compliance issue

Chengguang Xu (5):
      btrfs: return error instead of crash when detecting unexpected type in btrfs_get_acl
      btrfs: replace empty string with NULL when getting attribute length in btrfs_get_acl
      btrfs: remove unnecessary -ERANGE check in btrfs_get_acl
      btrfs: avoid error code override in btrfs_get_acl
      btrfs: remove unnecessary curly braces in btrfs_get_acl

David Sterba (34):
      btrfs: remove remaing full_sync logic from btrfs_sync_file
      btrfs: annotate unlikely branches after V0 extent type removal
      btrfs: simplify some assignments of inode numbers
      btrfs: simplify pointer chasing of local fs_info variables
      btrfs: use copy_page for copying pages instead of memcpy
      btrfs: prune unused includes
      btrfs: pass only eb to num_extent_pages
      btrfs: use round_up wrapper in num_extent_pages
      btrfs: switch types to int when counting eb pages
      btrfs: open-code bio_set_op_attrs
      btrfs: raid56: add new helper for starting async work
      btrfs: raid56: use new helper for async_rmw_stripe
      btrfs: raid56: use new helper for async_read_rebuild
      btrfs: raid56: use new helper for async_scrub_parity
      btrfs: raid56: merge rbio_is_full helpers
      btrfs: raid56: catch errors from full_stripe_write
      btrfs: lift uuid_mutex to callers of btrfs_scan_one_device
      btrfs: lift uuid_mutex to callers of btrfs_open_devices
      btrfs: lift uuid_mutex to callers of btrfs_parse_early_options
      btrfs: reorder initialization before the mount locks uuid_mutex
      btrfs: fix mount and ioctl device scan ioctl race
      btrfs: refactor block group replication factor calculation to a helper
      btrfs: rename btrfs_release_extent_buffer_page
      btrfs: remove unused member async_submit_bio::fs_info
      btrfs: remove unused member async_submit_bio::bio_flags
      btrfs: unify end_io callbacks of async_submit_bio
      btrfs: drop extent_io_ops::tree_fs_info callback
      btrfs: drop extent_io_ops::merge_bio_hook callback
      btrfs: drop extent_io_ops::set_range_writeback callback
      btrfs: remove unused member btrfs_root::name
      btrfs: dev-replace: remove unused members of btrfs_dev_replace
      btrfs: constify strings passed to assertion helper
      btrfs: merge free_fs_root helpers
      btrfs: extent-tree: remove unused member walk_control::for_reloc

Ethan Lien (2):
      btrfs: use correct compare function of dirty_metadata_bytes
      btrfs: use customized batch size for total_bytes_pinned

Filipe Manana (4):
      Btrfs: remove unused key assignment when doing a full send
      Btrfs: fix mount failure after fsync due to hard link recreation
      Btrfs: fix send failure when root has deleted files still open
      Btrfs: send, fix incorrect file layout after hole punching beyond eof

Geert Uytterhoeven (1):
      btrfs: Refactor count handling in btrfs_unpin_free_ino

Goldwyn Rodrigues (1):
      btrfs: Use iocb to derive pos instead of passing a separate parameter

Gu Jinxiang (4):
      btrfs: remove unused parameter from btrfs_parse_subvol_options
      btrfs: make fs_devices a local variable in btrfs_parse_early_options
      btrfs: return device pointer from btrfs_scan_one_device
      btrfs: validate type when reading a chunk

Josef Bacik (6):
      btrfs: always wait on ordered extents at fsync time
      btrfs: remove the wait ordered logic in the log_one_extent path
      btrfs: clean up the left over logged_list usage
      btrfs: remove the logged extents infrastructure
      Btrfs: fix btrfs_write_inode vs delayed iput deadlock
      btrfs: don't leak ret from do_chunk_alloc

Lu Fengqi (27):
      btrfs: qgroup: cleanup the unused srcroot from btrfs_qgroup_inherit
      btrfs: qgroup: Drop quota_root parameter from add_qgroup_relation_item
      btrfs: qgroup: Drop quota_root parameter from del_qgroup_relation_item
      btrfs: qgroup: Drop quota_root parameter from del_qgroup_item
      btrfs: qgroup: Drop root parameter from update_qgroup_limit_item
      btrfs: qgroup: Drop root parameter from update_qgroup_info_item
      btrfs: qgroup: Drop quota_root and fs_info parameters from update_qgroup_status_item
      btrfs: qgroup: Drop fs_info parameter from btrfs_add_qgroup_relation
      btrfs: qgroup: Drop fs_info parameter from __del_qgroup_relation
      btrfs: qgroup: Drop fs_info parameter from btrfs_del_qgroup_relation
      btrfs: qgroup: Drop fs_info parameter from btrfs_create_qgroup
      btrfs: qgroup: Drop fs_info parameter from btrfs_remove_qgroup
      btrfs: qgroup: Drop fs_info parameter from btrfs_limit_qgroup
      btrfs: qgroup: Drop fs_info parameter from btrfs_qgroup_trace_extent
      btrfs: qgroup: Drop fs_info parameter from btrfs_qgroup_trace_leaf_items
      btrfs: qgroup: Drop root parameter from btrfs_qgroup_trace_subtree
      btrfs: qgroup: Drop fs_info parameter from btrfs_qgroup_account_extent
      btrfs: qgroup: Drop fs_info parameter from btrfs_run_qgroups
      btrfs: qgroup: Drop fs_info parameter from btrfs_qgroup_inherit
      btrfs: qgroup: Drop fs_info parameter from qgroup_rescan_leaf
      btrfs: Remove fs_info from btrfs_insert_delayed_dir_index
      btrfs: Remove fs_info from btrfs_delete_delayed_dir_index
      btrfs: Remove fs_info from btrfs_del_root
      btrfs: Remove fs_info from btrfs_del_root_ref
      btrfs: Remove fs_info from btrfs_add_root_ref
      btrfs: Remove root parameter from btrfs_unlink_subvol
      btrfs: Remove redundant btrfs_release_path from btrfs_unlink_subvol

Misono Tomohiro (4):
      btrfs: backref: Use ERR_CAST to return error code
      btrfs: extent-tree: Remove unused __btrfs_free_block_rsv
      btrfs: replace: Reset on-disk dev stats value after replace
      btrfs: Use wrapper macro for rcu string to remove duplicate code

Naohiro Aota (1):
      btrfs: revert fs_devices state on error of btrfs_init_new_device

Nikolay Borisov (55):
      btrfs: Document __btrfs_inc_extent_ref
      btrfs: Fix comment in lookup_inline_extent_backref
      btrfs: Streamline log_extent_csums a bit
      btrfs: Remove fs_info from insert_tree_block_ref
      btrfs: Remove fs_info from insert_extent_data_ref
      btrfs: Remove fs_info argument from insert_extent_backref
      btrfs: Remove fs_info from remove_extent_data_ref
      btrfs: Remove fs_info from fixup_low_keys
      btrfs: Remove fs_info from lookup_inline_extent_backref
      btrfs: Remove fs_info argument from update_inline_extent_backref
      btrfs: Remove fs_info argument from lookup_tree_block_ref
      btrfs: Remove fs_info argument from lookup_extent_data_ref
      btrfs: Remove fs_info from lookup_extent_backref
      btrfs: Remove fs_info from btrfs_add_delayed_tree_ref
      btrfs: Remove fs_info from btrfs_add_delayed_data_ref
      btrfs: Remove fs_info from btrfs_make_block_group
      btrfs: Remove fs_info from btrfs_remove_block_group
      btrfs: Remove fs_info from __btrfs_free_extent
      btrfs: Remove fs_info from alloc_reserved_file_extent
      btrfs: Remove fs_info argument from __btrfs_inc_extent_ref
      btrfs: Remove fs_info from run_delayed_data_ref
      btrfs: Remove fs_info from run_delayed_extent_op
      btrfs: Remove unused fs_info from cleanup_extent_op
      btrfs: Remove fs_info from cleanup_ref_head
      btrfs: Remove fs_info from run_delayed_tree_ref
      btrfs: Remove fs_info from do_chunk_alloc
      btrfs: Remove fs_info from btrfs_alloc_chunk
      btrfs: Remove fs_info from check_system_chunk
      btrfs: Remove fs_info from free_excluded_extents
      btrfs: Remove fs_info from exclude_super_stripes
      btrfs: Remove fs_info from insert_inline_extent_backref
      btrfs: Remove fs_info from run_one_delayed_ref
      btrfs: Remove fs_info from remove_extent_backref
      btrfs: Remove fs_info from btrfs_alloc_logged_file_extent
      btrfs: Remove fs_info from btrfs_inc_block_group_ro
      btrfs: Remove fs_info from btrfs_force_chunk_alloc
      btrfs: Deduplicate extent_buffer init code
      btrfs: Streamline memory allocation failure handling in btrfs_add_delayed_tree_ref
      btrfs: Remove V0 extent support
      btrfs: Add graceful handling of V0 extents
      btrfs: qgroups: Move transaction management inside btrfs_quota_enable/disable
      btrfs: close devices without offloading to a temporary list
      btrfs: Rewrite retry logic in do_chunk_alloc
      btrfs: Simplify page unlocking in alloc_extent_buffer
      btrfs: Reword dodgy comments in alloc_extent_buffer
      btrfs: Refactor loop in btrfs_release_extent_buffer_page
      btrfs: Document locking requirement via lockdep_assert_held
      btrfs: Rename EXTENT_BUFFER_DUMMY to EXTENT_BUFFER_UNMAPPED
      btrfs: Remove fs_info argument from btrfs_add_dev_item
      btrfs: Remove fs_info from btrfs_rm_dev_replace_remove_srcdev
      btrfs: remove fs_info argument from update_dev_stat_item
      btrfs: Remove fs_info from btrfs_assign_next_active_device
      btrfs: Remove fs_info from btrfs_destroy_dev_replace_tgtdev
      btrfs: Remove fs_info form btrfs_free_chunk
      btrfs: Remove fs_info from btrfs_finish_chunk_alloc

Qu Wenruo (15):
      btrfs: scrub: Remove unused copy_nocow_pages and its callchain
      btrfs: check-integrity: Fix NULL pointer dereference for degraded mount
      btrfs: Get rid of the confusing btrfs_file_extent_inline_len
      btrfs: Don't remove block group that still has pinned down bytes
      btrfs: tree-checker: Verify block_group_item
      btrfs: tree-checker: Detect invalid and empty essential trees
      btrfs: relocation: Only remove reloc rb_trees if reloc control has been initialized
      btrfs: Remove unused function btrfs_account_dev_extents_size
      btrfs: Use btrfs_mark_bg_unused to replace open code
      btrfs: scrub: cleanup the remaining nodatasum fixup code
      btrfs: extent-tree: Remove dead alignment check
      btrfs: Check that each block group has corresponding chunk at mount time
      btrfs: Verify that every chunk has corresponding block group at mount time
      btrfs: Introduce mount time chunk <-> dev extent mapping check
      btrfs: Exit gracefully when chunk map cannot be inserted to the tree

Su Yue (2):
      btrfs: print more details when checking tree block finds a problem
      btrfs: return EUCLEAN if extent_inline_ref type is invalid

Zhihui Zhang (1):
      Btrfs: free space cache: make sure there is always room for generation number

 fs/btrfs/acl.c                |  13 +-
 fs/btrfs/backref.c            |   6 +-
 fs/btrfs/btrfs_inode.h        |   2 +-
 fs/btrfs/check-integrity.c    |   9 +-
 fs/btrfs/compression.c        |  18 +-
 fs/btrfs/ctree.c              |  53 +--
 fs/btrfs/ctree.h              |  89 ++---
 fs/btrfs/delayed-inode.c      |  14 +-
 fs/btrfs/delayed-inode.h      |   2 -
 fs/btrfs/delayed-ref.c        |  43 +-
 fs/btrfs/delayed-ref.h        |   6 +-
 fs/btrfs/dev-replace.c        |  29 +-
 fs/btrfs/dir-item.c           |   4 +-
 fs/btrfs/disk-io.c            | 113 ++----
 fs/btrfs/disk-io.h            |   5 +-
 fs/btrfs/extent-tree.c        | 883 +++++++++++++++++++-----------------------
 fs/btrfs/extent_io.c          | 156 ++++----
 fs/btrfs/extent_io.h          |  16 +-
 fs/btrfs/file-item.c          |   4 +-
 fs/btrfs/file.c               | 128 +-----
 fs/btrfs/free-space-cache.c   |  19 +-
 fs/btrfs/free-space-tree.c    |   2 +-
 fs/btrfs/inode-map.c          |  12 +-
 fs/btrfs/inode.c              | 161 +++-----
 fs/btrfs/ioctl.c              |  69 ++--
 fs/btrfs/ordered-data.c       | 138 -------
 fs/btrfs/ordered-data.h       |  23 +-
 fs/btrfs/print-tree.c         |  39 +-
 fs/btrfs/qgroup.c             | 270 +++++++------
 fs/btrfs/qgroup.h             |  46 +--
 fs/btrfs/raid56.c             | 109 ++----
 fs/btrfs/reada.c              |   3 +-
 fs/btrfs/relocation.c         | 216 ++---------
 fs/btrfs/root-tree.c          |  22 +-
 fs/btrfs/scrub.c              | 679 +-------------------------------
 fs/btrfs/send.c               | 172 ++++++--
 fs/btrfs/struct-funcs.c       |   1 -
 fs/btrfs/super.c              | 115 +++---
 fs/btrfs/sysfs.c              |   2 -
 fs/btrfs/tests/qgroup-tests.c |  24 +-
 fs/btrfs/transaction.c        |  11 +-
 fs/btrfs/transaction.h        |   2 +-
 fs/btrfs/tree-checker.c       | 115 +++++-
 fs/btrfs/tree-log.c           | 270 +++++--------
 fs/btrfs/volumes.c            | 611 ++++++++++++++++++-----------
 fs/btrfs/volumes.h            |  31 +-
 include/trace/events/btrfs.h  |   3 +-
 47 files changed, 1817 insertions(+), 2941 deletions(-)

             reply	other threads:[~2018-08-13 15:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-13 12:54 David Sterba [this message]
2018-08-14  8:50 ` [GIT PULL] Btrfs updates for 4.19 Stephen Rothwell
2018-08-14  9:14   ` David Sterba
2018-08-14  9:56     ` Stephen Rothwell

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.1534161966.git.dsterba@suse.com \
    --to=dsterba@suse.com \
    --cc=clm@fb.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.