Skip to contentSkip to conversation

block: Remove should_sort judgement when flush blk_plug.

PATCH In review majianpeng 2 participants 2 messages Dec 25, 2012 – Dec 26, 2012 Block layer

lore
Share & tools
lore

majianpeng

author
#0 lore raw

PATCH 1/1 block: Remove should_sort judgement when flush blk_plug.

In commit 975927b942c932,it add blk_rq_pos to sort rq when flushing. Although this commit was used for the situation which blk_plug handled multi devices on the same time like md device.
I think there must be some situations like this but only single device.
So remove the should_sort judgement.
Because the parameter should_sort is only for this purpose,it can delete should_sort from blk_plug.

---
 block/blk-core.c       |   13 +------------
 include/linux/blkdev.h |    1 -
 2 files changed, 1 insertion(+), 13 deletions(-)
block/blk-core.c +1 -12
index c973249..aca5d82 100644
@@ -1548,13 +1548,6 @@ get_rq:
 		if (list_empty(&plug->list))
 			trace_block_plug(q);
 		else {
-			if (!plug->should_sort) {
-				struct request *__rq;
-
-				__rq = list_entry_rq(plug->list.prev);
-				if (__rq->q != q)
-					plug->should_sort = 1;
-			}
 			if (request_count >= BLK_MAX_REQUEST_COUNT) {
 				blk_flush_plug_list(plug, false);
 				trace_block_plug(q);
@@ -2888,7 +2881,6 @@ void blk_start_plug(struct blk_plug *plug)
 	plug->magic = PLUG_MAGIC;
 	INIT_LIST_HEAD(&plug->list);
 	INIT_LIST_HEAD(&plug->cb_list);
-	plug->should_sort = 0;
 
 	/*
 	 * If this is a nested plug, don't actually assign it. It will be
@@ -2990,10 +2982,7 @@ void blk_flush_plug_list(struct blk_plug *plug, bool from_schedule)
 
 	list_splice_init(&plug->list, &list);
 
-	if (plug->should_sort) {
-		list_sort(NULL, &list, plug_rq_cmp);
-		plug->should_sort = 0;
-	}
+	list_sort(NULL, &list, plug_rq_cmp);
 
 	q = NULL;
 	depth = 0;
include/linux/blkdev.h +0 -1
index f94bc83..dbe7427 100644
@@ -974,7 +974,6 @@ struct blk_plug {
 	unsigned long magic; /* detect uninitialized use-cases */
 	struct list_head list; /* requests */
 	struct list_head cb_list; /* md requires an unplug callback */
-	unsigned int should_sort; /* list to be sorted before flushing? */
 };
 #define BLK_MAX_REQUEST_COUNT 16
 
Signature · 2 lines
1.7.9.5
�翳簕.n�+壏煯壄�+%娝�遍荻w�簕.n�+壏{炳G珴�妠ay�蕠跈�,jf"穐殢飦�戧鐉_璁(殠娸"濟�m���G珴�⒏?櫒璀�&x忈秈O曟瑉窔v豝�m����鹅�⒏?朓�
maintainer
#1 lore raw
Quoted 8 lines · majianpeng

In commit 975927b942c932,it add blk_rq_pos to sort rq when flushing. Although this commit was used for the situation which blk_plug handled multi devices on the same time like md device.
I think there must be some situations like this but only single device.
So remove the should_sort judgement.
Because the parameter should_sort is only for this purpose,it can delete should_sort from blk_plug.

Agree with the patch. It does not make sense to have ->should_sort and not set it for all the conditions that the list_sort() compare now checks for.

Applied for 3.9, thanks.

Signature · 1 line
Jens Axboe