Re: FAILED: patch "[PATCH] md/raid5: fix a recently broken BUG_ON()." failed to apply to 3.12-stable tree

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

 



On Wed, 22 Jan 2014 13:17:45 -0800 <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:

> 
> The patch below does not apply to the 3.12-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.

Sorry, this doesn't need to be backported anywhere.  I though that patch that
if fixed might have been backported but on closer inspection I discover it
wouldn't have been.

Again, sorry of the noise.

NeilBrown


> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
> >From 5af9bef72c074dbe946da8b74eabd79cd5a9ff19 Mon Sep 17 00:00:00 2001
> From: NeilBrown <neilb@xxxxxxx>
> Date: Tue, 14 Jan 2014 15:16:10 +1100
> Subject: [PATCH] md/raid5: fix a recently broken BUG_ON().
> 
> commit 6d183de4077191d1201283a9035ce57a9b05254d
>     md/raid5: fix newly-broken locking in get_active_stripe.
> 
> simplified a BUG_ON, but removed too much so now it sometimes fires
> when it shouldn't.
> 
> When the STRIPE_EXPANDING flag is set, the stripe_head might be on a
> special list while multiple stripe_heads are collected, or it might
> not be on any list, even a 'free' list when the refcount is zero.  As
> long as STRIPE_EXPANDING is set, it will be found and added back to a
> list eventually.
> 
> So both of the BUG_ONs which test for the ->lru being empty or not
> need to avoid the case where STRIPE_EXPANDING is set.
> 
> The patch which broke this was marked for -stable, so this patch needs
> to be applied to any branch that received 6d183de4
> 
> Fixes: 6d183de4077191d1201283a9035ce57a9b05254d
> Cc: stable@xxxxxxxxxxxxxxx (any release to which above was applied)
> Signed-off-by: NeilBrown <neilb@xxxxxxx>
> 
> diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
> index 9168173deaf3..cbb15716a5db 100644
> --- a/drivers/md/raid5.c
> +++ b/drivers/md/raid5.c
> @@ -687,7 +687,8 @@ get_active_stripe(struct r5conf *conf, sector_t sector,
>  			} else {
>  				if (!test_bit(STRIPE_HANDLE, &sh->state))
>  					atomic_inc(&conf->active_stripes);
> -				BUG_ON(list_empty(&sh->lru));
> +				BUG_ON(list_empty(&sh->lru) &&
> +				       !test_bit(STRIPE_EXPANDING, &sh->state));
>  				list_del_init(&sh->lru);
>  				if (sh->group) {
>  					sh->group->stripes_cnt--;

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]