From: Chandan Rajendra <chandan@linux.vnet.ibm.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH 0/9] xfs-5.0: inode scrubber fixes
Date: Wed, 19 Dec 2018 14:01:13 +0530 [thread overview]
Message-ID: <1644698.IS83YqTc9I@localhost.localdomain> (raw)
In-Reply-To: <154344761877.3835.7785580513047409388.stgit@magnolia>
On Thursday, November 29, 2018 4:56:58 AM IST Darrick J. Wong wrote:
> Hi all,
>
> Here are fixes for some problems with the inode btree scrub code, namely
> that the existing code does not handle the case where a single inode
> cluster is mapped by multiple inobt records.
>
> Patch 1 teaches the inode record block counting code to handle the case
> where there's more than one inobt record per inode cluster. We do this
> by counting inodes and converting to blocks only at the end.
>
> Patch 2 corrects a condition where we needed to clamp the number of
> inodes checked for a given inobt record to the inode chunk size.
>
> Patches 3-4 move the inobt record alignment checks to a separate
> function and enhance the function to check that when we have more than
> one inobt record per cluster we actually check that *all* of the
> necessary records are present and in the correct order.
>
> Patches 5-7 reorganize the inobt free data checks to deal with the
> "multiple inobt records per icluster" situation. In restructuring the
> code to do so, we also rename variables and functions to be less
> confusing about what they're there for. We also fix the 'is the inode
> free?' check to calculate dinode buffer offsets correctly in the
> "multiple inobt records per icluster" situation.
>
> Patch 8 aborts the xattr scrub loop if there are pending fatal signals.
>
> Patch 9 checks that for any directory or attr fork there are no extent
> maps that stretch beyond what a xfs_dablk_t can map.
>
> If you're going to start using this mess, you probably ought to just
> pull from my git trees. The kernel patches[1] should apply against
> 4.20-rc4.
>
> Comments and questions are, as always, welcome.
Hi Darrick,
I reviewed patches 1 through 7. The fixes look good.
I am not well versed with the XFS code that deals with xattrs &
directories. Hence I could not review patches 8 and 9.
I did a simple scrub test on a 64k blocksized filesystem running a kernel
having the following commit as the HEAD,
commit 6c4e1579b332e52566c11416e0dd0fa91a3b8f70 (HEAD -> djwong-devel, djwong-xfs-linux/djwong-devel)
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date: Thu Oct 18 17:35:49 2018 -0700
xfs: repair quotas
Fix anything that causes the quota verifiers to fail.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Xfsprogs had the following as the topmost commit,
commit 633eec2a893c3be9796dad188144b00e084560ec (HEAD -> djwong-devel, djwong/djwong-devel)
Author: Darrick J. Wong <darrick.wong@oracle.com>
Date: Tue Nov 13 17:38:31 2018 -0800
xfs: repair extended attributes
If the extended attributes look bad, try to sift through the rubble to
find whatever keys/values we can, zap the attr tree, and re-add the
values.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
The test filesystem had 2000 files with each being 64k in size.
root@ubuntu:~# xfs_scrub -d -n -v /mnt/
EXPERIMENTAL xfs_scrub program in use! Use at your own risk!
Phase 1: Find filesystem geometry.
/mnt/: using 8 threads to scrub.
Phase 2: Check internal metadata.
Info: AG 1 superblock: Optimization is possible. (scrub.c line 269)
Info: AG 3 superblock: Optimization is possible. (scrub.c line 269)
Info: AG 2 superblock: Optimization is possible. (scrub.c line 269)
Error: AG 0 free inode btree: Repairs are required. (scrub.c line 253)
Phase 3: Scan all inodes.
Phase 5: Check directory tree.
Info: /mnt/: Filesystem has errors, skipping connectivity checks. (phase5.c line 295)
Phase 7: Check summary counters.
163.9MiB data used; 1.9K inodes used.
152.7MiB data found; 1.9K inodes found.
1.9K inodes counted; 1.9K inodes checked.
/mnt/: errors found: 1
/mnt/: Re-run xfs_scrub without -n.
Looks like we have a bug when scrubbing the Free inode btree. I will work on
figuring out the root cause and also plan to execute scrub tests shipped with
xfstests.
--
chandan
next prev parent reply other threads:[~2018-12-19 8:31 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-28 23:26 [PATCH 0/9] xfs-5.0: inode scrubber fixes Darrick J. Wong
2018-11-28 23:27 ` [PATCH 1/9] xfs: count inode blocks correctly in inobt scrub Darrick J. Wong
2018-11-28 23:27 ` [PATCH 2/9] xfs: never try to scrub more than 64 inodes per inobt record Darrick J. Wong
2018-11-28 23:27 ` [PATCH 3/9] xfs: check the ir_startino alignment directly Darrick J. Wong
2018-11-28 23:27 ` [PATCH 4/9] xfs: check inobt record alignment on big block filesystems Darrick J. Wong
2018-11-28 23:27 ` [PATCH 5/9] xfs: hoist inode cluster checks out of loop Darrick J. Wong
2018-11-28 23:27 ` [PATCH 6/9] xfs: clean up the inode cluster checking in the inobt scrub Darrick J. Wong
2018-12-19 8:31 ` Chandan Rajendra
2018-11-28 23:27 ` [PATCH 7/9] xfs: scrub big block inode btrees correctly Darrick J. Wong
2018-11-28 23:27 ` [PATCH 8/9] xfs: abort xattr scrub if fatal signals are pending Darrick J. Wong
2018-11-28 23:27 ` [PATCH 9/9] xfs: scrub should flag dir/attr offsets that aren't mappable with xfs_dablk_t Darrick J. Wong
2018-12-19 8:31 ` Chandan Rajendra [this message]
2018-12-19 13:15 ` [PATCH 0/9] xfs-5.0: inode scrubber fixes Chandan Rajendra
2018-12-19 20:33 ` Darrick J. Wong
2018-12-31 11:39 ` Chandan Rajendra
2018-12-31 18:51 ` Darrick J. Wong
2019-01-01 15:29 ` Chandan Rajendra
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=1644698.IS83YqTc9I@localhost.localdomain \
--to=chandan@linux.vnet.ibm.com \
--cc=darrick.wong@oracle.com \
--cc=linux-xfs@vger.kernel.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.