mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	blk-mq: turn WARN_ON in __blk_mq_run_hw_queue into printk
We know this WARN_ON is harmless and in reality it may be trigged, so convert it to printk() and dump_stack() to avoid to confusing people. Also add comment about two releated races here. Cc: Christian Borntraeger <borntraeger@de.ibm.com> Cc: Stefan Haberland <sth@linux.vnet.ibm.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: "jianchao.wang" <jianchao.w.wang@oracle.com> Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									7bed45954b
								
							
						
					
					
						commit
						7df938fbc4
					
				
					 1 changed files with 20 additions and 2 deletions
				
			
		|  | @ -1294,9 +1294,27 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx) | |||
| 	/*
 | ||||
| 	 * We should be running this queue from one of the CPUs that | ||||
| 	 * are mapped to it. | ||||
| 	 * | ||||
| 	 * There are at least two related races now between setting | ||||
| 	 * hctx->next_cpu from blk_mq_hctx_next_cpu() and running | ||||
| 	 * __blk_mq_run_hw_queue(): | ||||
| 	 * | ||||
| 	 * - hctx->next_cpu is found offline in blk_mq_hctx_next_cpu(), | ||||
| 	 *   but later it becomes online, then this warning is harmless | ||||
| 	 *   at all | ||||
| 	 * | ||||
| 	 * - hctx->next_cpu is found online in blk_mq_hctx_next_cpu(), | ||||
| 	 *   but later it becomes offline, then the warning can't be | ||||
| 	 *   triggered, and we depend on blk-mq timeout handler to | ||||
| 	 *   handle dispatched requests to this hctx | ||||
| 	 */ | ||||
| 	WARN_ON(!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask) && | ||||
| 		cpu_online(hctx->next_cpu)); | ||||
| 	if (!cpumask_test_cpu(raw_smp_processor_id(), hctx->cpumask) && | ||||
| 		cpu_online(hctx->next_cpu)) { | ||||
| 		printk(KERN_WARNING "run queue from wrong CPU %d, hctx %s\n", | ||||
| 			raw_smp_processor_id(), | ||||
| 			cpumask_empty(hctx->cpumask) ? "inactive": "active"); | ||||
| 		dump_stack(); | ||||
| 	} | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * We can't run the queue inline with ints disabled. Ensure that | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Ming Lei
						Ming Lei