Support atomic writes by setting DM_TARGET_ATOMIC_WRITES for the target
type, and also unmasking REQ_ATOMIC from the submitted bio op flags.

Signed-off-by: John Garry <[email protected]>
---
 drivers/md/dm-raid1.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c
index 9511dae5b556..7a42bf648c52 100644
--- a/drivers/md/dm-raid1.c
+++ b/drivers/md/dm-raid1.c
@@ -656,7 +656,7 @@ static void do_write(struct mirror_set *ms, struct bio *bio)
        unsigned int i;
        struct dm_io_region io[MAX_NR_MIRRORS], *dest = io;
        struct mirror *m;
-       blk_opf_t op_flags = bio->bi_opf & (REQ_FUA | REQ_PREFLUSH);
+       blk_opf_t op_flags = bio->bi_opf & (REQ_FUA | REQ_PREFLUSH | 
REQ_ATOMIC);
        struct dm_io_request io_req = {
                .bi_opf = REQ_OP_WRITE | op_flags,
                .mem.type = DM_IO_BIO,
@@ -1485,6 +1485,7 @@ static struct target_type mirror_target = {
        .name    = "mirror",
        .version = {1, 14, 0},
        .module  = THIS_MODULE,
+       .features = DM_TARGET_ATOMIC_WRITES,
        .ctr     = mirror_ctr,
        .dtr     = mirror_dtr,
        .map     = mirror_map,
-- 
2.31.1


Reply via email to