mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +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_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++)
 | 
			
		||||
		if (((1ULL << c) & mask) == 0)
 | 
			
		||||
			*cfuncp++ = c;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user