mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Do not request data L1 buffers on scan prefetch.
Set ARC_FLAG_NO_BUF when prefetching data L1 buffers for scan. We do not prefetch data L0 buffers, so we do not need the L1 buffers, only want them to be ready in ARC. This saves some CPU time on the buffers decompression. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Sponsored by: iXsystems, Inc. Closes #15029
This commit is contained in:
		
							parent
							
								
									73ba5df31a
								
							
						
					
					
						commit
						83b0967c1f
					
				| @ -2080,10 +2080,16 @@ dsl_scan_prefetch_thread(void *arg) | ||||
| 			zio_flags |= ZIO_FLAG_RAW; | ||||
| 		} | ||||
| 
 | ||||
| 		/* We don't need data L1 buffer since we do not prefetch L0. */ | ||||
| 		blkptr_t *bp = &spic->spic_bp; | ||||
| 		if (BP_GET_LEVEL(bp) == 1 && BP_GET_TYPE(bp) != DMU_OT_DNODE && | ||||
| 		    BP_GET_TYPE(bp) != DMU_OT_OBJSET) | ||||
| 			flags |= ARC_FLAG_NO_BUF; | ||||
| 
 | ||||
| 		/* issue the prefetch asynchronously */ | ||||
| 		(void) arc_read(scn->scn_zio_root, scn->scn_dp->dp_spa, | ||||
| 		    &spic->spic_bp, dsl_scan_prefetch_cb, spic->spic_spc, | ||||
| 		    ZIO_PRIORITY_SCRUB, zio_flags, &flags, &spic->spic_zb); | ||||
| 		(void) arc_read(scn->scn_zio_root, spa, bp, | ||||
| 		    dsl_scan_prefetch_cb, spic->spic_spc, ZIO_PRIORITY_SCRUB, | ||||
| 		    zio_flags, &flags, &spic->spic_zb); | ||||
| 
 | ||||
| 		kmem_free(spic, sizeof (scan_prefetch_issue_ctx_t)); | ||||
| 	} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alexander Motin
						Alexander Motin