Message ID | 20221107005021.1327692-2-damien.lemoal@opensource.wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Improve libata support for FUA | expand |
On 11/6/2022 4:50 PM, Damien Le Moal wrote: > From: Christoph Hellwig <hch@lst.de> > > Check that the PREFUSH and FUA flags are only set on write bios, > given that the flush state machine expects that. > > Reported-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> -ck
On 11/7/22 01:50, Damien Le Moal wrote: > From: Christoph Hellwig <hch@lst.de> > > Check that the PREFUSH and FUA flags are only set on write bios, > given that the flush state machine expects that. > > Reported-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > Signed-off-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- > block/blk-core.c | 13 ++++++++----- > 1 file changed, 8 insertions(+), 5 deletions(-) > Reviewed-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes
diff --git a/block/blk-core.c b/block/blk-core.c index 17667159482e..d3446d38ba77 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -730,12 +730,15 @@ void submit_bio_noacct(struct bio *bio) * Filter flush bio's early so that bio based drivers without flush * support don't have to worry about them. */ - if (op_is_flush(bio->bi_opf) && - !test_bit(QUEUE_FLAG_WC, &q->queue_flags)) { - bio->bi_opf &= ~(REQ_PREFLUSH | REQ_FUA); - if (!bio_sectors(bio)) { - status = BLK_STS_OK; + if (op_is_flush(bio->bi_opf)) { + if (WARN_ON_ONCE(bio_op(bio) != REQ_OP_WRITE)) goto end_io; + if (!test_bit(QUEUE_FLAG_WC, &q->queue_flags)) { + bio->bi_opf &= ~(REQ_PREFLUSH | REQ_FUA); + if (!bio_sectors(bio)) { + status = BLK_STS_OK; + goto end_io; + } } }