]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/log
thirdparty/xfsprogs-dev.git
5 years agoxfs: check directory bestfree information in the verifier
Darrick J. Wong [Thu, 28 Jun 2018 20:11:58 +0000 (15:11 -0500)] 
xfs: check directory bestfree information in the verifier

Source kernel commit: e4f45eff86fdbafd8e0ba072fd52422e32e5b5ac

Create a variant of xfs_dir2_data_freefind that is suitable for use in a
verifier.  Because _freefind is called by the verifier, we simply
duplicate the _freefind function, convert the ASSERTs to return
__this_address, and modify the verifier to call our new function.  Once
we've made it impossible for directory blocks with bad bestfree data to
make it into the filesystem we can remove the DEBUG code from the
regular _freefind function.

Underlying argument: corruption of on-disk metadata should return
-EFSCORRUPTED instead of blowing ASSERTs.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: don't return garbage buffers in xfs_da3_node_read
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: don't return garbage buffers in xfs_da3_node_read

Source kernel commit: 924cade4df49e7c9fddcbae678dbd9dee3b0aeb6

If we're reading a node in a dir/attr btree and the buffer comes off the
disk with a magic number we don't recognize, don't ASSERT and don't set
a garbage buffer type (0 also triggers ASSERTs).  Instead, report the
corruption, release the buffer, and return -EFSCORRUPTED because that's
what the dabtree is -- corrupt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: don't ASSERT on short form btree root pointer of zero
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: don't ASSERT on short form btree root pointer of zero

Source kernel commit: 1f5c071d19aef379d0876929a598adcbc7f87986

Don't ASSERT if the short form btree root pointer is zero.  Now that we
use xfs_verify_agbno to check all short form btree pointers, we'll let
that log the error and pass it to the upper layers.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: btree lookup shouldn't ASSERT on empty btree nodes
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: btree lookup shouldn't ASSERT on empty btree nodes

Source kernel commit: eeee0d6a9bc93eaa211918c203fde263d44fa20e

If a btree lookup encounters an empty btree node or an empty btree leaf
on a multi-level btree, that's evidence of a corrupt on-disk btree.
Therefore, we should return -EFSCORRUPTED to the upper levels, not an
ASSERT failure.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: xfs_alloc_get_rec should return EFSCORRUPTED for obvious bnobt corruption
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: xfs_alloc_get_rec should return EFSCORRUPTED for obvious bnobt corruption

Source kernel commit: a37f7b127ed3dcfab3edc105482891711c1966b3

Return -EFSCORRUPTED when the bnobt/cntbt return obviously corrupt
values, rather than letting them bounce around in the internal code.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: remove redundant ASSERT on insufficient bestfree length in _leaf_addname
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: remove redundant ASSERT on insufficient bestfree length in _leaf_addname

Source kernel commit: b3986010cea509842edf15c56ca10c18befdcafb

In xfs_dir2_leaf_addname we ASSERT if the length of the unused space
described by bestfree[0] is less the amount of space we wish to consume.
Immediately after it is a call to xfs_dir2_data_use_free where the
offset parameter is offset of the unused space and the length parameter
is the amount of space we wish to consume.  Both values (and the unused
space pointer) are passed into xfs_dir2_data_check_free, which also
validates that the region of unused space is big enough to cover the
space we wish to consume.  This is effectively the same check that the
ASSERT covers, and since a check failure results in a corruption message
being logged we can remove the ASSERT.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: don't assert when reporting on-disk corruption while loading btree
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: don't assert when reporting on-disk corruption while loading btree

Source kernel commit: 17ba2cc7b5b9ee6a44baf5e169c8901f1f049ea8

