All of lore.kernel.org
 help / color / mirror / Atom feed
From: "kedacomkernel" <kedacomkernel@gmail.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-raid <linux-raid@vger.kernel.org>
Subject: Re: Re: md/raid1:Fix a logic bug in fix_sync_read_error().
Date: Thu, 5 Apr 2012 10:23:47 +0800	[thread overview]
Message-ID: <201204051023442812453@gmail.com> (raw)
In-Reply-To: 201203311037586565381@gmail.com

>>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
Sorry Neil,I don't understand what's your mean?
I think this function is want to do something like follow when all sync_read failed.
1:want to read partly by PAGE_SIZE from all read devices.
2:if read success and write write to other and read back, in order to repair those disks.

for example :
disk A,B ,read 64k from 0 to 128 sector.
supposed: disk A read failed because sector 0-7 was bad sector.
			   disk B  read failed because sector 8-15 was bad sector.
by this function,we can fix sector 0-7 of A and sector 8-15 of B.
Is ok?

If B is read_disk,so read 0-7 is ok and want to write it to A.But becasue the code ,do not write to disk A.

------------------				 
kedacomkernel
2012-04-05

-------------------------------------------------------------
发件人:NeilBrown
发送日期:2012-04-02 10:05:34
收件人:kedacomkernel
抄送:linux-raid
主题:Re: md/raid1:Fix a logic bug in fix_sync_read_error().

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

> >From 0fe15c8e1bd5e46234d37573f3322312d8da325d Mon Sep 17 00:00:00 2001
> From: majianpeng <majianpeng@gmail.com>
> 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@gmail.com>
> ---
>  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++;


  parent reply	other threads:[~2012-04-05  2:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-31  2:38 md/raid1:Fix a logic bug in fix_sync_read_error() kedacomkernel
2012-04-02  2:05 ` NeilBrown
2012-04-05  2:23 ` kedacomkernel [this message]
2012-04-05  3:36   ` NeilBrown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201204051023442812453@gmail.com \
    --to=kedacomkernel@gmail.com \
    --cc=linux-raid@vger.kernel.org \
    --cc=neilb@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.