Messages in this thread | | | Date | Tue, 22 Mar 2011 17:00:34 -0400 | From | Christoph Hellwig <> | Subject | Re: merging discard request in the block layer |
| |
On Tue, Mar 22, 2011 at 08:54:06PM +0100, Jens Axboe wrote: > > Index: xfs/block/blk-merge.c > > =================================================================== > > --- xfs.orig/block/blk-merge.c 2011-03-22 13:07:24.733857580 +0100 > > +++ xfs/block/blk-merge.c 2011-03-22 13:08:17.448856577 +0100 > > @@ -373,7 +373,7 @@ static int attempt_merge(struct request_ > > /* > > * Don't merge file system requests and discard requests > > */ > > - if ((req->cmd_flags & REQ_DISCARD) != (next->cmd_flags & REQ_DISCARD)) > > + if ((req->cmd_flags & REQ_DISCARD) || (next->cmd_flags & REQ_DISCARD)) > > return 0; > > > > /* > > That's not going to be enough, you want to disable the bio to request > merging of discards as well in elevator.c:elv_rq_merge_ok(). Does > that then fix it?
Applying the same fix in elv_rq_merge_ok seems to fix the issue, at least the xfstests testcase that usually hits it is completes ok.
| |