Re: loopback blockdev deadlocks -- explained?

From: Peter T. Breuer (ptb@it.uc3m.es)
Date: Sun Apr 16 2000 - 11:09:46 EST


"A month of sundays ago Steve Dodd wrote:"
> On Wed, Apr 12, 2000 at 06:39:21AM +0200, Mike Galbraith wrote:
> [from ll_rw_blk.c, __make_request(): ]
> /*
> * Loop uses two requests, 1 for loop and 1 for the real device.
> * Cut max_req in half to avoid running out and deadlocking.
> */
> if ((major == LOOP_MAJOR) || (major == NBD_MAJOR))
> max_req >>= 1;
>
> This assumption presumably breaks down horribly for file-backed loop devices?
> The numbers of requests that the filesystem is going to generate to deal
> with one loop device request may well be >1. Does this sound plausible to
> anyone or have I missed something?

Sounds OK to me. Limiting at 1 request in the queue would find out for
sure. You can do it here or via a local semaphore. But Stephen (Tweedie)
is best qualified to answer this.

Why isn't Ted (T'so) fixing the loop driver? It's his handiwork, isn't
it? The last time I looked at loop it was to _copy_ the way it handled
dropthroughs to the VFS!

Peter

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



This archive was generated by hypermail 2b29 : Sun Apr 23 2000 - 21:00:09 EST