Add a "zstream decompress" subcommand

It can be used to repair a ZFS file system corrupted by ZFS bug #12762.
Use it like this:

zfs send -c <DS> | \
zstream decompress <OBJECT>,<OFFSET>[,<COMPRESSION_ALGO>] ... | \
zfs recv <DST_DS>

Reviewed-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Allan Jude <allan@klarasystems.com>
Signed-off-by: Alan Somers <asomers@gmail.com>
Sponsored-by:  Axcient
Workaround for #12762
Closes #13256
This commit is contained in:
Alan Somers
2022-06-24 14:28:42 -06:00
committed by GitHub
parent 1c0c729ab4
commit ccf89b39fe
7 changed files with 425 additions and 5 deletions
+2 -2
View File
@@ -65,7 +65,7 @@ highbit64(uint64_t i)
return (NBBY * sizeof (uint64_t) - __builtin_clzll(i));
}
static void *
void *
safe_calloc(size_t n)
{
void *rv = calloc(1, n);
@@ -81,7 +81,7 @@ safe_calloc(size_t n)
/*
* Safe version of fread(), exits on error.
*/
static int
int
sfread(void *buf, size_t size, FILE *fp)
{
int rv = fread(buf, size, 1, fp);