Re: [md PATCH 20/34] md/raid5: finalise new merged handle_stripe.

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

 



2011-07-26 (화), 12:02 +1000, NeilBrown:
> On Fri, 22 Jul 2011 18:36:13 +0900 Namhyung Kim <namhyung@xxxxxxxxx> wrote:
> 
> > NeilBrown <neilb@xxxxxxx> writes:
> > 
> > > handle_stripe5() and handle_stripe6() are now virtually identical.
> > > So discard one and rename the other to 'analyse_stripe()'.
> > >
> > > It always returns 0, so change it to 'void' and remove the 'done'
> > > variable in handle_stripe().
> > >
> > > Signed-off-by: NeilBrown <neilb@xxxxxxx>
> 
> 
> > >  static void handle_stripe(struct stripe_head *sh)
> > >  {
> > >  	struct stripe_head_state s;
> > > -	int done;
> > >  	raid5_conf_t *conf = sh->raid_conf;
> > >  	int i;
> > >  	int prexor;
> > > @@ -3099,13 +3015,7 @@ static void handle_stripe(struct stripe_head *sh)
> > >  	s.failed_num[0] = -1;
> > >  	s.failed_num[1] = -1;
> > 
> > There are codes that set/initialize some fields of stripe_head_state
> > outside of analyse_stripe() and it'd better off moving them into the
> > function, IMHO.
> > 
> > Thanks.
> 
> Thanks.  I have merged this change.
> 
> NeilBrown
> 
> 
> diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
> index ed6729d..b321d6c 100644
> --- a/drivers/md/raid5.c
> +++ b/drivers/md/raid5.c
> @@ -2905,6 +2905,14 @@ static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s)
>  	struct r5dev *dev;
>  	int i;
>  
> +	memset(s, 0, sizeof(*s));
> +
> +	s->syncing = test_bit(STRIPE_SYNCING, &sh->state);
> +	s->expanding = test_bit(STRIPE_EXPAND_SOURCE, &sh->state);
> +	s->expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
> +	s->failed_num[0] = -1;
> +	s->failed_num[1] = -1;
> +
>  	/* Now to look around and see what can be done */
>  	rcu_read_lock();
>  	spin_lock_irq(&conf->device_lock);
> @@ -3006,13 +3014,6 @@ static void handle_stripe(struct stripe_head *sh)
>  	       (unsigned long long)sh->sector, sh->state,
>  	       atomic_read(&sh->count), sh->pd_idx, sh->qd_idx,
>  	       sh->check_state, sh->reconstruct_state);
> -	memset(&s, 0, sizeof(s));
> -
> -	s.syncing = test_bit(STRIPE_SYNCING, &sh->state);
> -	s.expanding = test_bit(STRIPE_EXPAND_SOURCE, &sh->state);
> -	s.expanded = test_bit(STRIPE_EXPAND_READY, &sh->state);
> -	s.failed_num[0] = -1;
> -	s.failed_num[1] = -1;
>  
>  	analyse_stripe(sh, &s);
>  

Reviewed-by: Namhyung Kim <namhyung@xxxxxxxxx>

Looks great to me, thanks.


-- 
Regards,
Namhyung Kim


--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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