mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Gong Su <gongsu@cs.columbia.edu>
To: linux-kernel@vger.kernel.org
Subject: Linux 2.4.x block device driver question
Date: Sun, 01 Jun 2003 18:54:56 -0400	[thread overview]
Message-ID: <5sukdv4jvcd417f7chvla92je3su1le1r8@4ax.com> (raw)

[please cc: me as not subscribed to list]

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) and ran it in "pseudo irq"
mode. What the driver does basically is to schedule an alarm in its
request service function (spull_irqdriven_request) and return immediately
without calling end_request. And when the alarm fires it finishes the IO
by calling end_request(1). I made the following change to the driver:

1. make the ram disk size infinite by setting blk_size[MAJOR_NR]=NULL.
2. disable the actual copying to/from the ram disk by commenting out
   spull_transfer in the spull_irqdriven_request function.

I load the driver with a 3 second delay for the alarm. So basically, the
driver simulates a "very slow" device that takes 3 seconds to service
each request (without actually doing anything). Now I do:

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.
Of course it will take forever for dd to finish. But what happened is
that the system quickly becomes unusable. It still handles a request
every 3 seconds but is otherwise oblivious of any input (I can still
switch virtual console but that's it). Is this the expected behavior of
2.4 or am I just doing something stupid? Your insight will be highly
appreciated. Thanks in advance.

-- 
/Gong

             reply	other threads:[~2003-06-01 22:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-01 22:54 Gong Su [this message]
2003-06-02 13:52 ` Jonathan Corbet
2003-06-02 17:23 Gong Su

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5sukdv4jvcd417f7chvla92je3su1le1r8@4ax.com \
    --to=gongsu@cs.columbia.edu \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®