Thread (41 messages) 41 messages, 5 authors, 2012-01-06

Re: [PATCH block:for-3.3/core] block: disable ELEVATOR_INSERT_SORT_MERGE

From: Shaohua Li <hidden>
Date: 2012-01-06 04:04:29
Also in: linux-next, linux-scsi, lkml

On Thu, 2012-01-05 at 19:52 -0800, Tejun Heo wrote:
5e84ea3a9c "block: attempt to merge with existing requests on plug
flush" added support for merging requests on plug flush and 274193224c
"block: recursive merge requests" added recursive merging.

Because these mergings happen before the request is inserted on the
elevator, the usual elv_latter/former_request() can't be used to
locate merge candidates.  It instead used bio merging mechanism -
last_merge hint and rqhash; unfortunately, this means that the
elevator doesn't have a say in which are allowed to merge and which
aren't.

For cfq, this resulted in merges across different cfqq's which led to
crashes as requests jump between different cfqq's unexpectedly.

Proper solution would be improving merge mechanism such that we can
always query elevator to find out merge candidates and remove rqhash;
however, the merge window is already upon us.  Disable
INSERT_SORT_MERGE for now.

For detailed discussion of the bug:

 http://thread.gmane.org/gmane.linux.kernel.next/20064/focus=20159
this is overkill. when plug is added, we found huge performance
regression, that's why we add INSERT_SORT_MERGE.

Thanks,
Shaohua
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help