On Wed, 2009-08-19 at 22:36 +0400, Nikita V. Youshchenko wrote:
> tags 542250 +patch
> thanks
>
> > ... I may guess that line 74 should check for in_interrupt() instead of
> > in_softirq().
>
> I've tried that and it really fixed the problem. Server already runs the
> same backup procedure for several hours. Previously it crashed within 15
> minutes.
>
> Here is the patch I've applied:
>
> --- a/drivers/xen/core/spinlock.c 2009-08-19 16:20:17.000000000 +0400
> +++ b/drivers/xen/core/spinlock.c 2009-08-19 17:36:55.000000000 +0400
> @@ -71,7 +71,7 @@
> BUG_ON(__get_cpu_var(spinning_bh).lock == lock);
> spinning = &__get_cpu_var(spinning_irq);
> } else {
> - BUG_ON(!in_softirq());
> + BUG_ON(!in_interrupt());
> spinning = &__get_cpu_var(spinning_bh);
> }
> BUG_ON(spinning->lock);
I'm glad it works for you, but it isn't a proper fix.
Ben.
--
Ben Hutchings
If at first you don't succeed, you're doing about average.
Attachment:
signature.asc
Description: This is a digitally signed message part