Don't bother ASSERTing when we're already going to log and return the
corruption status.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: verify AGI unlinked list contains valid blocks
Dave Chinner [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: verify AGI unlinked list contains valid blocks

Source kernel commit: 9f96cc958e8ae9864e6d597a5f3e80b5fca35ae4

The heads of tha AGI unlinked list are only scanned on debug
kernels when the verifier runs. Change that to always scan the heads
and validate that the inode numbers are valid.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: fix error handling in xfs_refcount_insert()
Dave Chinner [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: fix error handling in xfs_refcount_insert()

Source kernel commit: 16858f7c21156e676c98a5f6532f68cacbde3784

generic/475 fired an assert failure just after the filesystem was
shut down:

XFS: Assertion failed: fs_is_ok, file: fs/xfs/libxfs/xfs_refcount.c, line: 182
.....
Call Trace:
xfs_refcount_insert+0x151/0x190
xfs_refcount_adjust_extents.constprop.11+0x9c/0x470
xfs_refcount_adjust.constprop.10+0xb0/0x270
xfs_refcount_finish_one+0x25a/0x420
xfs_trans_log_finish_refcount_update+0x2a/0x40
xfs_refcount_update_finish_item+0x35/0xa0
xfs_defer_finish+0x15e/0x4d0
xfs_reflink_remap_extent+0x1bc/0x610
xfs_reflink_remap_blocks+0x6e/0x280
xfs_reflink_remap_range+0x311/0x530
vfs_clone_file_range+0x119/0x200
....

If xfs_btree_insert() returns an error, the corruption check fires
instead of passing the error back the caller. The corruption check
should be after we've checked for an error, not before, thereby
avoiding assert failures if the filesystem shuts down during a
refcount btree record insert.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: fix xfs_rtalloc_rec units
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: fix xfs_rtalloc_rec units

Source kernel commit: a0e5c435babd8bb61612d2e4e9b098cacdd825f7

All the realtime allocation functions deal with space on the rtdev in
units of realtime extents.  However, struct xfs_rtalloc_rec confusingly
uses the word 'block' in the name, even though they're really extents.

Fix the naming problem and fix all the unit handling problems in the two
existing users.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: strengthen rtalloc query range checks
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: strengthen rtalloc query range checks

Source kernel commit: 8ad560d2565e64b8be0cf5901c1e8fe034ac5599

Strengthen the rtalloc range query checks to make sure that the keys do
not run off the end of the realtime device inappropriately.  Note that
the query range functions require units of rt extents, not blocks,
despite the type name.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: xfs_rtbuf_get should check the bmapi_read results
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: xfs_rtbuf_get should check the bmapi_read results

Source kernel commit: a03f1641c7a6d4e88c6aae0cd3d52305cdb967a0

The xfs_rtbuf_get function should check the block mapping it gets back
from bmapi_read.  If there are no mappings or the mapping isn't a real
extent, we should return -EFSCORRUPTED rather than trying to read a
garbage value.  We also require realtime bitmap blocks to be real,
written allocations.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: xfs_rtword_t should be unsigned, not signed
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: xfs_rtword_t should be unsigned, not signed

Source kernel commit: 2483113f3d7baa303deac115e6764d9489c8316b

xfs_rtword_t is used for bit manipulations in the realtime bitmap file.
Since we're performing bit shifts with this type, we don't want sign
extension and we don't want to be left shifting negative quantities
because that's undefined behavior.

This also shuts up these UBSAN warnings:
UBSAN: Undefined behaviour in fs/xfs/libxfs/xfs_rtbitmap.c:833:48
signed integer overflow:
-2147483648 - 1 cannot be represented in type 'int'

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: repair superblocks
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: repair superblocks

Source kernel commit: d25522f10cfa342a20867086a516c45c87b0877c

If one of the backup superblocks is found to differ seriously from
superblock 0, write out a fresh copy from the in-core sb.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: fix inobt magic number check
Darrick J. Wong [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: fix inobt magic number check

Source kernel commit: 2e050e648ad6c74a2f0a28f645155128be0626ca

In commit a6a781a58befcbd467c ("xfs: have buffer verifier functions
report failing address") the bad magic number return was ported
incorrectly.

Fixes: a6a781a58befcbd467ce843af4eaca3906aa1f08
Reported-by: syzbot+08ab33be0178b76851c8@syzkaller.appspotmail.com
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: implement online get/set fs label
Eric Sandeen [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: implement online get/set fs label

Source kernel commit: f7664b31975bd893190708e76b2c424328f0c49b

The GET ioctl is trivial, just return the current label.

The SET ioctl is more involved:
It transactionally modifies the superblock to write a new filesystem
label to the primary super.

A new variant of xfs_sync_sb then writes the superblock buffer
immediately to disk so that the change is visible from userspace.

It then invalidates any page cache that userspace might have previously
read on the block device so that i.e. blkid can see the change
immediately, and updates all secondary superblocks as userspace relable
does.

Also includes for bisectability:

xfs: use xfs_trans_getsb in xfs_sync_sb_buf

Source kernel commit: 89c2e71123badc1e75316ccd969ee8a5c6fd921a

Use xfs_trans_getsb rather than reaching right in for
mp->m_sb_bp; I think this is more correct, and it facilitates
building this libxfs code in userspace as well.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
[darrick: use dchinner's new xfs_update_secondary_sbs function]
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: factor the ag length extension code into libxfs
Dave Chinner [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: factor the ag length extension code into libxfs

Source kernel commit: 49dd56f26ea7d18d4ca71f43a082dbb92798ebd3

Growfs currently manually codes the extension of the last AG in a
filesytem during the growfs process. Factor that out of the growfs
code and move it into libxfs along with teh rest of the AG header
modification code.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: move growfs core to libxfs
Dave Chinner [Thu, 28 Jun 2018 20:11:57 +0000 (15:11 -0500)] 
xfs: move growfs core to libxfs

Source kernel commit: b16817b66b6c97d2a812d663d26faed40079892a

So it can be shared with userspace (e.g. mkfs) easily.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: implement the metadata repair ioctl flag
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: implement the metadata repair ioctl flag

Source kernel commit: 84d42ea6b6269aee7eb3d91a4425a08b8965fd4a

Plumb in the pieces necessary to make the "scrub" subfunction of
the scrub ioctl actually work.  This means that we make the IFLAG_REPAIR
flag to the scrub ioctl actually do something, and we add an errortag
knob so that xfstests can force the kernel to rebuild a metadata
structure even if there's nothing wrong with it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: teach xfs_bmapi_remap to accept some bmapi flags
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: teach xfs_bmapi_remap to accept some bmapi flags

Source kernel commit: 7644bd988d911168c80599bc034bb489dc851dcf

Teach xfs_bmapi_remap how to map in unwritten extent and to skip rmap
updates.  This enables us to rebuild real and unwritten extents from the
rmapbt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: make xfs_bmapi_remapi work with attribute forks
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: make xfs_bmapi_remapi work with attribute forks

Source kernel commit: 7cf199ba5a70dbc744276efc94442fb4436dac15

Add a new flags argument to xfs_bmapi_remapi so that we can pass BMAPI
flags into the function.  This enables us to pass in BMAPI_ATTRFORK so
that we can remap things into the attribute fork.  Eventually the
online repair code will use this to rebuild attribute forks, so make it
non-static.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: hoist xfs_scrub_agfl_walk to libxfs as xfs_agfl_walk
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: hoist xfs_scrub_agfl_walk to libxfs as xfs_agfl_walk

Source kernel commit: 9f3a080ef19b1c182a8fb1edbfb707fdb811437c

This function is basically a generic AGFL block iterator, so promote it
to libxfs ahead of online repair wanting to use it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: superblock scrub should use short-lived buffers
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: superblock scrub should use short-lived buffers

Source kernel commit: 689e11c84b15866619e7582486acacaf79d7e3e2

Secondary superblocks are rarely used, so create a helper to read a
given non-primary AG's superblock and ensure that it won't stick around
hogging memory.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: factor out nodiscard helpers
Brian Foster [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: factor out nodiscard helpers

Source kernel commit: 4e529339af15226a30e0ca044aa2d78ba3518494

The changes to skip discards of speculative preallocation and
unwritten extents introduced several new wrapper functions through
the bunmapi -> extent free codepath to reduce churn in all of the
associated callers. In several cases, these wrappers simply toggle a
single flag to skip or not skip discards for the resulting blocks.

The explicit _nodiscard() wrappers for such an isolated set of
callers is a bit overkill. Kill off these wrappers and replace with
the calls to the underlying functions in the contexts that need to
control discard behavior. Retain the wrappers that preserve the
original calling conventions to serve the original purpose of
reducing code churn.

This is a refactoring patch and does not change behavior.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add BMAPI_NORMAP flag to perform block remapping without updating rmapbt
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: add BMAPI_NORMAP flag to perform block remapping without updating rmapbt

Source kernel commit: 95eb308caa0ff7c4a0a86053422934737e6e6dc7

Add a new flag, XFS_BMAPI_NORMAP, which will perform file block
remapping without updating the rmapbt.  This will be used by the repair
code to reconstruct bmbts from the rmapbt, in which case we don't want
the rmapbt update.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add repair helpers for the reference count btree
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: add repair helpers for the reference count btree

Source kernel commit: 08daa3ccf541b8cc59d198daaccefae17fe565ae

Add a couple of functions to the refcount btree and generic btree code
that will be used to repair the refcountbt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add repair helpers for the reverse mapping btree
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: add repair helpers for the reverse mapping btree

Source kernel commit: 4d4f86b49fd0d88677ce45c9cc544cdf663bf047

Add a couple of functions to the reverse mapping btree that will be used
to repair the rmapbt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: expose various functions to repair code
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: expose various functions to repair code

Source kernel commit: 7f8f1313d91a7db9546de6e5bfeb1a2eebb1fef5

Expose various helpers that the repair code will want to use.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add helpers to calculate btree size
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: add helpers to calculate btree size

Source kernel commit: 14861c47400b4a1669956d8b027fe4b7855e39f1

Add a bunch of helper functions that calculate the sizes of various
btrees.  These will be used to repair btrees and btree headers.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: replace XFS_QMOPT_DQALLOC with a simple boolean
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: replace XFS_QMOPT_DQALLOC with a simple boolean

Source kernel commit: 30ab2dcf2c0693e518b1920e6edc4212cba10d10

DQALLOC is only ever used with xfs_qm_dqget*, and the only flag that the
_dqget family of functions cares about is DQALLOC.  Therefore, change
it to a boolean 'can alloc?' flag for the dqget interfaces where that
makes sense.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: remove unnecessary xfs_qm_dqattach parameter
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: remove unnecessary xfs_qm_dqattach parameter

Source kernel commit: c14cfccabe2af251388e20c1004ac5c6a970ba53

The flags argument is always zero, get rid of it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: refactor XFS_QMOPT_DQNEXT out of existence
Darrick J. Wong [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: refactor XFS_QMOPT_DQNEXT out of existence

Source kernel commit: 2e330e76e03dd0caee6804b49e9e49d7c3998867

There's only one caller of DQNEXT and its semantics can be moved into a
separate function, so create the function and get rid of the flag.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: don't discard on free of unwritten extents
Brian Foster [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: don't discard on free of unwritten extents

Source kernel commit: 84ca484ecf2f8e1dc3afddc895cb9b62c531db49

Unwritten extents by definition have not been written to until they
are converted to normal written extents. If unwritten extents are
freed from a file, it is therefore guaranteed that the blocks have
not been written to since allocation (note that zero range punches
and reallocates blocks).

To cut down on online discards generated from workloads that make
use of preallocation, skip discards of extents if they are in the
unwritten state when the extent is freed.

Note that this optimization does not apply to log recovery, during
which all freed extents are discarded if online discard is enabled.
Also note that it may be possible for a filesystem crash to occur
after write completion of an unwritten extent but before unwritten
conversion such that the extent remains unwritten after log
recovery. Since this pseudo-inconsistency may already be possible
after a crash (consider writing to recently allocated blocks where
the allocation transaction is lost after a crash), this change
shouldn't introduce any fundamental limitations that don't already
exist. In short, on storage stacks where discards are important,
it's good practice to run an occasional fstrim even with online
discard enabled in the filesystem, particularly after a crash.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add bmapi nodiscard flag
Brian Foster [Thu, 28 Jun 2018 20:11:56 +0000 (15:11 -0500)] 
xfs: add bmapi nodiscard flag

Source kernel commit: fcb762f5de2e534ab47b5f034fe484c2b25b4d51

Freed extents are unconditionally discarded when online discard is
enabled. Define XFS_BMAPI_NODISCARD to allow callers to bypass
discards when unnecessary. For example, this will be useful for
eofblocks trimming.

This patch does not change behavior.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: get rid of the log item descriptor
Dave Chinner [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: get rid of the log item descriptor

Source kernel commit: e6631f85546c8ff8842f62c73be44ff502d4287a

It's just a connector between a transaction and a log item. There's
a 1:1 relationship between a log item descriptor and a log item,
and a 1:1 relationship between a log item descriptor and a
transaction. Both relationships are created and terminated at the
same time, so why do we even have the descriptor?

Replace it with a specific list_head in the log item and a new
log item dirtied flag to replace the XFS_LID_DIRTY flag.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
[darrick: fix up deferred agfl intent finish_item use of LID_DIRTY]
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: adder caller IP to xfs_defer* tracepoints
Dave Chinner [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: adder caller IP to xfs_defer* tracepoints

Source kernel commit: e632a5690c734a383a83272a502be79cb2c040e5

So it's clear in the trace where they are being called from.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add missing rmap error return
Darrick J. Wong [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: add missing rmap error return

Source kernel commit: 52101dfe56f71d8cb140c2440d95affa25a53746

xfs_rmap_lookup_le_range can return errors, so we need to check for
them and bail out.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: bmap debugging should never panic the system
Darrick J. Wong [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: bmap debugging should never panic the system

Source kernel commit: cec572561a748396c783c1ea91a289816d3c4f18

Don't panic() the system if the bmap records are garbage, just call
ASSERT which gives us the same backtrace but enables developers to
control if the system goes down or not.  This makes debugging with
generic/388 much easier because it won't reboot the machine midway
through a run just because btree_read_bufl returns EIO when the fs has
already shut down.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: defer agfl block frees from deferred ops processing context
Brian Foster [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: defer agfl block frees from deferred ops processing context

Source kernel commit: 2bc5eba8b6957824631205aeffc75db8dbb5426a

Now that AGFL block frees are deferred when dfops is set in the
transaction, start deferring AGFL block frees from contexts that are
known to push the limits of existing log reservations.

The first such context is deferred operation processing itself. This
primarily targets deferred extent frees (such as file extents and
inode chunks), but in doing so covers all allocation operations that
occur in deferred operation processing context.

Update xfs_defer_finish() to set and reset ->t_agfl_dfops across the
processing sequence. This means that any AGFL block frees due to
allocation events result in the addition of new EFIs to the dfops
rather than being processed immediately. xfs_defer_finish() rolls
the transaction at least once more to process the frees of the AGFL
blocks back to the allocation btrees and returns once the AGFL is
rectified.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: defer agfl block frees when dfops is available
Brian Foster [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: defer agfl block frees when dfops is available

Source kernel commit: f8f2835a9cf300079835e1adb1d90f85033be04c

The AGFL fixup code executes before every block allocation/free and
rectifies the AGFL based on the current, dynamic allocation
requirements of the fs. The AGFL must hold a minimum number of
blocks to satisfy a worst case split of the free space btrees caused
by the impending allocation operation. The AGFL is also updated to
maintain the implicit requirement for a minimum number of free slots
to satisfy a worst case join of the free space btrees.

Since the AGFL caches individual blocks, AGFL reduction typically
involves multiple, single block frees. We've had reports of
transaction overrun problems during certain workloads that boil down
to AGFL reduction freeing multiple blocks and consuming more space
in the log than was reserved for the transaction.

Since the objective of freeing AGFL blocks is to ensure free AGFL
free slots are available for the upcoming allocation, one way to
address this problem is to release surplus blocks from the AGFL
immediately but defer the free of those blocks (similar to how
file-mapped blocks are unmapped from the file in one transaction and
freed via a deferred operation) until the transaction is rolled.
This turns AGFL reduction into an operation with predictable log
reservation consumption.

Add the capability to defer AGFL block frees when a deferred ops
list is available to the AGFL fixup code. Add a dfops pointer to the
transaction to carry dfops through various contexts to the allocator
context. Deferring AGFL frees is  conditional behavior based on
whether the transaction pointer is populated. The long term
objective is to reuse the transaction pointer to clean up all
unrelated callchains that pass dfops on the stack along with a
transaction and in doing so, consistently defer AGFL blocks from the
allocator.

A bit of customization is required to handle deferred completion
processing because AGFL blocks are accounted against a per-ag
reservation pool and AGFL blocks are not inserted into the extent
busy list when freed (they are inserted when used and released back
to the AGFL). Reuse the majority of the existing deferred extent
free infrastructure and customize it appropriately to handle AGFL
blocks.

Note that this patch only adds infrastructure. It does not change
behavior because no callers have been updated to pass ->t_agfl_dfops
into the allocation code.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: create agfl block free helper function
Brian Foster [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: create agfl block free helper function

Source kernel commit: 4223f659dd3edd9e561d90488c6ae332a0a05148

Refactor the AGFL block free code into a new helper such that it can
be invoked from deferred context. No functional changes.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: print specific dqblk that failed verifiers
Eric Sandeen [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: print specific dqblk that failed verifiers

Source kernel commit: 72c5c5f6d01c859dfe16c4910a5222ed9393c37c

Rather than printing the top of the buffer that held a corrupted dqblk,
restructure things to print out the specific one that failed by pushing
the calls to the verifier_error function down into the verifier which
iterates over the buffer and detects the error.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: add full xfs_dqblk verifier
Eric Sandeen [Thu, 28 Jun 2018 20:11:55 +0000 (15:11 -0500)] 
xfs: add full xfs_dqblk verifier

Source kernel commit: 7224fa482a6daa0558792e03a209e08d34690a26

Add an xfs_dqblk verifier so that it can check the uuid on V5 filesystems;
it calls the existing xfs_dquot_verify verifier to validate the
xfs_disk_dquot_t contained inside it.  This lets us move the uuid
verification out of the crc verifier, which makes little sense.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: pass full xfs_dqblk to repair during quotacheck
Eric Sandeen [Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)] 
xfs: pass full xfs_dqblk to repair during quotacheck

Source kernel commit: 48fa1db87f730da1aed2d3df0cc8c33c7c133b4b

It's a bit dicey to pass in the smaller xfs_disk_dquot and then cast it to
something larger; pass in the full xfs_dqblk so we know the caller has sent
us the right thing.  Rename the function to xfs_dqblk_repair for
clarity.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: check type in quota verifier during quotacheck
Eric Sandeen [Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)] 
xfs: check type in quota verifier during quotacheck

Source kernel commit: 57ab324553bbfedc8e732eb570edfac0f5cfe57e

During quotacheck we send in the quota type, so verify that as well.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: remove unused flags arg from xfs_dquot_verify
Eric Sandeen [Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)] 
xfs: remove unused flags arg from xfs_dquot_verify

Source kernel commit: e381a0f6c28a3f2a452d5fba9b917f03e5dc4ffb

Long ago the flags argument was used to determine whether to issue warnings
about corruptions, but that's done elsewhere now and the flag is unused
here, so remove it.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs: make xfs_buf_incore out of line
Dave Chinner [Thu, 28 Jun 2018 20:11:54 +0000 (15:11 -0500)] 
xfs: make xfs_buf_incore out of line

Source kernel commit: 8925a3dc4771004b3e697e7159fa87be2aa5dd43

Move xfs_buf_incore out of line and make it the only way to look up
a buffer in the buffer cache from outside the buffer cache. Convert
the external users of _xfs_buf_find() to xfs_buf_incore() and make
_xfs_buf_find() static.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
[darrick: actually rename xfs_incore -> xfs_buf_incore]
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_repair: clear extent size hints when clearing inode core
Darrick J. Wong [Thu, 28 Jun 2018 20:09:21 +0000 (15:09 -0500)] 
xfs_repair: clear extent size hints when clearing inode core

In kernel 4.18 we become more strict about what can be in the extent
size hint fields, even for freed inodes.  Therefore, if repair decides
to clear out an inode core, zero the hint fields and clear the flags so
that the kernel won't trip over the cleared inode if and when it tries
to read the chunk.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfsprogs: Release v4.17.0 v4.17.0
Eric Sandeen [Thu, 28 Jun 2018 16:52:21 +0000 (11:52 -0500)] 
xfsprogs: Release v4.17.0

Update all the necessary files for a 4.17.0 release.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfsprogs: Release v4.17.0-rc1 v4.17.0-rc1
Eric Sandeen [Fri, 22 Jun 2018 19:15:45 +0000 (14:15 -0500)] 
xfsprogs: Release v4.17.0-rc1

Update all the necessary files for a 4.17.0-rc1 release.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_io: clarify -c in bmap documentation
Darrick J. Wong [Fri, 22 Jun 2018 19:15:42 +0000 (14:15 -0500)] 
xfs_io: clarify -c in bmap documentation

The bmap -c parameter displays the cow fork information for a file if
the kernel was built with CONFIG_XFS_DEBUG=y.  Since xfs_bmap doesn't
support it and it doesn't work generally, remove it from the manpages.
However, xfstests relies on the -c command to be documented in the help
screen so leave it there with a warning about its use.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_bmap: remove -c from manpage
Darrick J. Wong [Fri, 22 Jun 2018 00:46:25 +0000 (19:46 -0500)] 
xfs_bmap: remove -c from manpage

There is no -c switch so remove the documentation.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_bmap: don't reject -e
Darrick J. Wong [Fri, 22 Jun 2018 00:46:24 +0000 (19:46 -0500)] 
xfs_bmap: don't reject -e

The xfs_io bmap command has an -e switch that prints delalloc extents
without fsync'ing the file first.  The xfs_bmap manpage says it'll pass
-e through, but it doesn't.  Fix the script and fix the weird manpage
discrepancy where it doesn't list -e in the available options but
discusses it anyway.

Fixes: 7536ce44f6 ("xfs_io: bmap should support querying CoW fork, shared blocks")
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_repair: Fix root inode's parent when it's bogus for sf directory
Marco Benatto [Fri, 22 Jun 2018 00:46:24 +0000 (19:46 -0500)] 
xfs_repair: Fix root inode's parent when it's bogus for sf directory

Currently when root inode is in short-form and its parent ino
has an invalid value, process_sf_dir2() ends up not fixing it,
because if verify_inum() fails we never get to the next case which
would fix the root inode's parent pointer.

This behavior triggers the following assert on process_dir2():

   ASSERT((ino != mp->m_sb.sb_rootino && ino != *parent) ||
        (ino == mp->m_sb.sb_rootino &&
        (ino == *parent || need_root_dotdot == 1)));

This patch fixes this behavior by making sure we always properly
handle rootino parent pointer in process_sf_dir2()

Signed-off-by: Marco Benatto <mbenatto@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_io: fix signed comparison problem in copy_file_range
Darrick J. Wong [Fri, 1 Jun 2018 00:38:54 +0000 (19:38 -0500)] 
xfs_io: fix signed comparison problem in copy_file_range

cvtnum() returns a signed long long, so the type of 'len' should be a
signed type so that a user entering a negative length doesn't produce
some huge positive integer.  The negative len check demands it anyway.

Coverity-id: 1435895
Fixes: 25b4549 ("xfs_io: Make copy_range arguments understand *iB values")
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_db: Don't ASSERT on unrecognized metadata
Carlos Maiolino [Thu, 31 May 2018 19:10:42 +0000 (14:10 -0500)] 
xfs_db: Don't ASSERT on unrecognized metadata

For some types, (for example attr3) if the metadata is not recognized
as the requested type, we can hit an ASSERT when trying to print
the type:

xfs_db: print.c:164: print_flist_1: Assertion `fa->arg & 64' failed.
Aborted (core dumped)

This can happen for corrupted metadata or even just a misdirected
user command; there's no reason to ASSERT.  If we get here, print
something helpful and carry on.

[sandeen: write the commit log]

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agomkfs.xfs: if either sunit or swidth is nonzero, the other must be as well
Eric Sandeen [Thu, 31 May 2018 19:09:55 +0000 (14:09 -0500)] 
mkfs.xfs: if either sunit or swidth is nonzero,  the other must be as well

Don't allow the user to set one but not the other.

Reported-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_db: handle realtime bitmap / summary files as text
Darrick J. Wong [Thu, 31 May 2018 19:09:55 +0000 (14:09 -0500)] 
xfs_db: handle realtime bitmap / summary files as text

Use handle_text to print realtime bitmap / summary file blocks instead
of erroring out.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_io: Make copy_range arguments understand *iB values
Goldwyn Rodrigues [Thu, 31 May 2018 19:09:55 +0000 (14:09 -0500)] 
xfs_io: Make copy_range arguments understand *iB values

Arguments such as 2MiB or 2M are converted to 2 because copy_range uses
strtoull(). Convert strtoull() to cvtnum().

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_io: fix null pointer deref when complaining about scrub command
Darrick J. Wong [Thu, 31 May 2018 19:09:55 +0000 (14:09 -0500)] 
xfs_io: fix null pointer deref when complaining about scrub command

Don't increment optind until we've validated that argv[optind] is a
valid scrub/repair subcommand and do not need to complain about
argv[optind].

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_repair: fix libxfs api violations in quota repair code
Eric Sandeen [Thu, 31 May 2018 19:09:55 +0000 (14:09 -0500)] 
xfs_repair: fix libxfs api violations in quota repair code

My "repair quotas" patch forgot about our libxfs API tricks,
fix that.

Fixes: 5857dce ("xfs_repair: check and repair quota metadata")
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_scrub: actually check for errors coming from close()
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
xfs_scrub: actually check for errors coming from close()

Report errors reported by close().

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agofsck: fix more bashisms
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
fsck: fix more bashisms

command -v is a bashism, so we need to get rid of it.  The shell returns
an error code of 127 if it couldn't invoke xfs_repair, so teach
repair2fsck_code to deal with this.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_buflock: record buffer initialization
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
xfs_buflock: record buffer initialization

Buffers are created locked, so we have to factor that into the buffer
state machine that the script utilizes.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_buflock: record line number of trace where we locked the buffer
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
xfs_buflock: record line number of trace where we locked the buffer

Enhance the debug output by reporting at which line in the trace output
we locked a particular buffer.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_buflock: ignore if buffer already locked
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
xfs_buflock: ignore if buffer already locked

If the trace data says we ran trylock but we were already locked, don't
record another lock.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
5 years agoxfs_repair: fix integer handling issues
Darrick J. Wong [Thu, 31 May 2018 19:09:54 +0000 (14:09 -0500)] 
xfs_repair: fix integer handling issues

When we shift sb_logblocks to the left we need to ensure that we have
enough storage space to shift correctly.  Cast logblocks to a 64-bit
type so that we don't screw up the check.

Coverity-id: 1435810
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_io: Allow -P and -L to be given to open for O_PATH and O_NOFOLLOW
David Howells [Thu, 24 May 2018 19:48:41 +0000 (14:48 -0500)] 
xfs_io: Allow -P and -L to be given to open for O_PATH and  O_NOFOLLOW

Allow "open -P" to specify O_PATH so that paths which would otherwise be
unopenable might be opened for stat()'ing.  Such things include files that
would incur an access error or device files for which no corresponding
driver is available.

Allow "-L" to be given in conjunction with O_PATH to specify O_NOFOLLOW
also.

We also have to avoid calling xfsctl() if O_PATH is given as ioctls are
forbidden on such fds.  This means we cannot retrieve the geometry
information on an XFS filesystem, so the record gets cleared instead.  For
the moment, only the xfsctl() calls in the 'open' command are
conditionalised.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_io: syncfs can fail
Jeff Layton [Thu, 24 May 2018 19:48:39 +0000 (14:48 -0500)] 
xfs_io: syncfs can fail

syncfs can return an error. Report one if it does. Also, ensure that
xfs_io will exit with a non-zero status in that case.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_io: add label command
Eric Sandeen [Thu, 24 May 2018 19:48:33 +0000 (14:48 -0500)] 
xfs_io: add label command

This adds an online get/set/clear label command to xfs_io.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: check and repair quota metadata
Eric Sandeen [Wed, 23 May 2018 21:30:49 +0000 (16:30 -0500)] 
xfs_repair: check and repair quota metadata

Today, quota inodes are not checked at all in xfs_repair.  (This is
a little odd, because xfs_check used to do it in process_quota()).

The kernel has quota inode validation and repair routines, but it is
out of the ordinary for the kernel to be doing metadata repair.  And
now that we have metadata verifiers, this also yields a surprisingly
noisy mount if quota inodes are corrupted, even immediately after an
xfs_repair.

So this patch allows xfs_repair to fix the quota inode metadata.

Quotacheck is still left for the kernel.  After a few more releases,
I'll propose removing the repair calls from quotacheck.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfsprogs: be careful about what we stat in platform_check_mount
Eric Sandeen [Wed, 23 May 2018 21:30:49 +0000 (16:30 -0500)] 
xfsprogs: be careful about what we stat in platform_check_mount

After we lost ustat(2) in commit 4e7a824, we ended up with a slightly
bonkers method to determine if our target block device was mounted:
it goes through every entry returned by getmntent and stats the dir
to see if its underlying device matches ours.

Unfortunately that dir might be a hung nfs server and sadness ensues.

So just do a really simple sanity check before we try to stat the
mountpoint: does its device start with a / ?  If not, skip it.

Fixes: 4e7a824 ("libxfs/linux.c: Replace use of ustat by stat")
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_growfs: refactor geometry reporting
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_growfs: refactor geometry reporting

Use the new geometry pretty-printing function.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_info: call xfs_db for offline filesystems
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_info: call xfs_db for offline filesystems

If the online filesystem geometry query doesn't work, try using xfs_db
to see if we can grab the information offline.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_info: move to xfs_spaceman
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_info: move to xfs_spaceman

Move xfs_info to be under spaceman so that we can remove growfs -N.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_spaceman: add a superblock info command
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_spaceman: add a superblock info command

Add an 'info' command to pretty-print the superblock geometry.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_spaceman: print a nicer message when file path isn't on xfs
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_spaceman: print a nicer message when file path isn't on xfs

If the file path passed in is not something on an xfs filesystem, print
a nice message about that instead of yelling about ioctls.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_db: add a superblock info command
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_db: add a superblock info command

Add an 'info' command to pretty-print the superblock geometry.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agomkfs: use geometry generation / helper functions
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
mkfs: use geometry generation / helper functions

Since libxfs now has a function to fill out the geometry structure
and libfrog has a function to pretty-print the geometry, have mkfs
use the two helpers instead of open-coding it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agolibfrog: refactor fs geometry printing function
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
libfrog: refactor fs geometry printing function

Move the fs geometry printing function to libfrog so that mkfs and others
can share.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agolibfrog: move platform specific runtime support code out of libxfs
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
libfrog: move platform specific runtime support code out of libxfs

Move the platform support code to libfrog, which should remove the final
dependency of libfrog on libxfs.  libfrog is the runtime support
library, and these files provide platform support.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: don't assert on bad '.' entry in no-modify mode
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: don't assert on bad '.' entry in no-modify mode

During phase 3, we check the '.' entry of a directory inode and (in
modify mode) zap it if the name isn't valid.  During phase 6, we assert
that the '.' entry now reflects the correct name.  In no-modify mode
this is incorrect because we didn't actually fix anything, so repair
asserts and crashes.

Found by fuzzing bu[0].namelen = 4 in xfs/387 and running xfs_repair -n.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: check inode nsec for obviously garbage values
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: check inode nsec for obviously garbage values

It makes no sense to have an nsec value that is larger than 1 second,
so zero the field if this is the case.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: actually fix .. entries that point to inode zero
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: actually fix .. entries that point to inode zero

If we encounter a directory with an entry that points to inode zero,
we'll crash due to an ASSERT during process_inode_chunk.  This is due to
process_dir2_data not arranging for phase 6 to fix the parent pointer
when '..' -> 0, so do that.  Found via xfs/386 fuzzing bu[1].inumber to
zero.

[sandeen: change "parent pointer" to parent directory for clarity]

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: don't crash if da btree is corrupt
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: don't crash if da btree is corrupt

In the recursive verify_da_path call chain, we decide to examine the
next upper level if the current entry points past the end of the
entries.  However, we don't check for a node with zero entries (which
should be impossible) so we run right off the end of the da cursor's
level array and crash.  Found by fuzzing hdr.count in xfs/402.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: only update in-core extent state after scanning full extent
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: only update in-core extent state after scanning full extent

In process_bmbt_reclist_int, only update the in-core extent state after
clearing the entire extent for conflicts.  If we encounter conflicts
we'll try rebuilding the fork from rmap data and rescanning the fork.
It is essential to avoid polluting the in-memory state with garbage
data so that we don't end up nuking other files needlessly.  Found by
fuzzing recs[1].blockcount = middlebit in xfs/380.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: invalidate dirty dir buffers when we zap a directory
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: invalidate dirty dir buffers when we zap a  directory

If we decide to rebuild a directory in phase 6, we need to find and
invalidate all of the old directory buffers so that they don't get
written out, which can trigger write verifier errors when we finish.
This fixes the write verifier errors in phase 7 that can occur via
xfs/382.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: treat zero da btree pointers as corruption
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: treat zero da btree pointers as corruption

If a da btree pointer is zero (i.e. the beginning of the fork) report
this as a corrupt tree to the caller instead of telling it that
everything is good.  Fixes assertion errors when fuzzing
nbtree[0].before to zero in xfs/394.

[sandeen: tweak comment above change for clarity]

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: zap corrupt remote symlink
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: zap corrupt remote symlink

If a remote symlink has a corrupted remote block, just zap the symlink.
Fixes total lack of repair activity in xfs/382.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: validate some of the log space information
Darrick J. Wong [Wed, 23 May 2018 21:30:48 +0000 (16:30 -0500)] 
xfs_repair: validate some of the log space information

Validate the log space information in a similar manner to the kernel so
that repair will stumble over (and fix) broken log info that prevents
mounting.  Fixes logsunit fuzz-and-fix failures in xfs/350.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: don't leak buffer on xattr remote buf verifier error
Darrick J. Wong [Wed, 23 May 2018 21:30:47 +0000 (16:30 -0500)] 
xfs_repair: don't leak buffer on xattr remote buf verifier  error

If we try to read an xattr remote buffer and hit a verifier error,
release the buffer instead of leaking it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs_repair: examine all remote attribute blocks
Darrick J. Wong [Wed, 23 May 2018 21:30:47 +0000 (16:30 -0500)] 
xfs_repair: examine all remote attribute blocks

Examine all remote xattr values of a file, not just the XFS_ATTR_ROOT
values.  This enables us to detect and zap corrupt user xattrs, as
tested by xfs/404.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoMerge branch 'libxfs-4.17-sync' into for-next
Eric Sandeen [Wed, 23 May 2018 21:29:49 +0000 (16:29 -0500)] 
Merge branch 'libxfs-4.17-sync' into for-next

6 years agoxfs: don't fail when converting shortform attr to long form during ATTR_REPLACE libxfs-4.17-sync
Darrick J. Wong [Thu, 17 May 2018 17:00:06 +0000 (12:00 -0500)] 
xfs: don't fail when converting shortform attr to long form during ATTR_REPLACE

Source kernel commit: 7b38460dc8e4eafba06c78f8e37099d3b34d473c

Kanda Motohiro reported that expanding a tiny xattr into a large xattr
fails on XFS because we remove the tiny xattr from a shortform fork and
then try to re-add it after converting the fork to extents format having
not removed the ATTR_REPLACE flag.  This fails because the attr is no
longer present, causing a fs shutdown.

This is derived from the patch in his bug report, but we really
shouldn't ignore a nonzero retval from the remove call.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119
Reported-by: kanda.motohiro@gmail.com
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs: set format back to extents if xfs_bmap_extents_to_btree
Eric Sandeen [Thu, 17 May 2018 17:00:06 +0000 (12:00 -0500)] 
xfs: set format back to extents if xfs_bmap_extents_to_btree

Source kernel commit: 2c4306f719b083d17df2963bc761777576b8ad1b

If xfs_bmap_extents_to_btree fails in a mode where we call
xfs_iroot_realloc(-1) to de-allocate the root, set the
format back to extents.

Otherwise we can assume we can dereference ifp->if_broot
based on the XFS_DINODE_FMT_BTREE format, and crash.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199423
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfs: enhance dinode verifier
Eric Sandeen [Thu, 17 May 2018 17:00:05 +0000 (12:00 -0500)] 
xfs: enhance dinode verifier

Source kernel commit: b42db0860e13067fcc7cbfba3966c9e652668bbc

Add several more validations to xfs_dinode_verify:

- For LOCAL data fork formats, di_nextents must be 0.
- For LOCAL attr fork formats, di_anextents must be 0.
- For inodes with no attr fork offset,
- format must be XFS_DINODE_FMT_EXTENTS if set at all
- di_anextents must be 0.

Thanks to dchinner for pointing out a couple related checks I had
forgotten to add.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199377
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoMerge branch 'libxfs-4.17-sync' into for-next
Eric Sandeen [Tue, 1 May 2018 02:59:43 +0000 (21:59 -0500)] 
Merge branch 'libxfs-4.17-sync' into for-next

6 years agoxfsprogs: Release v4.16.1 v4.16.1
Eric Sandeen [Tue, 1 May 2018 02:34:51 +0000 (21:34 -0500)] 
xfsprogs: Release v4.16.1

Update all the necessary files for a 4.16.1 release.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agofsck.xfs: do not use 'function' keyword
Eric Sandeen [Tue, 1 May 2018 02:26:24 +0000 (21:26 -0500)] 
fsck.xfs: do not use 'function' keyword

It was pointed out on irc that fsck.xfs uses the 'function' keyword
although it invokes /bin/sh - 'function' is a bashism.  It's not needed
here, so just remove it.

Fixes: 04a2d5d ("fsck.xfs: allow forced repairs using xfs_repair")
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
6 years agoxfsprogs: Release v4.16.0 v4.16.0
Eric Sandeen [Thu, 26 Apr 2018 20:13:34 +0000 (15:13 -0500)] 
xfsprogs: Release v4.16.0

Update all the necessary files for a 4.16.0 release.

Signed-off-by: Eric Sandeen <sandeen@sandeen.net>