On 05.03.2013 08:42, Willy Tarreau wrote:
If you want to make any backport, please keep the original patch format with the commit description and add your signed-off-by at the bottom so that we keep the workflow intact. And for each patch that is either in mainline or in another stable branch, please report the original commit ID in the patch's description. That helps a lot to know whether we are affected when a regression is reported for this patch.
Sorry for that. Attached the patch with description. Thank you. -- der tom
>From 79da0644a8e0838522828f106e4049639eea6baf Mon Sep 17 00:00:00 2001 From: Jens Axboe <jens.axboe@xxxxxxxxxx> Date: Tue, 23 Feb 2010 07:40:43 +0000 Subject: Revert "block: improve queue_should_plug() by looking at IO depths" This reverts commit fb1e75389bd06fd5987e9cda1b4e0305c782f854. "Benjamin S." <sbenni@xxxxxx> reports that the patch in question causes a big drop in sequential throughput for him, dropping from 200MB/sec down to only 70MB/sec. Needs to be investigated more fully, for now lets just revert the offending commit. Conflicts: include/linux/blkdev.h Backported to 2.6.32.y. 2.6.33.y and following kernel versions have this fix. Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx> Signed-off-by: Thomas Bork <tom@xxxxxxxxxxx> --- --- linux-2.6.32.60.org/block/blk-core.c 2012-10-07 23:41:24.000000000 +0200 +++ linux-2.6.32.60/block/blk-core.c 2013-03-04 21:29:07.000000000 +0100 @@ -1149,7 +1149,7 @@ void init_request_from_bio(struct reques */ static inline bool queue_should_plug(struct request_queue *q) { - return !(blk_queue_nonrot(q) && blk_queue_queuing(q)); + return !(blk_queue_nonrot(q) && blk_queue_tagged(q)); } static int __make_request(struct request_queue *q, struct bio *bio) @@ -1861,15 +1861,8 @@ void blk_dequeue_request(struct request * and to it is freed is accounted as io that is in progress at * the driver side. */ - if (blk_account_rq(rq)) { + if (blk_account_rq(rq)) q->in_flight[rq_is_sync(rq)]++; - /* - * Mark this device as supporting hardware queuing, if - * we have more IOs in flight than 4. - */ - if (!blk_queue_queuing(q) && queue_in_flight(q) > 4) - set_bit(QUEUE_FLAG_CQ, &q->queue_flags); - } } /** --- linux-2.6.32.60.org/include/linux/blkdev.h 2012-10-07 23:41:24.000000000 +0200 +++ linux-2.6.32.60/include/linux/blkdev.h 2013-03-04 21:29:07.000000000 +0100 @@ -456,8 +456,7 @@ struct request_queue #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ -#define QUEUE_FLAG_CQ 16 /* hardware does queuing */ -#define QUEUE_FLAG_DISCARD 17 /* supports DISCARD */ +#define QUEUE_FLAG_DISCARD 16 /* supports DISCARD */ #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ (1 << QUEUE_FLAG_STACKABLE) | \ @@ -580,7 +579,6 @@ enum { #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) -#define blk_queue_queuing(q) test_bit(QUEUE_FLAG_CQ, &(q)->queue_flags) #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags)