Re: more tcpdumpinfo for nfs3 problem: aix-server --- linux 2.4.15pre5 client

Trond Myklebust (trond.myklebust@fys.uio.no)
Tue, 20 Nov 2001 20:39:23 +0100


>>>>> " " == kuznet <kuznet@ms2.inr.ac.ru> writes:

> Hello!
>> I forgot to add: The socket fasync lists use spinlocking in the
>> same was as RPC does, with sock_fasync() setting
>> write_lock_bh(&sk->callback_lock), and sock_def_write_space()
>> doing read_lock(&sk->callback_lock).
>>
>> So that would deadlock with the QDIO driver in the exact same
>> manner as the RPC stuff (albeit probably a lot less
>> frequently).

> Please, elaborate. I do not see any way.

Processor 1 Processor 2

(Call QDIO bottom half code)
spin_lock(&QDIO_lock);
write_lock_bh(&sk->callback_lock)
dev_kfree_skb_any()
-> kfree_skb()
<QDIO hard interrupt>
-> write_space()
->spin_lock(&QDIO_lock)
(spins...)
->read_lock(&sk->callback_lock);
(spins)

Deadlock - in exactly the same way as with the xprt code...

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