mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Initialize parity blocks before RAID-Z reconstruction benchmarking
benchmark_raidz() allocates a row to benchmark parity calculation and reconstruction. In the latter case, the parity blocks are left uninitialized, leading to reports from KMSAN. Initialize parity blocks to 0xAA as we do for the data earlier in the function. This does not affect the selected RAID-Z implementation on any of several systems tested. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Mark Johnston <markj@FreeBSD.org> Closes #12473
This commit is contained in:
		
							parent
							
								
									584b7a214e
								
							
						
					
					
						commit
						2016d7fb9c
					
				| @ -465,6 +465,7 @@ benchmark_raidz(void) | ||||
| 	raidz_supp_impl_cnt = c;	/* number of supported impl */ | ||||
| 
 | ||||
| #if defined(_KERNEL) | ||||
| 	abd_t *pabd; | ||||
| 	zio_t *bench_zio = NULL; | ||||
| 	raidz_map_t *bench_rm = NULL; | ||||
| 	uint64_t bench_parity; | ||||
| @ -492,6 +493,12 @@ benchmark_raidz(void) | ||||
| 	bench_rm = vdev_raidz_map_alloc(bench_zio, SPA_MINBLOCKSHIFT, | ||||
| 	    BENCH_COLS, PARITY_PQR); | ||||
| 
 | ||||
| 	/* Ensure that fake parity blocks are initialized */ | ||||
| 	for (c = 0; c < bench_rm->rm_row[0]->rr_firstdatacol; c++) { | ||||
| 		pabd = bench_rm->rm_row[0]->rr_col[c].rc_abd; | ||||
| 		memset(abd_to_buf(pabd), 0xAA, abd_get_size(pabd)); | ||||
| 	} | ||||
| 
 | ||||
| 	for (int fn = 0; fn < RAIDZ_REC_NUM; fn++) | ||||
| 		benchmark_raidz_impl(bench_rm, fn, benchmark_rec_impl); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Mark Johnston
						Mark Johnston