mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-20 16:46:23 +08:00
block: fix bug with inserting flush requests as sort/merge
With the introduction of the on-stack plugging, we would assume that any request being inserted was a normal file system request. As flush/fua requires a special insert mode, this caused problems. Fix this up by checking for this in flush_plug_list() and use the appropriate insert mechanism. Big thanks goes to Markus Tripplesdorf for tirelessly testing patches, and to Sergey Senozhatsky for helping find the real issue. Reported-by: Markus Tripplesdorf <markus@trippelsdorf.de> Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
This commit is contained in:
parent
6c51038900
commit
401a18e92c
@ -2702,7 +2702,10 @@ static void flush_plug_list(struct blk_plug *plug)
|
||||
/*
|
||||
* rq is already accounted, so use raw insert
|
||||
*/
|
||||
__elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE);
|
||||
if (rq->cmd_flags & (REQ_FLUSH | REQ_FUA))
|
||||
__elv_add_request(q, rq, ELEVATOR_INSERT_FLUSH);
|
||||
else
|
||||
__elv_add_request(q, rq, ELEVATOR_INSERT_SORT_MERGE);
|
||||
}
|
||||
|
||||
if (q) {
|
||||
|
Loading…
Reference in New Issue
Block a user