mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	Revert "Switch KM_SLEEP to KM_PUSHPAGE"
This reverts commit cd5ca4b2f8
due to conflicts in the higher TQ_ bits which caused incorrect
behavior.
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
			
			
This commit is contained in:
		
							parent
							
								
									dd87332f47
								
							
						
					
					
						commit
						330fe010e4
					
				| @ -62,7 +62,6 @@ typedef struct taskq_ent { | ||||
|  */ | ||||
| #define TQ_SLEEP                KM_SLEEP | ||||
| #define TQ_NOSLEEP              KM_NOSLEEP | ||||
| #define TQ_PUSHPAGE             KM_PUSHPAGE | ||||
| #define TQ_NOQUEUE              0x01000000 | ||||
| #define TQ_NOALLOC              0x02000000 | ||||
| #define TQ_NEW                  0x04000000 | ||||
|  | ||||
| @ -50,6 +50,8 @@ task_alloc(taskq_t *tq, uint_t flags) | ||||
|         SENTRY; | ||||
| 
 | ||||
|         ASSERT(tq); | ||||
|         ASSERT(flags & (TQ_SLEEP | TQ_NOSLEEP));               /* One set */ | ||||
|         ASSERT(!((flags & TQ_SLEEP) && (flags & TQ_NOSLEEP))); /* Not both */ | ||||
|         ASSERT(spin_is_locked(&tq->tq_lock)); | ||||
| retry: | ||||
|         /* Acquire taskq_ent_t's from free list if available */ | ||||
| @ -552,7 +554,7 @@ __taskq_create(const char *name, int nthreads, pri_t pri, | ||||
| 		nthreads = MAX((num_online_cpus() * nthreads) / 100, 1); | ||||
| 	} | ||||
| 
 | ||||
|         tq = kmem_alloc(sizeof(*tq), KM_PUSHPAGE); | ||||
|         tq = kmem_alloc(sizeof(*tq), KM_SLEEP); | ||||
|         if (tq == NULL) | ||||
|                 SRETURN(NULL); | ||||
| 
 | ||||
| @ -578,12 +580,12 @@ __taskq_create(const char *name, int nthreads, pri_t pri, | ||||
| 
 | ||||
|         if (flags & TASKQ_PREPOPULATE) | ||||
|                 for (i = 0; i < minalloc; i++) | ||||
|                         task_done(tq, task_alloc(tq, TQ_PUSHPAGE | TQ_NEW)); | ||||
|                         task_done(tq, task_alloc(tq, TQ_SLEEP | TQ_NEW)); | ||||
| 
 | ||||
|         spin_unlock_irqrestore(&tq->tq_lock, tq->tq_lock_flags); | ||||
| 
 | ||||
| 	for (i = 0; i < nthreads; i++) { | ||||
| 		tqt = kmem_alloc(sizeof(*tqt), KM_PUSHPAGE); | ||||
| 		tqt = kmem_alloc(sizeof(*tqt), KM_SLEEP); | ||||
| 		INIT_LIST_HEAD(&tqt->tqt_thread_list); | ||||
| 		INIT_LIST_HEAD(&tqt->tqt_active_list); | ||||
| 		tqt->tqt_tq = tq; | ||||
|  | ||||
| @ -98,14 +98,14 @@ __thread_create(caddr_t stk, size_t  stksize, thread_func_t func, | ||||
| 	/* Variable stack size unsupported */ | ||||
| 	ASSERT(stk == NULL); | ||||
| 
 | ||||
| 	tp = kmem_alloc(sizeof(thread_priv_t), KM_PUSHPAGE); | ||||
| 	tp = kmem_alloc(sizeof(thread_priv_t), KM_SLEEP); | ||||
| 	if (tp == NULL) | ||||
| 		SRETURN(NULL); | ||||
| 
 | ||||
| 	tp->tp_magic = TP_MAGIC; | ||||
| 	tp->tp_name_size = strlen(name) + 1; | ||||
| 
 | ||||
| 	tp->tp_name = kmem_alloc(tp->tp_name_size, KM_PUSHPAGE); | ||||
| 	tp->tp_name = kmem_alloc(tp->tp_name_size, KM_SLEEP); | ||||
|         if (tp->tp_name == NULL) { | ||||
| 		kmem_free(tp, sizeof(thread_priv_t)); | ||||
| 		SRETURN(NULL); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Brian Behlendorf
						Brian Behlendorf