From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, zlang@redhat.com
Cc: fstests@vger.kernel.org, guan@eryu.me, linux-xfs@vger.kernel.org
Subject: [PATCHSET v30.6 4/6] xfs: detect and correct directory tree structures
Date: Mon, 17 Jun 2024 17:46:28 -0700 [thread overview]
Message-ID: <171867146313.794337.2022231429195368114.stgit@frogsfrogsfrogs> (raw)
Hi all,
Historically, checking the tree-ness of the directory tree structure has
not been complete. Cycles of subdirectories break the tree properties,
as do subdirectories with multiple parents. It's easy enough for DFS to
detect problems as long as one of the participants is reachable from the
root, but this technique cannot find unconnected cycles.
Directory parent pointers change that, because we can discover all of
these problems from a simple walk from a subdirectory towards the root.
For each child we start with, if the walk terminates without reaching
the root, we know the path is disconnected and ought to be attached to
the lost and found. If we find ourselves, we know this is a cycle and
can delete an incoming edge. If we find multiple paths to the root, we
know to delete an incoming edge.
Even better, once we've finished walking paths, we've identified the
good ones and know which other path(s) to remove.
If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.
This has been running on the djcloud for months with no problems. Enjoy!
Comments and questions are, as always, welcome.
--D
kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=scrub-directory-tree
xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=scrub-directory-tree
fstests git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfstests-dev.git/log/?h=scrub-directory-tree
---
Commits in this patchset:
* common/fuzzy: stress directory tree modifications with the dirtree tester
* scrub: test correction of directory tree corruptions
---
tests/xfs/1864 | 38 +++++++++++++
tests/xfs/1864.out | 2 +
tests/xfs/1865 | 38 +++++++++++++
tests/xfs/1865.out | 2 +
tests/xfs/1866 | 122 ++++++++++++++++++++++++++++++++++++++++
tests/xfs/1866.out | 19 ++++++
tests/xfs/1867 | 133 ++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/1867.out | 25 ++++++++
tests/xfs/1868 | 121 ++++++++++++++++++++++++++++++++++++++++
tests/xfs/1868.out | 21 +++++++
tests/xfs/1869 | 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/1869.out | 32 +++++++++++
tests/xfs/1870 | 146 ++++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/1870.out | 30 ++++++++++
tests/xfs/1871 | 78 ++++++++++++++++++++++++++
tests/xfs/1871.out | 2 +
16 files changed, 966 insertions(+)
create mode 100755 tests/xfs/1864
create mode 100644 tests/xfs/1864.out
create mode 100755 tests/xfs/1865
create mode 100644 tests/xfs/1865.out
create mode 100755 tests/xfs/1866
create mode 100644 tests/xfs/1866.out
create mode 100755 tests/xfs/1867
create mode 100644 tests/xfs/1867.out
create mode 100755 tests/xfs/1868
create mode 100644 tests/xfs/1868.out
create mode 100755 tests/xfs/1869
create mode 100644 tests/xfs/1869.out
create mode 100755 tests/xfs/1870
create mode 100644 tests/xfs/1870.out
create mode 100755 tests/xfs/1871
create mode 100644 tests/xfs/1871.out
next reply other threads:[~2024-06-18 0:46 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-18 0:46 Darrick J. Wong [this message]
2024-06-18 0:52 ` [PATCH 1/2] common/fuzzy: stress directory tree modifications with the dirtree tester Darrick J. Wong
2024-06-19 6:18 ` Christoph Hellwig
2024-06-18 0:52 ` [PATCH 2/2] scrub: test correction of directory tree corruptions Darrick J. Wong
2024-06-19 6:19 ` Christoph Hellwig
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=171867146313.794337.2022231429195368114.stgit@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=guan@eryu.me \
--cc=linux-xfs@vger.kernel.org \
--cc=zlang@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox