mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	block: add plug while submitting IO
So that if caller didn't use plug, for example, __blkdev_direct_IO_simple() and __blkdev_direct_IO_async(), block layer can still benefit from caching nsec time in the plug. Signed-off-by: Yu Kuai <yukuai3@huawei.com> Link: https://lore.kernel.org/r/20240509123825.3225207-1-yukuai1@huaweicloud.com Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									3a861560cc
								
							
						
					
					
						commit
						060406c61c
					
				| @ -646,11 +646,13 @@ static void __submit_bio(struct bio *bio) | |||||||
| static void __submit_bio_noacct(struct bio *bio) | static void __submit_bio_noacct(struct bio *bio) | ||||||
| { | { | ||||||
| 	struct bio_list bio_list_on_stack[2]; | 	struct bio_list bio_list_on_stack[2]; | ||||||
|  | 	struct blk_plug plug; | ||||||
| 
 | 
 | ||||||
| 	BUG_ON(bio->bi_next); | 	BUG_ON(bio->bi_next); | ||||||
| 
 | 
 | ||||||
| 	bio_list_init(&bio_list_on_stack[0]); | 	bio_list_init(&bio_list_on_stack[0]); | ||||||
| 	current->bio_list = bio_list_on_stack; | 	current->bio_list = bio_list_on_stack; | ||||||
|  | 	blk_start_plug(&plug); | ||||||
| 
 | 
 | ||||||
| 	do { | 	do { | ||||||
| 		struct request_queue *q = bdev_get_queue(bio->bi_bdev); | 		struct request_queue *q = bdev_get_queue(bio->bi_bdev); | ||||||
| @ -684,19 +686,23 @@ static void __submit_bio_noacct(struct bio *bio) | |||||||
| 		bio_list_merge(&bio_list_on_stack[0], &bio_list_on_stack[1]); | 		bio_list_merge(&bio_list_on_stack[0], &bio_list_on_stack[1]); | ||||||
| 	} while ((bio = bio_list_pop(&bio_list_on_stack[0]))); | 	} while ((bio = bio_list_pop(&bio_list_on_stack[0]))); | ||||||
| 
 | 
 | ||||||
|  | 	blk_finish_plug(&plug); | ||||||
| 	current->bio_list = NULL; | 	current->bio_list = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void __submit_bio_noacct_mq(struct bio *bio) | static void __submit_bio_noacct_mq(struct bio *bio) | ||||||
| { | { | ||||||
| 	struct bio_list bio_list[2] = { }; | 	struct bio_list bio_list[2] = { }; | ||||||
|  | 	struct blk_plug plug; | ||||||
| 
 | 
 | ||||||
| 	current->bio_list = bio_list; | 	current->bio_list = bio_list; | ||||||
|  | 	blk_start_plug(&plug); | ||||||
| 
 | 
 | ||||||
| 	do { | 	do { | ||||||
| 		__submit_bio(bio); | 		__submit_bio(bio); | ||||||
| 	} while ((bio = bio_list_pop(&bio_list[0]))); | 	} while ((bio = bio_list_pop(&bio_list[0]))); | ||||||
| 
 | 
 | ||||||
|  | 	blk_finish_plug(&plug); | ||||||
| 	current->bio_list = NULL; | 	current->bio_list = NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Yu Kuai
						Yu Kuai