[GIT PULL] xfs: changes for 4.14

From: Darrick J. Wong
Date: Mon Sep 04 2017 - 13:31:30 EST


Hi Linus,

Here are the changes for xfs for 4.14. Most of these are cleanups and
fixes for bad behavior, as we're mostly focusing on improving reliablity
this cycle (read: there's potentially a lot of stuff on the horizon for
4.15 so better to spend a few weeks killing other bugs now.)

Anyway, I tried a test merge+build against master this morning and it
worked fine for me, so please let me know if you encounter any problems.

--D

The following changes since commit 6470812e22261d2342ef1597be62e63a0423d691:

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc (2017-08-21 14:07:48 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-4.14-merge-7

for you to fetch changes up to 6c370590cfe0c36bcd62d548148aa65c984540b7:

xfs: use kmem_free to free return value of kmem_zalloc (2017-09-03 10:40:46 -0700)

----------------------------------------------------------------
Updates for 4.14:
- Write unmount record for a ro mount to avoid unnecessary log replay
- Clean up orphaned inodes when mounting fs readonly
- Resubmit inode log items when buffer writeback fails to avoid umount hang
- Fix log recovery corruption problems when log headers wrap around the end
- Avoid infinite loop searching for free inodes when inode counters are wrong
- Evict inodes involved with log redo so that we don't leak them later
- Fix a potential race between reclaim and inode cluster freeing
- Refactor the inode joining code w.r.t. transaction rolling & deferred ops
- Fix a bug where the log doesn't properly deal with dirty buffers that
are about to become ordered buffers
- Fix the extent swap code to deal with making dirty buffers ordered properly
- Consolidate page fault handlers
- Refactor the incore extent manipulation functions to use the iext
abstractions instead of directly modifying with extent data
- Disable crashy chattr +/-x until we fix it
- Don't allow us to set S_DAX for v2 inodes
- Various cleanups
- Clarify some documentation
- Fix a problem where fsync and a log commit race to send the disk a
flush command, resulting in a small window where power fail data loss
could occur
- Simplify some rmap operations in the fcollapse code
- Fix some use-after-free problems in async writeback

----------------------------------------------------------------
Amir Goldstein (1):
xfs: fix incorrect log_flushed on fsync

Brian Foster (15):
xfs: fix recovery failure when log record header wraps log end
xfs: always verify the log tail during recovery
xfs: fix log recovery corruption error due to tail overwrite
xfs: add log item pinning error injection tag
xfs: handle -EFSCORRUPTED during head/tail verification
xfs: add log recovery tracepoint for head/tail
xfs: open-code xfs_buf_item_dirty()
xfs: remove unnecessary dirty bli format check for ordered bufs
xfs: ordered buffer log items are never formatted
xfs: refactor buffer logging into buffer dirtying helper
xfs: don't log dirty ranges for ordered buffers
xfs: skip bmbt block ino validation during owner change
xfs: move bmbt owner change to last step of extent swap
xfs: disallow marking previously dirty buffers as ordered
xfs: relog dirty buffers during swapext bmbt owner change

Carlos Maiolino (3):
xfs: Add infrastructure needed for error propagation during buffer IO failure
xfs: Properly retry failed inode items in case of error during buffer writeback
xfs: stop searching for free slots in an inode chunk when there are none

Christoph Hellwig (16):
xfs: refactor xfs_trans_roll
xfs: rename xfs_defer_join to xfs_defer_ijoin
xfs: remove the ip argument to xfs_defer_finish
iomap: return VM_FAULT_* codes from iomap_page_mkwrite
xfs: consolidate the various page fault handlers
xfs: add a xfs_iext_update_extent helper
xfs: switch xfs_bmap_local_to_extents to use xfs_iext_insert
xfs: use xfs_iext_get_extent in xfs_bmap_first_unused
xfs: move some code around inside xfs_bmap_shift_extents
xfs: use xfs_iext_*_extent helpers in xfs_bmap_shift_extents
xfs: use xfs_iext_*_extent helpers in xfs_bmap_split_extent_at
xfs: rewrite xfs_bmap_count_leaves using xfs_iext_get_extent
xfs: replace xfs_qm_get_rtblks with a direct call to xfs_bmap_count_leaves
xfs: disable per-inode DAX flag
xfs: don't set v3 xflags for v2 inodes
xfs: open code end_buffer_async_write in xfs_finish_page_writeback

Darrick J. Wong (4):
xfs: evict all inodes involved with log redo item
xfs: simplify the rmap code in xfs_bmse_merge
fsmap: fix documentation of FMR_OF_LAST
xfs: fix compiler warnings

Eric Sandeen (3):
xfs: write unmount record for ro mounts
xfs: toggle readonly state around xfs_log_mount_finish
xfs: remove unused flags arg from xfs_file_iomap_begin_delay

Omar Sandoval (1):
xfs: check for race with xfs_reclaim_inode() in xfs_ifree_cluster()

Pan Bian (1):
xfs: use kmem_free to free return value of kmem_zalloc

fs/inode.c | 1 +
fs/internal.h | 1 -
fs/iomap.c | 4 +-
fs/xfs/libxfs/xfs_attr.c | 156 +++++++++++-----------
fs/xfs/libxfs/xfs_attr_leaf.c | 6 +-
fs/xfs/libxfs/xfs_attr_remote.c | 39 +++---
fs/xfs/libxfs/xfs_bmap.c | 280 +++++++++++++++++++---------------------
fs/xfs/libxfs/xfs_bmap_btree.c | 1 +
fs/xfs/libxfs/xfs_btree.c | 27 ++--
fs/xfs/libxfs/xfs_btree.h | 3 +-
fs/xfs/libxfs/xfs_defer.c | 29 ++---
fs/xfs/libxfs/xfs_defer.h | 5 +-
fs/xfs/libxfs/xfs_ialloc.c | 57 ++++----
fs/xfs/libxfs/xfs_inode_fork.c | 21 ++-
fs/xfs/libxfs/xfs_inode_fork.h | 2 +
fs/xfs/libxfs/xfs_refcount.c | 2 +-
fs/xfs/xfs_aops.c | 71 ++++++----
fs/xfs/xfs_attr_inactive.c | 6 +-
fs/xfs/xfs_bmap_item.c | 2 +-
fs/xfs/xfs_bmap_util.c | 124 ++++++++++++------
fs/xfs/xfs_bmap_util.h | 1 +
fs/xfs/xfs_buf_item.c | 137 +++++++++++++-------
fs/xfs/xfs_buf_item.h | 5 +-
fs/xfs/xfs_dquot.c | 2 +-
fs/xfs/xfs_error.c | 3 +
fs/xfs/xfs_error.h | 4 +-
fs/xfs/xfs_file.c | 97 +++++---------
fs/xfs/xfs_icache.c | 10 +-
fs/xfs/xfs_inode.c | 40 ++++--
fs/xfs/xfs_inode_item.c | 47 ++++++-
fs/xfs/xfs_ioctl.c | 41 ++++--
fs/xfs/xfs_iomap.c | 10 +-
fs/xfs/xfs_iops.c | 2 +-
fs/xfs/xfs_log.c | 33 +++--
fs/xfs/xfs_log_recover.c | 161 ++++++++++++++---------
fs/xfs/xfs_qm.c | 44 ++-----
fs/xfs/xfs_refcount_item.c | 2 +-
fs/xfs/xfs_reflink.c | 11 +-
fs/xfs/xfs_rtalloc.c | 2 +-
fs/xfs/xfs_super.c | 2 +-
fs/xfs/xfs_symlink.c | 5 +-
fs/xfs/xfs_trace.h | 48 ++++++-
fs/xfs/xfs_trans.c | 28 +---
fs/xfs/xfs_trans.h | 17 ++-
fs/xfs/xfs_trans_ail.c | 20 ++-
fs/xfs/xfs_trans_buf.c | 79 +++++++-----
fs/xfs/xfs_trans_inode.c | 14 ++
fs/xfs/xfs_trans_priv.h | 31 +++++
include/linux/fs.h | 1 +
include/uapi/linux/fsmap.h | 2 +-
50 files changed, 1027 insertions(+), 709 deletions(-)