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
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