Re: [RFC PATCH] shrink_dcache_parent() deadlock

From: Miklos Szeredi
Date: Mon Jan 09 2012 - 12:06:02 EST


Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> writes:

> On Mon, Jan 9, 2012 at 2:58 AM, Miklos Szeredi <miklos@xxxxxxxxxx> wrote:
>>
>> This patch adds a new dentry flag that is set when the dentry is removed
>> from the lru and put on the list being processed by
>> shrink_dentry_list(). ÂThe flag is cleared in dentry_lru_del() which is
>> called if the dentry gets a new reference just before it's pruned.
>>
>> Thoughts?
>
> Looks reasonable. Were you actually able to reproduce the hang, or how
> did you notice?

We got a bug report from a partner about hang during reboot. It's
actually quite easily reproducible with:

while true; do
echo -bond0 > /sys/class/net/bonding_masters
echo +bond0 > /sys/class/net/bonding_masters
echo -bond1 > /sys/class/net/bonding_masters
echo +bond1 > /sys/class/net/bonding_masters
done

That reliably triggers the soft lookup detector for several machines
that we tested. It's rather timing sensitive though, because turning on
DEBUG_SPINLOCK makes it go away.

I had to add printks to see what's going on, because it wasn't obvious
from the stack traces and crash dumps.

Thanks,
Miklos
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/