Re: [PATCH] block: eliminate ELEVATOR_INSERT_REQUEUE

From: Jens Axboe
Date: Wed Mar 30 2011 - 07:23:05 EST


On 2011-03-30 13:21, Sergey Senozhatsky wrote:
> Hello,
>
> On (03/30/11 12:16), Jens Axboe wrote:
>> How does this look? It's really two patches, but rolled up into one for
>> easier posting here.
>>
>
> Nope, doesn't work for me. fsck.ext4 crashed the system.
>
> __elv_add_request
> blk_flush_complete_seq
> blk_insert_flush
> __elv_add_request
> __make_request
> generic_make_request
> ?bio_alloc_bioset
> blkdev_issue_flush
> blkdev_fsync
> vfs_fsync
> [..]

Ah, this addon should behave better.

diff --git a/block/blk-flush.c b/block/blk-flush.c
index 6a16fea..eba4a27 100644
--- a/block/blk-flush.c
+++ b/block/blk-flush.c
@@ -261,7 +261,7 @@ static bool blk_kick_flush(struct request_queue *q)
q->flush_rq.end_io = flush_end_io;

q->flush_pending_idx ^= 1;
- __elv_add_request(q, &q->flush_rq, ELEVATOR_INSERT_FLUSH);
+ list_add_tail(&q->flush_rq.queuelist, &q->queue_head);
return true;
}


--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/