Re: md/raid1:Fix a logic bug in fix_sync_read_error().

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 31 Mar 2012 10:38:01 +0800 "kedacomkernel" <kedacomkernel@xxxxxxxxx>
wrote:

> >From 0fe15c8e1bd5e46234d37573f3322312d8da325d Mon Sep 17 00:00:00 2001
> From: majianpeng <majianpeng@xxxxxxxxx>
> Date: Sat, 31 Mar 2012 10:27:33 +0800
> Subject: [PATCH] md/raid1:Fix a logic bug in fix_sync_read_error(). 
> If  d==read_disk && success == 1 and then break, so d =
>  read_disk. When exec this judgement: >>start = d; >>/*
>  write it back and re-read */ >>while (d !=
>  r1_bio->read_disk) { Because d == read_disk,so write and
>  re-add did not exec.

That is correct, and that is how it should be.

If we get a read error, then try again and get a successful read, then there
is nothing more that we need to do.  No need to write or anything.

So: current code is correct.

Thanks,
NeilBrown


> 
> 
> Signed-off-by: majianpeng <majianpeng@xxxxxxxxx>
> ---
>  drivers/md/raid1.c |    1 -
>  1 files changed, 0 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
> index 4a40a20..3a133ff 100644
> --- a/drivers/md/raid1.c
> +++ b/drivers/md/raid1.c
> @@ -1618,7 +1618,6 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
>  						 bio->bi_io_vec[idx].bv_page,
>  						 READ, false)) {
>  					success = 1;
> -					break;
>  				}
>  			}
>  			d++;

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux