mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	FreeBSD: avoid memory allocation in arc_prune_async
Reviewed-by: Ryan Moeller <ryan@ixsystems.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Alexander Motin <mav@FreeBSD.org> Closes #12049
This commit is contained in:
		
							parent
							
								
									cc1c7b0171
								
							
						
					
					
						commit
						aa4a84e616
					
				| @ -158,10 +158,9 @@ arc_default_max(uint64_t min, uint64_t allmem) | ||||
| static void | ||||
| arc_prune_task(void *arg) | ||||
| { | ||||
| 	int64_t nr_scan = *(int64_t *)arg; | ||||
| 	int64_t nr_scan = (intptr_t)arg; | ||||
| 
 | ||||
| 	arc_reduce_target_size(ptob(nr_scan)); | ||||
| 	free(arg, M_TEMP); | ||||
| #if __FreeBSD_version >= 1300139 | ||||
| 	sx_xlock(&arc_vnlru_lock); | ||||
| 	vnlru_free_vfsops(nr_scan, &zfs_vfsops, arc_vnlru_marker); | ||||
| @ -186,13 +185,12 @@ void | ||||
| arc_prune_async(int64_t adjust) | ||||
| { | ||||
| 
 | ||||
| 	int64_t *adjustptr; | ||||
| 
 | ||||
| 	if ((adjustptr = malloc(sizeof (int64_t), M_TEMP, M_NOWAIT)) == NULL) | ||||
| 		return; | ||||
| 
 | ||||
| 	*adjustptr = adjust; | ||||
| 	taskq_dispatch(arc_prune_taskq, arc_prune_task, adjustptr, TQ_SLEEP); | ||||
| #ifndef __LP64__ | ||||
| 	if (adjust > INTPTR_MAX) | ||||
| 		adjust = INTPTR_MAX; | ||||
| #endif | ||||
| 	taskq_dispatch(arc_prune_taskq, arc_prune_task, | ||||
| 	    (void *)(intptr_t)adjust, TQ_SLEEP); | ||||
| 	ARCSTAT_BUMP(arcstat_prune); | ||||
| } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Alexander Motin
						Alexander Motin