Re: Bug#542250: repeatable crashes while copying 500G from NFS mount to local logical volume
> This asserts that if we spin on a lock after interrupting another spin,
> and interrupts are enabled, we must be in a softirq.
Looking at the bottom of the same file drivers/xen/core/spinlock.c:
void xen_spin_kick(raw_spinlock_t *lock, unsigned int token)
{
unsigned int cpu;
token &= (1U << TICKET_SHIFT) - 1;
for_each_online_cpu(cpu) {
if (spinning(&per_cpu(spinning, cpu), cpu, lock, token))
return;
if (in_interrupt()
&& spinning(&per_cpu(spinning_bh, cpu), cpu, lock, token))
return;
if (raw_irqs_disabled()
&& spinning(&per_cpu(spinning_irq, cpu), cpu, lock, token))
return;
}
}
EXPORT_SYMBOL(xen_spin_kick);
... I may guess that line 74 should check for in_interrupt() instead of in_softirq().
However it is just a guess based on analogy.
I don't currently understand the logic of that code.
Reply to: