From: James Bottomley <James.Bottomley@SteelEye.com>
To: Kai Makisara <Kai.Makisara@kolumbus.fi>
Cc: Tejun Heo <htejun@gmail.com>, Jens Axboe <axboe@suse.de>,
SCSI Mailing List <linux-scsi@vger.kernel.org>,
Linux Kernel <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH scsi-misc-2.6 08/08] scsi: fix hot unplug sequence
Date: Sat, 26 Mar 2005 08:48:58 -0600 [thread overview]
Message-ID: <1111848538.5711.11.camel@mulgrave> (raw)
In-Reply-To: <Pine.LNX.4.61.0503260907450.19764@kai.makisara.local>
On Sat, 2005-03-26 at 09:27 +0200, Kai Makisara wrote:
> I fully agree that doing done() correctly _is_ a problem, especially when
> the SCSI subsystem evolves and the high-level driver writers do not follow
> the development closely enough.
>
> One solution to these problems would be to let the drivers still use
> scsi_do_req() and their own done() function, but create two
> (three) helpers:
> - one to be called at the beginning of done(); it would do what needs to
> be done here but lets the driver to do some special things of its own if
> necessary
> - one to be called to wait for the request to finish
> (- one to do scsi_ro_req() and the things necessary before these)
Yes. The drivers that use it just need visiting with a big hammer.
However, our character ULDs (st and sg) use it because they try to
simulate fire and forget in the async write path (That's the only time
you actually don't wait on completion for scsi_do_req).
This comes about because the mid-layer is block oriented, so you can't
use any of the read/write machinery. We could fix this by having a
generic character tap to a block queue for use in cases like SCSI where
the underlying driver uses block queues even if the actual device isn't
a block device.
Essentially, the character tap would simply submit a stream of reads and
writes through the block queue. Then we could modify st and sg to use
an identical framework to the other ULDs ... you get a setup API and a
returning command API which are called for every I/O and the block layer
gets to handle the async/not-async pieces.
James
next prev parent reply other threads:[~2005-03-26 14:49 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-23 2:14 [PATCH scsi-misc-2.6 00/08] scsi: small fixes & cleanups Tejun Heo
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 01/08] scsi: remove unused bounce-buffer release path Tejun Heo
2005-03-23 4:07 ` James Bottomley
2005-03-23 6:08 ` Tejun Heo
2005-03-23 15:27 ` Jens Axboe
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 02/08] scsi: don't use blk_insert_request() for requeueing Tejun Heo
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 03/08] scsi: remove unused scsi_cmnd->internal_timeout field Tejun Heo
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 04/08] scsi: remove meaningless volatile qualifiers from structure definitions Tejun Heo
2005-03-23 4:15 ` James Bottomley
2005-03-23 4:22 ` Jeff Garzik
2005-03-23 5:28 ` Tejun Heo
2005-03-23 15:16 ` James Bottomley
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 05/08] scsi: remove a timer race from scsi_queue_insert() and cleanup timer Tejun Heo
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 06/08] scsi: remove meaningless scsi_cmnd->serial_number_at_timeout field Tejun Heo
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 07/08] scsi: remove bogus {get|put}_device() calls Tejun Heo
2005-03-23 4:15 ` James Bottomley
2005-03-23 9:13 ` Tejun Heo
2005-03-29 17:02 ` Patrick Mansfield
2005-03-23 2:14 ` [PATCH scsi-misc-2.6 08/08] scsi: fix hot unplug sequence Tejun Heo
2005-03-23 4:08 ` James Bottomley
2005-03-23 4:50 ` Tejun Heo
2005-03-23 7:19 ` Jens Axboe
2005-03-23 15:20 ` James Bottomley
2005-03-23 15:25 ` Jens Axboe
2005-03-25 0:45 ` James Bottomley
2005-03-25 3:15 ` Tejun Heo
2005-03-25 5:02 ` James Bottomley
2005-03-25 5:38 ` Tejun Heo
2005-03-25 19:19 ` James Bottomley
2005-03-25 21:43 ` Tejun Heo
2005-03-25 22:49 ` James Bottomley
2005-03-26 7:27 ` Kai Makisara
2005-03-26 14:48 ` James Bottomley [this message]
2005-03-23 15:12 ` James Bottomley
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=1111848538.5711.11.camel@mulgrave \
--to=james.bottomley@steeleye.com \
--cc=Kai.Makisara@kolumbus.fi \
--cc=axboe@suse.de \
--cc=htejun@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@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