qpc is the just the caller of the last successfull *acquired* qlock. what we know is that the exportfs proc spins in the q->use taslock called by qlock() right? this already seems wired... q->use is held just long enougth to test q->locked and manipulate the queue. also sched() will avoid switching to another proc while we are holding tas locks. i would like to know which qlock is the kernel is trying to acquire on behalf of exportfs that is also reachable from the etherread4 code. one could move: up->qpc = getcallerpc(&q); from qlock() before the lock(&q->use); so we can see from where that qlock gets called that hangs the exportfs call, or add another magic debug pointer (qpctry) to the proc stucture and print it in dumpaproc(). -- cinap