mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	null_blk: complete requests from ->timeout
By completing the request entirely in the driver we can remove the BLK_EH_HANDLED return value and thus the split responsibility between the driver and the block layer that has been causing trouble. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									c5fb85b7ff
								
							
						
					
					
						commit
						0df0bb080a
					
				
					 1 changed files with 4 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -1365,7 +1365,8 @@ static blk_qc_t null_queue_bio(struct request_queue *q, struct bio *bio)
 | 
			
		|||
static enum blk_eh_timer_return null_rq_timed_out_fn(struct request *rq)
 | 
			
		||||
{
 | 
			
		||||
	pr_info("null: rq %p timed out\n", rq);
 | 
			
		||||
	return BLK_EH_HANDLED;
 | 
			
		||||
	blk_mq_complete_request(rq);
 | 
			
		||||
	return BLK_EH_DONE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int null_rq_prep_fn(struct request_queue *q, struct request *req)
 | 
			
		||||
| 
						 | 
				
			
			@ -1427,7 +1428,8 @@ static void null_request_fn(struct request_queue *q)
 | 
			
		|||
static enum blk_eh_timer_return null_timeout_rq(struct request *rq, bool res)
 | 
			
		||||
{
 | 
			
		||||
	pr_info("null: rq %p timed out\n", rq);
 | 
			
		||||
	return BLK_EH_HANDLED;
 | 
			
		||||
	blk_mq_complete_request(rq);
 | 
			
		||||
	return BLK_EH_DONE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static blk_status_t null_queue_rq(struct blk_mq_hw_ctx *hctx,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue