]> git.baikalelectronics.ru Git - kernel.git/commit
Revert "blk-flush: Queue through IO scheduler when flush not required"
authorJens Axboe <axboe@fb.com>
Wed, 25 Nov 2015 17:12:54 +0000 (10:12 -0700)
committerJens Axboe <axboe@fb.com>
Wed, 25 Nov 2015 18:02:02 +0000 (11:02 -0700)
commitfcc0b17dc07e93f8a20eef9bfb2b65f1b1cd8a82
tree558ef3aca99cca15285cfd42f651857565303097
parent0c6e6d1cc8a17b8c8aa2699ffd5ebef12dbd7cf1
Revert "blk-flush: Queue through IO scheduler when flush not required"

This reverts commit fd140bc78b560a87771d2f0e306b1360f80a7f53.

Jan writes:

--

Thanks for report! After some investigation I found out we allocate
elevator specific data in __get_request() only for non-flush requests. And
this is actually required since the flush machinery uses the space in
struct request for something else. Doh. So my patch is just wrong and not
easy to fix since at the time __get_request() is called we are not sure
whether the flush machinery will be used in the end. Jens, please revert
fd140bc78b560a87771d2f0e306b1360f80a7f53. Thanks!

I'm somewhat surprised that you can reliably hit the race where flushing
gets disabled for the device just while the request is in flight. But I
guess during boot it makes some sense.

--

So let's just revert it, we can fix the queue run manually after the
fact. This race is rare enough that it didn't trigger in testing, it
requires the specific disable-while-in-flight scenario to trigger.
block/blk-flush.c