Re: Linux 2.4.x block device driver question

Jonathan Corbet (corbet@lwn.net)
Mon, 02 Jun 2003 07:52:28 -0600


> I was trying to see how __make_request throttles a fast writing process
> from overrunning a slow device. So I took Alessandro Rubini's spull.c
> code from his device driver book (2nd edition)

Alessandro's...and that other guy's...:)

> dd if=/dev/zero of=/dev/pda bs=1024 count=1000000
>
> What I expect is that the kernel will quickly stop dd after all 128 (64
> on machines with less than 32MB of ram) free request slots are taken.

As you noted, that didn't happen. My guess is you ran out of memory. The
requests you are generating will be, shall we say, easily merged in the
block subsystem. So you have a bunch of requests in the device's queue,
but each one will have a long chain of buffer heads hanging off it. You
may not have even managed to use up all the available request structures
before things came to a halt. Try dropping the max_sectors[] count way
down, and things might work a little better. After your fsck completes,
that is.

jon

Jonathan Corbet
Executive editor, LWN.net
corbet@lwn.net
-
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/