mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 19:19:32 +03:00
Make zdb -R scale less poorly
zdb -R with :d tries to use gzip decompression 9 times per size. There's absolutely no reason for that, they're all the same decompressor. Reviewed-by: Brian Atkinson <batkinson@lanl.gov> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rich Ercolani <rincebrain@gmail.com> Closes #15726
This commit is contained in:
parent
4d4972ed98
commit
7bccf98a73
@ -8491,6 +8491,14 @@ zdb_decompress_block(abd_t *pabd, void *buf, void *lbuf, uint64_t lsize,
|
|||||||
*cfuncp++ = ZIO_COMPRESS_LZ4;
|
*cfuncp++ = ZIO_COMPRESS_LZ4;
|
||||||
*cfuncp++ = ZIO_COMPRESS_LZJB;
|
*cfuncp++ = ZIO_COMPRESS_LZJB;
|
||||||
mask |= ZIO_COMPRESS_MASK(LZ4) | ZIO_COMPRESS_MASK(LZJB);
|
mask |= ZIO_COMPRESS_MASK(LZ4) | ZIO_COMPRESS_MASK(LZJB);
|
||||||
|
/*
|
||||||
|
* Every gzip level has the same decompressor, no need to
|
||||||
|
* run it 9 times per bruteforce attempt.
|
||||||
|
*/
|
||||||
|
mask |= ZIO_COMPRESS_MASK(GZIP_2) | ZIO_COMPRESS_MASK(GZIP_3);
|
||||||
|
mask |= ZIO_COMPRESS_MASK(GZIP_4) | ZIO_COMPRESS_MASK(GZIP_5);
|
||||||
|
mask |= ZIO_COMPRESS_MASK(GZIP_6) | ZIO_COMPRESS_MASK(GZIP_7);
|
||||||
|
mask |= ZIO_COMPRESS_MASK(GZIP_8) | ZIO_COMPRESS_MASK(GZIP_9);
|
||||||
for (int c = 0; c < ZIO_COMPRESS_FUNCTIONS; c++)
|
for (int c = 0; c < ZIO_COMPRESS_FUNCTIONS; c++)
|
||||||
if (((1ULL << c) & mask) == 0)
|
if (((1ULL << c) & mask) == 0)
|
||||||
*cfuncp++ = c;
|
*cfuncp++ = c;
|
||||||
|
Loading…
Reference in New Issue
Block a user