[GIT PULL] xfs: 4.18 merge, part 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

Here's the first round of patches for XFS for 4.18.  New features this
cycle include the ability to relabel mounted filesystems, support for
fallocated swapfiles, and using FUA for pure data O_DSYNC directio
writes.  With this cycle we begin to integrate online filesystem repair
and refactor the growfs code in preparation for eventual subvolume
support, though the road ahead for both features is quite long.

There are also numerous refactorings of the iomap code to remove
unnecessary log overhead, to disentangle some of the quota code, and to
prepare for buffer head removal in a future upstream kernel.

Metadata validation continues to improve, both in the hot path veifiers
and the online filesystem check code.  I anticipate sending a second
pull request in a few days with more metadata validation improvements.

This series has been run through a full xfstests run over the weekend
and through a quick xfstests run against this morning's master, with no
major failures reported.

There's a merge conflict between one of the iomap refactorings and the
gfs2 changes in your master branch.  The file in question is
fs/gfs2/bmap.c.  I resolved the conflict and pushed the result as a
branch[1] into my git tree, and the resolved file should look like[2].
Let me know if things get hairy enough that you want me to take another
look at that.

--D

[1] https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/log/?h=xfs-4.18-merge-conflicts
[2] https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/diff/fs/gfs2/bmap.c?h=xfs-4.18-merge-conflicts&id=54195b796f10860d1778dc09a9e9b1543a70301e

The following changes since commit 75bc37fefc4471e718ba8e651aa74673d4e0a9eb:

  Linux 4.17-rc4 (2018-05-06 16:57:38 -1000)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-4.18-merge-3

for you to fetch changes up to afd9d6a1df75807684fa40dab77c52e104e5c74b:

  fs: use ->is_partially_uptodate in page_cache_seek_hole_data (2018-06-01 18:37:33 -0700)

----------------------------------------------------------------
Changes for 4.18:
- Strengthen inode number and structure validation when allocating inodes.
- Reduce pointless buffer allocations during cache miss
- Use FUA for pure data O_DSYNC directio writes
- Various iomap refactorings
- Strengthen quota metadata verification to avoid unfixable broken quota
- Make AGFL block freeing a deferred operation to avoid blowing out
  transaction reservations when running complex operations
- Get rid of the log item descriptors to reduce log overhead
- Fix various reflink bugs where inodes were double-joined to
  transactions
- Don't issue discards when trimming unwritten extents
- Refactor incore dquot initialization and retrieval interfaces
- Fix some locking problmes in the quota scrub code
- Strengthen btree structure checks in scrub code
- Rewrite swapfile activation to use iomap and support unwritten extents
- Make scrub exit to userspace sooner when corruptions or
  cross-referencing problems are found
- Make scrub invoke the data fork scrubber directly on metadata inodes
- Don't do background reclamation of post-eof and cow blocks when the fs
  is suspended
- Fix secondary superblock buffer lifespan hinting
- Refactor growfs to use table-dispatched functions instead of long
  stringy functions
- Move growfs code to libxfs
- Implement online fs label getting and setting
- Introduce online filesystem repair (in a very limited capacity)
- Fix unit conversion problems in the realtime freemap iteration
  functions
- Various refactorings and cleanups in preparation to remove buffer
  heads in a future release
- Reimplement the old bmap call with iomap
- Remove direct buffer head accesses from seek hole/data
- Various bug fixes

----------------------------------------------------------------
Brian Foster (10):
      xfs: create agfl block free helper function
      xfs: defer agfl block frees when dfops is available
      xfs: defer agfl block frees from deferred ops processing context
      xfs: defer agfl frees from inode inactivation
      xfs: defer frees from common inode allocation paths
      xfs: defer agfl frees from directory op transactions
      xfs: add bmapi nodiscard flag
      xfs: skip online discard during eofblocks trims
      xfs: don't discard on free of unwritten extents
      xfs: factor out nodiscard helpers

Christoph Hellwig (14):
      block: add a lower-level bio_add_page interface
      mm: give the 'ret' variable a better name __do_page_cache_readahead
      mm: return an unsigned int from __do_page_cache_readahead
      mm: split ->readpages calls to avoid non-contiguous pages lists
      iomap: inline data should be an iomap type, not a flag
      iomap: fix the comment describing IOMAP_NOWAIT
      iomap: move IOMAP_F_BOUNDARY to gfs2
      iomap: use __bio_add_page in iomap_dio_zero
      iomap: add a iomap_sector helper
      iomap: add an iomap-based bmap implementation
      xfs: use iomap_bmap
      fs: move page_cache_seek_hole_data to iomap.c
      fs: remove the buffer_unwritten check in page_seek_hole_data
      fs: use ->is_partially_uptodate in page_cache_seek_hole_data

