public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Brad Boyer <flar@allandria.com>
To: jshankar <jshankar@CS.ColoState.EDU>
Cc: "Richard B. Johnson" <root@chaos.analogic.com>,
	Mike Fedyk <mfedyk@matchmail.com>,
	linux-fsdevel <linux-fsdevel@vger.kernel.org>,
	linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: ext3 file system
Date: Wed, 17 Dec 2003 15:59:10 -0800	[thread overview]
Message-ID: <20031217235910.GA29489@pants.nu> (raw)
In-Reply-To: <3FF18FD8@webmail.colostate.edu>


I think the big thing that you're missing is that block device requests
are totally asynchronous. In general, a block gets sent down to the
block layer as needing to be transfered one way or the other. It gets
queued up in the driver for that block device, such as sd.o for SCSI.
That driver will be notified that it has requests to process, and
can handle them however it wants. When it is done with any specific
request, it calls back up and sets that request as done. You could
have multiple requests in the queue at the same time, and a driver
can be working on more than one at a time if it supports that.

In the specific case of SCSI, the host adapter and disk drives may
support various queues along the way, with any number of outstanding
requests in various buffers. The controller may be able to merge
requests on the fly in order to improve performance.

Obviously this is a fairly abstract view of the whole process. For
details you would need to read the code. You can trace the process
down (filesystem -> page buffers -> block devices -> block driver).
In the SCSI case, the block driver is sd.o, and you then can follow
down into the generic SCSI mid-layer and the controller driver.

	Brad Boyer
	flar@allandria.com

On Wed, Dec 17, 2003 at 04:25:11PM -0700, jshankar wrote:
> Please provide some more insight.
> 
> Suppose a filesystem issues a write command to the disk with around 10 4K 
> Blocks  to be written. SCSI device point of view i don't get what is the 
> parallel I/O.
> It has only 1 write command. If some other sends a write request it needs to 
> be queued. But the next question arises how the write data would be handled. 
> Does it mean the SCSI does not give a response for the block of data written. 
> In otherwords does it mean that the response would be given after all the 
> block of data is written for a single write request.

  reply	other threads:[~2003-12-17 23:59 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-17 23:25 ext3 file system jshankar
2003-12-17 23:59 ` Brad Boyer [this message]
2003-12-18  1:25 ` Hans Reiser
2003-12-18 14:17 ` Richard B. Johnson
  -- strict thread matches above, loose matches on Subject: below --
2003-12-18  4:47 jshankar
2003-12-18  8:39 ` Mike Fedyk
2003-12-18 10:41   ` Hans Reiser
2003-12-17 22:13 jshankar
2003-12-17 22:25 ` Richard B. Johnson
2003-12-17 23:02   ` Mike Fedyk

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=20031217235910.GA29489@pants.nu \
    --to=flar@allandria.com \
    --cc=jshankar@CS.ColoState.EDU \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mfedyk@matchmail.com \
    --cc=root@chaos.analogic.com \
    /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