[dm-devel] dm-flakey NOT to return -EIO on READ?

Akira Hayakawa ruby.wktk at gmail.com
Wed Jul 6 06:33:25 UTC 2016


Hi,

I am using dm-flakey to emulate a broken device that should return -EIO on both read and write.
I use the parameter up_interval=0 and down_interval=1.

But when I am dd-ing the flakey device, while write fails, read succeeds.
This isn't the behavior I expect.

Then I looked into the code.

326 static int flakey_end_io(struct dm_target *ti, struct bio *bio, int error)
327 {
328         struct flakey_c *fc = ti->private;
329         struct per_bio_data *pb = dm_per_bio_data(bio, sizeof(struct per_bio_data));
330 
331         /*
332          * Corrupt successful READs while in down state.
333          * If flags were specified, only corrupt those that match.
334          */
335         if (fc->corrupt_bio_byte && !error && pb->bio_submitted &&
336             (bio_data_dir(bio) == READ) && (fc->corrupt_bio_rw == READ) &&
337             all_corrupt_bio_flags_match(bio, fc))
338                 corrupt_bio_data(bio, fc);
339 
340         return error;
341 }

When the bio direction is READ and currupt_bio_bytes isn't specified
the READ bio is handled normally right?

I think READ requests should return -EIO if

1. corrupt_bio_bytes isn't specified
2. but the requested is handled during down interval.

as well as WRITE requests:

305                 /*
306                  * Corrupt matching writes.
307                  */
308                 if (fc->corrupt_bio_byte && (fc->corrupt_bio_rw == WRITE)) {
309                         if (all_corrupt_bio_flags_match(bio, fc))
310                                 corrupt_bio_data(bio, fc);
311                         goto map_bio;
312                 }
313 
314                 /*
315                  * By default, error all I/O.
316                  */
317                 return -EIO;
318         }

This code is similar to what we see in the end_io.

If my understanding is correct, I would like to modify dm-flakey to return -EIO in the end_io.

I would like to request for comments.

Thanks,

- Akira




More information about the dm-devel mailing list