Darrick J. Wong (54):
      xfs: bmap debugging should never panic the system
      xfs: add missing rmap error return
      xfs: release new dquot buffer on defer_finish error
      xfs: don't spray logs when dquot flush/purge fail
      xfs: refactor XFS_QMOPT_DQNEXT out of existence
      xfs: refactor dquot cache handling
      xfs: delegate dqget input checks to helper function
      xfs: remove unnecessary xfs_qm_dqattach parameter
      xfs: split out dqget for inodes from regular dqget
      xfs: fetch dquots directly during quotacheck
      xfs: refactor incore dquot initialization functions
      xfs: refactor xfs_qm_dqtobp and xfs_qm_dqalloc
      xfs: remove direct calls to _qm_dqread
      xfs: replace XFS_QMOPT_DQALLOC with a simple boolean
      xfs: rename on-disk dquot counter zap functions
      xfs: refactor dquot iteration
      xfs: avoid ilock games in the quota scrubber
      xfs: clean up scrub usage of KM_NOFS
      xfs: btree scrub should check minrecs
      xfs: refactor scrub transaction allocation function
      xfs: add helpers to calculate btree size
      xfs: expose various functions to repair code
      xfs: add repair helpers for the reverse mapping btree
      xfs: add repair helpers for the reference count btree
      xfs: add BMAPI_NORMAP flag to perform block remapping without updating rmapbt
      xfs: halt auto-reclamation activities while rebuilding rmap
      iomap: add a swapfile activation function
      xfs: skip scrub xref if corruption already noted
      xfs: superblock scrub should use short-lived buffers
      xfs: refactor quota limits initialization
      xfs: don't continue scrub if already corrupt
      xfs: quota scrub should use bmapbtd scrubber
      xfs: scrub the data fork of the realtime inodes
      xfs: avoid ABBA deadlock when scrubbing parent pointers
      xfs: hoist xfs_scrub_agfl_walk to libxfs as xfs_agfl_walk
      xfs: make xfs_bmapi_remapi work with attribute forks
      xfs: teach xfs_bmapi_remap to accept some bmapi flags
      xfs: create tracepoints for online repair
      xfs: implement the metadata repair ioctl flag
      fs: clear writeback errors in inode_init_always
      xfs: fix inobt magic number check
      xfs: grab the per-ag structure whenever relevant
      xfs: add helpers to deal with transaction allocation and rolling
      xfs: add helpers to allocate and initialize fresh btree roots
      xfs: add helpers to collect and sift btree block pointers during repair
      xfs: add helpers to dispose of old btree blocks after a repair
      xfs: recover AG btree roots from rmap data
      xfs: add helpers to attach quotas to inodes
      xfs: repair superblocks
      fs: allow per-device dax status checking for filesystems
      xfs: xfs_rtword_t should be unsigned, not signed
      xfs: xfs_rtbuf_get should check the bmapi_read results
      xfs: strengthen rtalloc query range checks
      xfs: fix xfs_rtalloc_rec units

Dave Chinner (31):
      xfs: validate cached inodes are free when allocated
      xfs: validate allocated inode number
      xfs: make xfs_buf_incore out of line
      xfs: don't retry xfs_buf_find on XBF_TRYLOCK failure
      xfs: move generic_write_sync calls inwards
      iomap: iomap_dio_rw() handles all sync writes
      iomap: Use FUA for pure data O_DSYNC DIO writes
      xfs: simplify xfs_file_iomap_begin() logic
      xfs: clean up locking in xfs_file_iomap_begin
      xfs: log item flags are racy
      xfs: add tracing to high level transaction operations
      xfs: adder caller IP to xfs_defer* tracepoints
      xfs: don't assert fail with AIL lock held
      xfs: fix double ijoin in xfs_inactive_symlink_rmt()
      xfs: fix double ijoin in xfs_reflink_cancel_cow_range
      xfs: fix double ijoin in xfs_reflink_clear_inode_flag()
      xfs: add some more debug checks to buffer log item reuse
      xfs: get rid of the log item descriptor
      xfs: add mount delay debug option
      xfs: clear sb->s_fs_info on mount failure
      xfs: one-shot cached buffers
      xfs: factor out AG header initialisation from growfs core
      xfs: convert growfs AG header init to use buffer lists
      xfs: factor ag btree root block initialisation
      xfs: turn ag header initialisation into a table driven operation
      xfs: make imaxpct changes in growfs separate
      xfs: separate secondary sb update in growfs
      xfs: rework secondary superblock updates in growfs
      xfs: move growfs core to libxfs
      xfs: factor the ag length extension code into libxfs
      xfs: fix error handling in xfs_refcount_insert()

Dave Jiang (1):
      dax: change bdev_dax_supported() to support boolean returns

