HomeFreeBSD

Allow zhack label repair to restore detached devices.

Description

Allow zhack label repair to restore detached devices.

This commit expands on the zhack label repair command in d04b5c9 by
adding the -u option to undetach a device by regenerating uberblocks,
in addition to the existing functionality of fixing checksums, now
represented by -c. Previous behavior is retained in the case of no
options.

The changes are heavily inspired by Jeff Bonwick's labelfix
utility, as archived at:

https://gist.github.com/jjwhitney/baaa63144da89726e482

Additionally, it is now capable of properly determining the size of
block devices and other media, as well as handling sizes which are
not divisible by 2^18. This should make it viable for use on physical
devices and partitions, in addition to files.

These changes should make it possible to import zpools that have had
their uberblocks erased, such as in the case of pools rendered
inaccessible by erroneous detach commands.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: buzzingwires <buzzingwires@outlook.com>
Closes #14773

Details

Provenance
buzzingwires <131118055+buzzingwires@users.noreply.github.com>Authored on May 3 2023, 4:03 PM
GitHub <noreply@github.com>Committed on May 3 2023, 4:03 PM
Parents
rG9de5300c7fc0: Optimize check_filesystem() and process_error_log()
Branches
Unknown
Tags
Unknown

Event Timeline

GitHub <noreply@github.com> committed rGa46001adb9b1: Allow zhack label repair to restore detached devices. (authored by buzzingwires <131118055+buzzingwires@users.noreply.github.com>).May 3 2023, 4:03 PM