loopback blockdev deadlocks -- explained?

From: Steve Dodd (steved@loth.demon.co.uk)
Date: Sun Apr 16 2000 - 09:54:22 EST


On Wed, Apr 12, 2000 at 06:39:21AM +0200, Mike Galbraith wrote:

> My favorite wild theory is that the underlying device is plugged.

Hmmm. Here's my latest theory:

[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?

-- 
"I love the way Microsoft follows standards.  In much the
same manner that fish follow migrating caribou."
                                            Paul Tomblin

- 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