Eric Sandeen (8):
      xfs: trace ATTR flags in xattr tracepoints
      xfs: remove unused flags arg from xfs_dquot_verify
      xfs: check type in quota verifier during quotacheck
      xfs: pass full xfs_dqblk to repair during quotacheck
      xfs: add full xfs_dqblk verifier
      xfs: print specific dqblk that failed verifiers
      fs: copy BTRFS_IOC_[SG]ET_FSLABEL to vfs
      xfs: implement online get/set fs label

Omar Sandoval (2):
      iomap: provide more useful errors for invalid swap files
      iomap: don't allow holes in swapfiles

Souptick Joarder (1):
      fs: xfs: Change return type to vm_fault_t

 Documentation/ioctl/ioctl-number.txt |    3 +-
 block/bio.c                          |   96 +--
 drivers/dax/super.c                  |   40 +-
 fs/buffer.c                          |  114 ----
 fs/ext2/super.c                      |    3 +-
 fs/ext4/inline.c                     |    4 +-
 fs/ext4/super.c                      |    3 +-
 fs/gfs2/bmap.c                       |   11 +-
 fs/inode.c                           |    1 +
 fs/iomap.c                           |  408 ++++++++++++-
 fs/xfs/Kconfig                       |   18 +
 fs/xfs/Makefile                      |    9 +
 fs/xfs/libxfs/xfs_ag.c               |  464 +++++++++++++++
 fs/xfs/libxfs/xfs_ag.h               |   30 +
 fs/xfs/libxfs/xfs_alloc.c            |  129 +++-
 fs/xfs/libxfs/xfs_alloc.h            |   23 +-
 fs/xfs/libxfs/xfs_alloc_btree.c      |    9 +
 fs/xfs/libxfs/xfs_alloc_btree.h      |    2 +
 fs/xfs/libxfs/xfs_attr.c             |    4 +-
 fs/xfs/libxfs/xfs_attr_remote.c      |    2 +-
 fs/xfs/libxfs/xfs_bmap.c             |   92 +--
 fs/xfs/libxfs/xfs_bmap.h             |   30 +-
 fs/xfs/libxfs/xfs_bmap_btree.c       |    9 +
 fs/xfs/libxfs/xfs_bmap_btree.h       |    3 +
 fs/xfs/libxfs/xfs_btree.c            |   25 +-
 fs/xfs/libxfs/xfs_btree.h            |    3 +-
 fs/xfs/libxfs/xfs_defer.c            |   24 +-
 fs/xfs/libxfs/xfs_defer.h            |    1 +
 fs/xfs/libxfs/xfs_dquot_buf.c        |   94 +--
 fs/xfs/libxfs/xfs_errortag.h         |    4 +-
 fs/xfs/libxfs/xfs_format.h           |    7 +-
 fs/xfs/libxfs/xfs_fs.h               |    9 +-
 fs/xfs/libxfs/xfs_ialloc.c           |    2 +-
 fs/xfs/libxfs/xfs_ialloc.h           |    3 +
 fs/xfs/libxfs/xfs_ialloc_btree.c     |   11 +-
 fs/xfs/libxfs/xfs_ialloc_btree.h     |    2 +
 fs/xfs/libxfs/xfs_quota_defs.h       |    9 +-
 fs/xfs/libxfs/xfs_refcount.c         |   24 +-
 fs/xfs/libxfs/xfs_refcount.h         |    7 +
 fs/xfs/libxfs/xfs_rmap.c             |   83 +++
 fs/xfs/libxfs/xfs_rmap.h             |    4 +
 fs/xfs/libxfs/xfs_rtbitmap.c         |   26 +-
 fs/xfs/libxfs/xfs_sb.c               |  147 +++++
 fs/xfs/libxfs/xfs_sb.h               |   16 +
 fs/xfs/libxfs/xfs_shared.h           |   16 +-
 fs/xfs/libxfs/xfs_types.h            |    2 +-
 fs/xfs/scrub/agheader.c              |   85 +--
 fs/xfs/scrub/agheader_repair.c       |   70 +++
 fs/xfs/scrub/alloc.c                 |    4 +-
 fs/xfs/scrub/attr.c                  |    3 +-
 fs/xfs/scrub/bmap.c                  |    8 +-
 fs/xfs/scrub/btree.c                 |   42 +-
 fs/xfs/scrub/common.c                |  131 +++-
 fs/xfs/scrub/common.h                |   32 +-
 fs/xfs/scrub/dir.c                   |   35 +-
 fs/xfs/scrub/ialloc.c                |    7 +-
 fs/xfs/scrub/inode.c                 |   10 +-
 fs/xfs/scrub/parent.c                |   19 +-
 fs/xfs/scrub/quota.c                 |  181 +++---
 fs/xfs/scrub/refcount.c              |   10 +-
 fs/xfs/scrub/repair.c                | 1089 ++++++++++++++++++++++++++++++++++
 fs/xfs/scrub/repair.h                |  132 +++++
 fs/xfs/scrub/rmap.c                  |    6 +-
 fs/xfs/scrub/rtbitmap.c              |   60 +-
 fs/xfs/scrub/scrub.c                 |  142 ++++-
 fs/xfs/scrub/scrub.h                 |    5 +
 fs/xfs/scrub/trace.h                 |  258 ++++++++
 fs/xfs/xfs_aops.c                    |   21 +-
 fs/xfs/xfs_bmap_item.c               |    4 +-
 fs/xfs/xfs_bmap_util.c               |   10 +-
 fs/xfs/xfs_buf.c                     |  100 +++-
 fs/xfs/xfs_buf.h                     |   29 +-
 fs/xfs/xfs_buf_item.c                |   10 +-
 fs/xfs/xfs_dquot.c                   |  780 ++++++++++++++----------
 fs/xfs/xfs_dquot.h                   |   22 +-
 fs/xfs/xfs_dquot_item.c              |    7 +-
 fs/xfs/xfs_error.c                   |    3 +
 fs/xfs/xfs_extfree_item.c            |    6 +-
 fs/xfs/xfs_file.c                    |   55 +-
 fs/xfs/xfs_fsmap.c                   |   14 +-
 fs/xfs/xfs_fsops.c                   |  587 ++++--------------
 fs/xfs/xfs_globals.c                 |    1 +
 fs/xfs/xfs_icache.c                  |   94 ++-
 fs/xfs/xfs_icache.h                  |    3 +
 fs/xfs/xfs_icreate_item.c            |    4 +-
 fs/xfs/xfs_inode.c                   |   47 +-
 fs/xfs/xfs_inode.h                   |   14 +-
 fs/xfs/xfs_inode_item.c              |    8 +-
 fs/xfs/xfs_ioctl.c                   |   89 ++-
 fs/xfs/xfs_iomap.c                   |  186 +++---
 fs/xfs/xfs_iops.c                    |   32 +-
 fs/xfs/xfs_log.c                     |   12 +-
 fs/xfs/xfs_log_cil.c                 |   22 +-
 fs/xfs/xfs_log_recover.c             |    4 +-
 fs/xfs/xfs_mount.c                   |    4 +-
 fs/xfs/xfs_qm.c                      |  254 ++++----
 fs/xfs/xfs_qm.h                      |    6 +-
 fs/xfs/xfs_qm_bhv.c                  |    2 +-
 fs/xfs/xfs_qm_syscalls.c             |   97 ++-
 fs/xfs/xfs_quota.h                   |   22 +-
 fs/xfs/xfs_quotaops.c                |    8 +-
 fs/xfs/xfs_refcount_item.c           |    4 +-
 fs/xfs/xfs_reflink.c                 |   18 +-
 fs/xfs/xfs_rmap_item.c               |    4 +-
 fs/xfs/xfs_rtalloc.h                 |    9 +-
 fs/xfs/xfs_super.c                   |   59 +-
 fs/xfs/xfs_symlink.c                 |   10 +-
 fs/xfs/xfs_sysctl.h                  |    1 +
 fs/xfs/xfs_sysfs.c                   |   31 +
 fs/xfs/xfs_trace.h                   |   72 ++-
 fs/xfs/xfs_trans.c                   |   89 ++-
 fs/xfs/xfs_trans.h                   |   29 +-
 fs/xfs/xfs_trans_ail.c               |   50 +-
 fs/xfs/xfs_trans_bmap.c              |    4 +-
 fs/xfs/xfs_trans_buf.c               |   24 +-
 fs/xfs/xfs_trans_dquot.c             |    4 +-
 fs/xfs/xfs_trans_extfree.c           |   84 ++-
 fs/xfs/xfs_trans_inode.c             |    3 +-
 fs/xfs/xfs_trans_priv.h              |   11 +-
 fs/xfs/xfs_trans_refcount.c          |    4 +-
 fs/xfs/xfs_trans_rmap.c              |    4 +-
 include/linux/bio.h                  |    9 +
 include/linux/buffer_head.h          |    2 -
 include/linux/dax.h                  |   11 +-
 include/linux/iomap.h                |   27 +-
 include/uapi/linux/fs.h              |    8 +-
 mm/internal.h                        |    2 +-
 mm/readahead.c                       |   39 +-
 128 files changed, 5544 insertions(+), 1980 deletions(-)
 create mode 100644 fs/xfs/libxfs/xfs_ag.c
 create mode 100644 fs/xfs/libxfs/xfs_ag.h
 create mode 100644 fs/xfs/scrub/agheader_repair.c
 create mode 100644 fs/xfs/scrub/repair.c
 create mode 100644 fs/xfs/scrub/repair.h
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux