dm ebs: Fix incorrect checking for REQ_OP_FLUSH
authorJohn Dorminy <jdorminy@redhat.com>
Fri, 31 Jul 2020 22:46:45 +0000 (18:46 -0400)
committerMike Snitzer <snitzer@redhat.com>
Tue, 4 Aug 2020 20:01:40 +0000 (16:01 -0400)
REQ_OP_FLUSH was being treated as a flag, but the operation
part of bio->bi_opf must be treated as a whole. Change to
accessing the operation part via bio_op(bio) and checking
for equality.

Signed-off-by: John Dorminy <jdorminy@redhat.com>
Acked-by: Heinz Mauelshagen <heinzm@redhat.com>
Fixes: d3c7b35c20d60 ("dm: add emulated block size target")
Cc: stable@vger.kernel.org
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-ebs-target.c

index 4445127..cb85610 100644 (file)
@@ -363,7 +363,7 @@ static int ebs_map(struct dm_target *ti, struct bio *bio)
        bio_set_dev(bio, ec->dev->bdev);
        bio->bi_iter.bi_sector = ec->start + dm_target_offset(ti, bio->bi_iter.bi_sector);
 
-       if (unlikely(bio->bi_opf & REQ_OP_FLUSH))
+       if (unlikely(bio_op(bio) == REQ_OP_FLUSH))
                return DM_MAPIO_REMAPPED;
        /*
         * Only queue for bufio processing in case of partial or overlapping buffers