}
        cc->start = tmpll;
 
-       /*
-        * For zoned block devices, we need to preserve the issuer write
-        * ordering. To do so, disable write workqueues and force inline
-        * encryption completion.
-        */
        if (bdev_is_zoned(cc->dev->bdev)) {
+               /*
+                * For zoned block devices, we need to preserve the issuer write
+                * ordering. To do so, disable write workqueues and force inline
+                * encryption completion.
+                */
                set_bit(DM_CRYPT_NO_WRITE_WORKQUEUE, &cc->flags);
                set_bit(DM_CRYPT_WRITE_INLINE, &cc->flags);
+
+               /*
+                * All zone append writes to a zone of a zoned block device will
+                * have the same BIO sector, the start of the zone. When the
+                * cypher IV mode uses sector values, all data targeting a
+                * zone will be encrypted using the first sector numbers of the
+                * zone. This will not result in write errors but will
+                * cause most reads to fail as reads will use the sector values
+                * for the actual data locations, resulting in IV mismatch.
+                * To avoid this problem, ask DM core to emulate zone append
+                * operations with regular writes.
+                */
+               DMDEBUG("Zone append operations will be emulated");
+               ti->emulate_zone_append = true;
        }
 
        if (crypt_integrity_aead(cc) || cc->integrity_iv_size) {