[dm-devel] dm-flakey NOT to return -EIO on READ?
Lukas Herbolt
lherbolt at redhat.com
Wed Jul 6 09:52:50 UTC 2016
Hi,
Yes this part is wrong and reads are not dropped.
I have a patch ready, just have to send it out.
Lukas
On Wed, Jul 6, 2016 at 8:33 AM, Akira Hayakawa <ruby.wktk at gmail.com> wrote:
> 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
>
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
>
--
Lukas Herbolt
RHCE, RH436, BSc, SSc
Senior Technical Support Engineer
Global Support Services (GSS)
Email: lherbolt at redhat.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/dm-devel/attachments/20160706/f1fad401/attachment.htm>
More information about the dm-devel
mailing list