Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restore and Check. #191

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open

Restore and Check. #191

wants to merge 21 commits into from

Conversation

aversecat
Copy link
Contributor

@aversecat aversecat commented Oct 16, 2024

This branch against main contains both the parallel restore library, tests, as well as the check code.

The check code has been reduced to our validation tool to identify inconsistencies in an umounted scoutfs meta device, only. All error injection and repair code has been omitted. The check code is used to validate the output of the parallel restore test cases.

  • - tests need to pass, but check fails. There either is a block reading problem in scoutfs check or there is an error inserting during restore.
  • - quota print outputs incorrect quota rules during test

@aversecat aversecat added the enhancement New feature or request label Oct 16, 2024
@aversecat aversecat force-pushed the auke/restore_and_check branch from 67bbd3c to ae4b55a Compare October 17, 2024 20:37
zabbo and others added 6 commits December 16, 2024 18:05
Signed-off-by: Zach Brown <[email protected]>
Signed-off-by: Auke Kok <[email protected]>
As I was committing the initial check command I had only partially
completed a rename of the function that checks the metadata allocators.

Signed-off-by: Zach Brown <[email protected]>
Add test_bit() to the trivial utils bitmap.c implementation.

Signed-off-by: Zach Brown <[email protected]>
Generally as we call block_get() we should validate that if the block
has a hdr, at a minimum the crc is correct and the magic value is
the expected value passed, and the fsid matches the superblock. This
function implements just that. Returns -EINVAL, up to the caller to
report a problem() and handle the outcome. For now the code just hard
fails, which incedentally makes it fail the clobber-repair.sh tests
I wrote.

Signed-off-by: Auke Kok <[email protected]>
Adds basic man page content for the `check` subcommand.

Signed-off-by: Auke Kok <[email protected]>
@aversecat aversecat force-pushed the auke/restore_and_check branch from ae4b55a to a2364f2 Compare December 17, 2024 18:09
@aversecat aversecat changed the title Restore and Check. **WIP** Restore and Check. Dec 17, 2024
aversecat and others added 15 commits December 19, 2024 18:47
We check superblock magic, crc, flags. data device superblock is
checked but a little less thorough.  We check whether the device is
still mounted, since that would make checking invalid to begin with.
Quorum blocks are validated to have sane contents.

We add a global problem counter so we can trivially measure and
report whether any problem was found at all, instead of iterating
over all the problems and checking each individual count.

We pick the standard exit code values from `fsck` and mirror their
intentional behavior. This results in `fsck.scoutfs` can now be
trivially created by making it a wrapper around `scoutfs check`.

Signed-off-by: Auke Kok <[email protected]>
Signed-off-by: Hunter Shaffer <[email protected]>
Import the kernel's rbtree implementation with a wrapper so we can use
it from userspace.

Signed-off-by: Zach Brown <[email protected]>
Signed-off-by: Zach Brown <[email protected]>
Signed-off-by: Hunter Shaffer <[email protected]>
Signed-off-by: Auke Kok <[email protected]>
This is the benchmark binary that bulk creates filesystem items, xattrs
and is heavily threaded to scope the performance of the library. The
test script invokes it to validate some basic constraints.

Signed-off-by: Zach Brown <[email protected]>
Signed-off-by: Hunter Shaffer <[email protected]>
Signed-off-by: Auke Kok <[email protected]>
Import a few more functions from the kernel's list.h into our imported
copy.

Signed-off-by: Zach Brown <[email protected]>
The list alloc blocks have an array of blknos that are offset by a start
field in the block header.  The print code wasn't using that and was
always referencing the beginning of the array, which could miss blocks.

Signed-off-by: Zach Brown <[email protected]>
This tool compies a source tree (whether it's scoutfs or not)
into an offline scoutfs meta device. It has only those 2 parameters
and does a single-process walk of the tree to restore all items
while preservice as much of the metadata as possible.

Signed-off-by: Hunter Shaffer <[email protected]>
Signed-off-by: Auke Kok <[email protected]>
@aversecat aversecat force-pushed the auke/restore_and_check branch from a2364f2 to fac2fec Compare December 19, 2024 23:47
@aversecat
Copy link
Contributor Author

pushed el7 fixes into this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants