Fix the error_reads mode - it's incompatible with corrupt_bio_byte, but
that's only enabled if corrupt_bio_byte is nonzero.

Cc: Benjamin Marzinski <bmarz...@redhat.com>
Cc: Mikulas Patocka <mpato...@redhat.com>
Cc: Mike Snitzer <snit...@kernel.org>
Cc: dm-devel@lists.linux.dev
Signed-off-by: Kent Overstreet <kent.overstr...@linux.dev>
---
 drivers/md/dm-flakey.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/md/dm-flakey.c b/drivers/md/dm-flakey.c
index c711db6f8f5c..cf17fd46e255 100644
--- a/drivers/md/dm-flakey.c
+++ b/drivers/md/dm-flakey.c
@@ -215,16 +215,19 @@ static int parse_features(struct dm_arg_set *as, struct 
flakey_c *fc,
        }
 
        if (test_bit(DROP_WRITES, &fc->flags) &&
-           (fc->corrupt_bio_rw == WRITE || fc->random_write_corrupt)) {
+           ((fc->corrupt_bio_byte && fc->corrupt_bio_rw == WRITE) ||
+            fc->random_write_corrupt)) {
                ti->error = "drop_writes is incompatible with 
random_write_corrupt or corrupt_bio_byte with the WRITE flag set";
                return -EINVAL;
 
        } else if (test_bit(ERROR_WRITES, &fc->flags) &&
-                  (fc->corrupt_bio_rw == WRITE || fc->random_write_corrupt)) {
+                  ((fc->corrupt_bio_byte && fc->corrupt_bio_rw == WRITE) ||
+                   fc->random_write_corrupt)) {
                ti->error = "error_writes is incompatible with 
random_write_corrupt or corrupt_bio_byte with the WRITE flag set";
                return -EINVAL;
        } else if (test_bit(ERROR_READS, &fc->flags) &&
-                  (fc->corrupt_bio_rw == READ || fc->random_read_corrupt)) {
+                  ((fc->corrupt_bio_byte && fc->corrupt_bio_rw == READ) ||
+                   fc->random_read_corrupt)) {
                ti->error = "error_reads is incompatible with 
random_read_corrupt or corrupt_bio_byte with the READ flag set";
                return -EINVAL;
        }
-- 
2.49.0


Reply via email to