From: Russell King <rmk@arm.linux.org.uk>
To: Patrick Mansfield <patmans@us.ibm.com>
Cc: James Bottomley <James.Bottomley@steeleye.com>,
linux-scsi@vger.kernel.org
Subject: Re: SCSI woes (followup)
Date: Tue, 24 Sep 2002 23:39:42 +0100 [thread overview]
Message-ID: <20020924233941.A9952@flint.arm.linux.org.uk> (raw)
In-Reply-To: <20020924123250.A5890@eng2.beaverton.ibm.com>; from patmans@us.ibm.com on Tue, Sep 24, 2002 at 12:32:50PM -0700
Ok, as promised here's the first patch.
This completely solves the door locking issues for host drivers that
use the new error handling code, and preserves the old behaviour for
drivers that use the old error handler. If I decide to resurect my
old WD33C93 card, I'll look at the old error handler issues.
The patch is arranged so that you can read the notes in order, and
the patch in order, and the two tie up. Please take the time to read
the whole thing.
I don't recommend incorporating this into mainline currently; there
are a few minor build issues with it that I'd like to get cleaned up
first (for example, a missing function prototype.) At this point,
I think it is more important to get this looked over, and to provide
a basis for ideas.
Please note that this patch is against vanilla 2.4.19.
The ideas and method behind this came out of discussion with James
Bottomley. James should therefore take some credit for this.
1. We introduce a new per-device flag - "locked". When this flag is
set, it means that user space wanted the door locked, and we have
successfully locked it. When clear, it means something user space
wanted the door unlocked, and we have successfully unlocked it.
2. Introduce "scsi_set_medium_removal". This handles all door locking
and unlocking requests that essentially originate from user space.
ie, when a device is opened or closed, or an ioctl is received.
This function takes care of issuing the ALLOW_MEDIUM_REMOVAL command
via the ioctl layers.
This function ins't really anything new; its existing code moved
into a function. It also removes code duplication.
The new bit is what it does after the command has completed. If
the command was successful, we update the device "locked" flag to
indicate the new state.
3. Rather than indirecting via scsi_ioctl() from the various drivers,
we now call scsi_set_medium_removal directly.
So far so good; the above changes are all about tracking the current
door lock state. Now for its use. We use it in two places. Ideally,
this should become one place in the long run.
4. The "new" error handling code. Just before we attempt to restart
operations on a host in scsi_restart_operations(), we loop through
all devices on the host. At this point, we don't have much idea
which devices received a reset.
Any device that is online (something the old code never checked for)
and was locked, we try to re-lock the door. Note how we handle this.
We create a request structure, and fill in all the relevant values,
and insert this request at the _head_ of the queue.
The requests done function merely frees the command. If the command
fails, we can't really do much to recover from it. We could retry,
but the generic SCSI command handling will have done that for us
already.
5. The "old" code. Yes, suggestion: read the comment. Since we have
the "new" error handling code in place, we must not to lock the
door while processing requests. If we do, we'll certainly deadlock.
However, we do take note of the currently requested lock state, and
only ask for the door to be locked if it was previously locked.
Now, as I say, this is only _half_ of my fixes. This fixes the SCSI
door locking problem. It doesn't fix the complete bus hangs when the
new error handing kicks in, fails, and takes devices off line. We'll
deal with that can of worms when we've got this one out of the way.
diff -u orig/drivers/scsi/scsi.h linux-rpc/drivers/scsi/scsi.h
--- orig/drivers/scsi/scsi.h Mon Aug 5 13:31:23 2002
+++ linux-rpc/drivers/scsi/scsi.h Tue Sep 24 15:57:54 2002
@@ -597,6 +597,7 @@
unsigned changed:1; /* Data invalid due to media change */
unsigned busy:1; /* Used to prevent races */
unsigned lockable:1; /* Able to prevent media removal */
+ unsigned locked:1; /* Media removal disabled */
unsigned borken:1; /* Tell the Seagate driver to be
* painfully slow on this device */
unsigned tagged_supported:1; /* Supports SCSI-II tagged queuing */
diff -u orig/drivers/scsi/scsi_ioctl.c linux-rpc/drivers/scsi/scsi_ioctl.c
--- orig/drivers/scsi/scsi_ioctl.c Mon Aug 5 13:31:24 2002
+++ linux-rpc/drivers/scsi/scsi_ioctl.c Tue Sep 24 16:38:24 2002
@@ -153,6 +153,29 @@
return result;
}
+int scsi_set_medium_removal(Scsi_Device *dev, char state)
+{
+ char scsi_cmd[MAX_COMMAND_SIZE];
+ int ret;
+
+ if (!dev->removable || !dev->lockable)
+ return 0;
+
+ scsi_cmd[0] = ALLOW_MEDIUM_REMOVAL;
+ scsi_cmd[1] = (dev->scsi_level <= SCSI_2) ? (dev->lun << 5) : 0;
+ scsi_cmd[2] = 0;
+ scsi_cmd[3] = 0;
+ scsi_cmd[4] = state;
+ scsi_cmd[5] = 0;
+
+ ret = ioctl_internal_command(dev, scsi_cmd, IOCTL_NORMAL_TIMEOUT, NORMAL_RETRIES);
+
+ if (ret == 0)
+ dev->locked = state == SCSI_REMOVAL_PREVENT;
+
+ return ret;
+}
+
/*
* This interface is depreciated - users should use the scsi generic (sg)
* interface instead, as this is a more flexible approach to performing
@@ -449,24 +472,9 @@
return scsi_ioctl_send_command((Scsi_Device *) dev,
(Scsi_Ioctl_Command *) arg);
case SCSI_IOCTL_DOORLOCK:
- if (!dev->removable || !dev->lockable)
- return 0;
- scsi_cmd[0] = ALLOW_MEDIUM_REMOVAL;
- scsi_cmd[1] = cmd_byte1;
- scsi_cmd[2] = scsi_cmd[3] = scsi_cmd[5] = 0;
- scsi_cmd[4] = SCSI_REMOVAL_PREVENT;
- return ioctl_internal_command((Scsi_Device *) dev, scsi_cmd,
- IOCTL_NORMAL_TIMEOUT, NORMAL_RETRIES);
- break;
+ return scsi_set_medium_removal(dev, SCSI_REMOVAL_PREVENT);
case SCSI_IOCTL_DOORUNLOCK:
- if (!dev->removable || !dev->lockable)
- return 0;
- scsi_cmd[0] = ALLOW_MEDIUM_REMOVAL;
- scsi_cmd[1] = cmd_byte1;
- scsi_cmd[2] = scsi_cmd[3] = scsi_cmd[5] = 0;
- scsi_cmd[4] = SCSI_REMOVAL_ALLOW;
- return ioctl_internal_command((Scsi_Device *) dev, scsi_cmd,
- IOCTL_NORMAL_TIMEOUT, NORMAL_RETRIES);
+ return scsi_set_medium_removal(dev, SCSI_REMOVAL_ALLOW);
case SCSI_IOCTL_TEST_UNIT_READY:
scsi_cmd[0] = TEST_UNIT_READY;
scsi_cmd[1] = cmd_byte1;
diff -u orig/drivers/scsi/sd.c linux-rpc/drivers/scsi/sd.c
--- orig/drivers/scsi/sd.c Mon Aug 5 13:31:25 2002
+++ linux-rpc/drivers/scsi/sd.c Tue Sep 24 16:07:45 2002
@@ -524,7 +524,7 @@
if (SDev->removable)
if (SDev->access_count==1)
if (scsi_block_when_processing_errors(SDev))
- scsi_ioctl(SDev, SCSI_IOCTL_DOORLOCK, NULL);
+ scsi_set_medium_removal(SDev, SCSI_REMOVAL_PREVENT);
return 0;
@@ -553,7 +553,7 @@
if (SDev->removable) {
if (!SDev->access_count)
if (scsi_block_when_processing_errors(SDev))
- scsi_ioctl(SDev, SCSI_IOCTL_DOORUNLOCK, NULL);
+ scsi_set_medium_removal(SDev, SCSI_REMOVAL_ALLOW);
}
if (SDev->host->hostt->module)
__MOD_DEC_USE_COUNT(SDev->host->hostt->module);
diff -u orig/drivers/scsi/sr_ioctl.c linux-rpc/drivers/scsi/sr_ioctl.c
--- orig/drivers/scsi/sr_ioctl.c Mon Aug 5 13:31:26 2002
+++ linux-rpc/drivers/scsi/sr_ioctl.c Tue Sep 24 16:09:08 2002
@@ -216,9 +216,8 @@
int sr_lock_door(struct cdrom_device_info *cdi, int lock)
{
- return scsi_ioctl(scsi_CDs[MINOR(cdi->dev)].device,
- lock ? SCSI_IOCTL_DOORLOCK : SCSI_IOCTL_DOORUNLOCK,
- 0);
+ return scsi_set_medium_removal(scsi_CDs[MINOR(cdi->dev)].device,
+ lock ? SCSI_REMOVAL_PREVENT : SCSI_REMOVAL_ALLOW);
}
int sr_drive_status(struct cdrom_device_info *cdi, int slot)
diff -u orig/drivers/scsi/scsi_error.c linux-rpc/drivers/scsi/scsi_error.c
--- orig/drivers/scsi/scsi_error.c Mon Aug 5 13:31:24 2002
+++ linux-rpc/drivers/scsi/scsi_error.c Tue Sep 24 17:03:58 2002
@@ -35,6 +35,8 @@
#include "hosts.h"
#include "constants.h"
+#include <scsi/scsi_ioctl.h> /* grr */
+
/*
* We must always allow SHUTDOWN_SIGS. Even if we are not a module,
* the host drivers that we are using may be loaded as modules, and
@@ -1219,6 +1221,43 @@
}
+static void scsi_eh_lock_done(struct scsi_cmnd *SCpnt)
+{
+ struct scsi_request *SRpnt = SCpnt->sc_request;
+
+ SCpnt->sc_request = NULL;
+ SRpnt->sr_command = NULL;
+
+ scsi_release_command(SCpnt);
+ scsi_release_request(SRpnt);
+}
+
+STATIC void scsi_eh_lock_door(struct scsi_device *dev)
+{
+ struct scsi_request *SRpnt = scsi_allocate_request(dev);
+
+ if (SRpnt == NULL) {
+ /* what now? */
+ return;
+ }
+
+ SRpnt->sr_cmnd[0] = ALLOW_MEDIUM_REMOVAL;
+ SRpnt->sr_cmnd[1] = (dev->scsi_level <= SCSI_2) ? (dev->lun << 5) : 0;
+ SRpnt->sr_cmnd[2] = 0;
+ SRpnt->sr_cmnd[3] = 0;
+ SRpnt->sr_cmnd[4] = SCSI_REMOVAL_PREVENT;
+ SRpnt->sr_cmnd[5] = 0;
+ SRpnt->sr_data_direction = SCSI_DATA_NONE;
+ SRpnt->sr_bufflen = 0;
+ SRpnt->sr_buffer = NULL;
+ SRpnt->sr_allowed = 5;
+ SRpnt->sr_done = scsi_eh_lock_done;
+ SRpnt->sr_timeout_per_command = 10 * HZ;
+ SRpnt->sr_cmd_len = COMMAND_SIZE(SRpnt->sr_cmnd[0]);
+
+ scsi_insert_special_req(SRpnt, 1);
+}
+
/*
* Function: scsi_restart_operations
*
@@ -1241,6 +1280,18 @@
ASSERT_LOCK(&io_request_lock, 0);
/*
+ * If the door was locked, we need to insert a door lock request
+ * onto the head of the SCSI request queue for the device. There
+ * is no point trying to lock the door of an off-line device.
+ */
+ for (SDpnt = host->host_queue; SDpnt; SDpnt = SDpnt->next) {
+ if (!SDpnt->online || !SDpnt->locked)
+ continue;
+
+ scsi_eh_lock_door(SDpnt);
+ }
+
+ /*
* Next free up anything directly waiting upon the host. This will be
* requests for character device operations, and also for ioctls to queued
* block devices.
diff -u orig/drivers/scsi/scsi_lib.c linux-rpc/drivers/scsi/scsi_lib.c
--- orig/drivers/scsi/scsi_lib.c Mon Aug 5 13:31:24 2002
+++ linux-rpc/drivers/scsi/scsi_lib.c Tue Sep 24 17:27:00 2002
@@ -901,8 +926,17 @@
* space. Technically the error handling thread should be
* doing this crap, but the error handler isn't used by
* most hosts.
+ *
+ * (rmk)
+ * Trying to lock the door can cause deadlocks. We therefore
+ * only use this for old hosts; our door locking is now done
+ * by the error handler in scsi_restart_operations for new
+ * eh hosts.
+ *
+ * Note that we don't clear was_reset here; this is used by
+ * st.c, and either one or other has to die.
*/
- if (SDpnt->was_reset) {
+ if (SHpnt->hostt->use_new_eh_code == 0 && SDpnt->was_reset) {
/*
* We need to relock the door, but we might
* be in an interrupt handler. Only do this
@@ -913,7 +947,7 @@
* this work.
*/
SDpnt->was_reset = 0;
- if (SDpnt->removable && !in_interrupt()) {
+ if (SDpnt->removable && SDpnt->locked && !in_interrupt()) {
spin_unlock_irq(&io_request_lock);
scsi_ioctl(SDpnt, SCSI_IOCTL_DOORLOCK, 0);
spin_lock_irq(&io_request_lock);
--
Russell King (rmk@arm.linux.org.uk) The developer of ARM Linux
http://www.arm.linux.org.uk/personal/aboutme.html
next prev parent reply other threads:[~2002-09-24 22:39 UTC|newest]
Thread overview: 269+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-24 11:35 SCSI woes (followup) Russell King
2002-09-24 13:46 ` James Bottomley
2002-09-24 13:58 ` Russell King
2002-09-24 14:29 ` James Bottomley
2002-09-24 18:16 ` Luben Tuikov
2002-09-24 18:18 ` Patrick Mansfield
2002-09-24 19:01 ` Russell King
2002-09-24 19:08 ` Mike Anderson
2002-09-24 19:21 ` Russell King
2002-09-24 19:32 ` Patrick Mansfield
2002-09-24 20:00 ` Russell King
2002-09-24 22:23 ` Patrick Mansfield
2002-09-24 23:04 ` Russell King
2002-09-24 22:39 ` Russell King [this message]
2002-09-24 23:14 ` James Bottomley
2002-09-24 23:26 ` Mike Anderson
2002-09-24 23:31 ` James Bottomley
2002-09-24 23:56 ` Mike Anderson
2002-09-24 23:33 ` Russell King
2002-09-25 0:47 ` Mike Anderson
2002-09-25 8:45 ` Russell King
2002-09-25 2:18 ` Doug Ledford
2002-09-25 14:41 ` Russell King
2002-09-24 23:33 ` Mike Anderson
2002-09-24 23:45 ` Russell King
2002-09-25 0:08 ` Patrick Mansfield
2002-09-25 8:41 ` Russell King
2002-09-25 17:22 ` Patrick Mansfield
2002-09-25 12:46 ` Russell King
2002-09-24 17:57 ` Luben Tuikov
2002-09-24 18:39 ` Mike Anderson
2002-09-24 18:49 ` Luben Tuikov
-- strict thread matches above, loose matches on Subject: below --
2002-11-21 15:16 [PATCH] turn scsi_allocate_device into readable code Christoph Hellwig
2002-11-21 15:36 ` Doug Ledford
2002-11-21 15:39 ` J.E.J. Bottomley
2002-11-21 15:49 ` Doug Ledford
2002-11-21 16:12 ` J.E.J. Bottomley
2002-11-21 17:08 ` [PATCH] current scsi-misc-2.5 include files Patrick Mansfield
2002-11-16 19:40 [PATCH] removel useless mod use count manipulation Christoph Hellwig
2002-11-17 2:59 ` Doug Ledford
2002-11-17 17:31 ` J.E.J. Bottomley
2002-11-17 18:14 ` Doug Ledford
2002-11-17 12:40 ` Douglas Gilbert
2002-11-17 12:48 ` Christoph Hellwig
2002-11-17 13:38 ` Douglas Gilbert
2002-11-15 20:34 [RFC][PATCH] move dma_mask into struct device J.E.J. Bottomley
2002-11-16 0:19 ` Mike Anderson
2002-11-16 14:48 ` J.E.J. Bottomley
2002-11-16 20:33 ` Patrick Mansfield
2002-11-17 15:07 ` J.E.J. Bottomley
2002-11-06 22:18 [PATCH] add request prep functions to SCSI J.E.J. Bottomley
2002-11-06 23:16 ` Doug Ledford
2002-11-06 23:43 ` J.E.J. Bottomley
2002-11-07 21:45 ` Mike Anderson
2002-11-06 4:24 [PATCH] fix 2.5 scsi queue depth setting Patrick Mansfield
2002-11-06 4:35 ` Patrick Mansfield
2002-11-06 17:15 ` J.E.J. Bottomley
2002-11-06 17:47 ` J.E.J. Bottomley
2002-11-06 18:24 ` Patrick Mansfield
2002-11-06 18:32 ` J.E.J. Bottomley
2002-11-06 18:39 ` Patrick Mansfield
2002-11-06 18:50 ` J.E.J. Bottomley
2002-11-06 19:50 ` Patrick Mansfield
2002-11-06 20:45 ` Doug Ledford
2002-11-06 21:19 ` J.E.J. Bottomley
2002-11-06 20:50 ` Doug Ledford
[not found] <patmans@us.ibm.com>
2002-10-15 16:55 ` [RFC PATCH] consolidate SCSI-2 command lun setting Patrick Mansfield
2002-10-15 20:29 ` James Bottomley
2002-10-15 22:00 ` Patrick Mansfield
2002-10-30 16:58 ` [PATCH] 2.5 current bk fix setting scsi queue depths Patrick Mansfield
2002-10-30 17:17 ` James Bottomley
2002-10-30 18:05 ` Patrick Mansfield
2002-10-31 0:44 ` James Bottomley
2002-10-21 19:34 [PATCH] get rid of ->finish method for highlevel drivers Christoph Hellwig
2002-10-21 23:58 ` James Bottomley
2002-10-22 15:48 ` James Bottomley
2002-10-22 18:43 ` Patrick Mansfield
2002-10-22 23:17 ` Mike Anderson
2002-10-22 23:30 ` Doug Ledford
2002-10-23 14:16 ` James Bottomley
2002-10-23 15:13 ` Christoph Hellwig
2002-10-24 1:36 ` Patrick Mansfield
2002-10-24 23:20 ` Willem Riede
2002-10-24 23:36 ` Christoph Hellwig
2002-10-25 0:02 ` Willem Riede
2002-10-22 7:30 ` Mike Anderson
2002-10-22 11:14 ` Christoph Hellwig
[not found] <dledford@redhat.com>
2002-10-02 0:28 ` PATCH: scsi device queue depth adjustability patch Doug Ledford
2002-10-02 1:16 ` Alan Cox
2002-10-02 1:41 ` Doug Ledford
2002-10-02 13:44 ` Alan Cox
2002-10-02 21:41 ` James Bottomley
2002-10-02 22:18 ` Doug Ledford
2002-10-02 23:19 ` James Bottomley
2002-10-03 12:46 ` James Bottomley
2002-10-03 16:35 ` Doug Ledford
2002-10-04 1:40 ` Jeremy Higdon
2002-10-03 14:25 ` James Bottomley
2002-10-03 16:41 ` Doug Ledford
2002-10-03 17:00 ` James Bottomley
2002-10-16 21:35 ` scsi_scan.c question Doug Ledford
2002-10-16 21:41 ` James Bottomley
2002-10-17 0:18 ` Doug Ledford
2002-10-16 21:57 ` Patrick Mansfield
2002-10-18 15:57 ` Patrick Mansfield
2002-11-18 0:27 ` aic7xxx_biosparam Doug Ledford
2002-11-18 0:36 ` aic7xxx_biosparam J.E.J. Bottomley
2002-11-18 2:46 ` aic7xxx_biosparam Doug Ledford
2002-11-18 3:20 ` aic7xxx_biosparam J.E.J. Bottomley
2002-11-18 3:26 ` aic7xxx_biosparam Doug Ledford
2002-11-18 0:43 ` aic7xxx_biosparam Andries Brouwer
2002-11-18 2:47 ` aic7xxx_biosparam Doug Ledford
2002-11-18 0:57 ` aic7xxx_biosparam Alan Cox
2002-11-18 2:34 ` aic7xxx_biosparam Doug Ledford
2002-12-21 1:22 ` scsi_scan changes Doug Ledford
2002-12-21 1:27 ` James Bottomley
2002-10-15 18:55 [patch 2.5] ips queue depths Jeffery, David
2002-10-15 19:30 ` Dave Hansen
2002-10-15 19:47 ` Doug Ledford
2002-10-15 20:04 ` Patrick Mansfield
2002-10-15 20:52 ` Doug Ledford
2002-10-15 23:30 ` Patrick Mansfield
2002-10-15 23:56 ` Luben Tuikov
2002-10-16 2:32 ` Doug Ledford
2002-10-16 19:04 ` Patrick Mansfield
2002-10-16 20:15 ` Doug Ledford
2002-10-17 0:39 ` Luben Tuikov
2002-10-17 17:01 ` Mike Anderson
2002-10-17 21:13 ` Luben Tuikov
2002-10-15 20:10 ` Mike Anderson
2002-10-15 20:24 ` Doug Ledford
2002-10-15 20:38 ` James Bottomley
2002-10-15 22:10 ` Mike Anderson
2002-10-16 1:04 ` James Bottomley
2002-10-15 20:24 ` Mike Anderson
2002-10-15 22:46 ` Doug Ledford
2002-10-15 20:26 ` Luben Tuikov
2002-10-15 21:27 ` Patrick Mansfield
2002-10-16 0:43 ` Luben Tuikov
2002-10-21 7:28 ` Mike Anderson
2002-10-21 16:16 ` Doug Ledford
2002-10-21 16:29 ` James Bottomley
2002-10-10 15:01 [PATCH] scsi host cleanup 3/3 (driver changes) Stephen Cameron
2002-10-10 16:46 ` Mike Anderson
2002-10-10 16:59 ` James Bottomley
2002-10-10 20:05 ` Mike Anderson
2002-09-30 21:06 [PATCH] first cut at fixing unable to requeue with no outstanding commands James Bottomley
2002-09-30 23:28 ` Mike Anderson
2002-10-01 0:38 ` James Bottomley
2002-10-01 15:01 ` Patrick Mansfield
2002-10-01 15:14 ` James Bottomley
2002-10-01 16:23 ` Mike Anderson
2002-10-01 16:30 ` James Bottomley
2002-10-01 20:18 ` Inhibit auto-attach of scsi disks ? Scott Merritt
2002-10-02 0:46 ` Alan Cox
2002-10-02 1:49 ` Scott Merritt
2002-10-02 1:58 ` Doug Ledford
2002-10-02 2:45 ` Scott Merritt
2002-10-02 13:40 ` Alan Cox
[not found] <200209091458.g89Evv806056@localhost.localdomain>
2002-09-09 16:56 ` [RFC] Multi-path IO in 2.5/2.6 ? Patrick Mansfield
2002-09-09 17:34 ` James Bottomley
2002-09-09 18:40 ` Mike Anderson
2002-09-10 13:02 ` Lars Marowsky-Bree
2002-09-10 16:03 ` Patrick Mansfield
2002-09-10 16:27 ` Mike Anderson
2002-09-10 0:08 ` Patrick Mansfield
2002-09-10 7:55 ` Jeremy Higdon
2002-09-10 13:04 ` Lars Marowsky-Bree
2002-09-10 16:20 ` Patrick Mansfield
2002-09-10 13:16 ` Lars Marowsky-Bree
2002-09-10 19:26 ` Patrick Mansfield
2002-09-11 14:20 ` James Bottomley
2002-09-11 19:17 ` Lars Marowsky-Bree
2002-09-11 19:37 ` James Bottomley
2002-09-11 19:52 ` Lars Marowsky-Bree
2002-09-11 21:38 ` Oliver Xymoron
2002-09-11 20:30 ` Doug Ledford
2002-09-11 21:17 ` Mike Anderson
2002-09-10 17:21 ` Patrick Mochel
2002-09-10 18:42 ` Patrick Mansfield
2002-09-10 19:00 ` Patrick Mochel
2002-09-10 19:37 ` Patrick Mansfield
2002-09-03 14:35 aic7xxx sets CDR offline, how to reset? James Bottomley
2002-09-03 18:23 ` Doug Ledford
2002-09-03 19:09 ` James Bottomley
2002-09-03 20:59 ` Alan Cox
2002-09-03 21:32 ` James Bottomley
2002-09-03 21:54 ` Alan Cox
2002-09-03 22:50 ` Doug Ledford
2002-09-03 23:28 ` Alan Cox
2002-09-04 7:40 ` Jeremy Higdon
2002-09-04 16:24 ` James Bottomley
2002-09-04 17:13 ` Mike Anderson
2002-09-05 9:50 ` Jeremy Higdon
2002-09-04 16:13 ` James Bottomley
2002-09-04 16:50 ` Justin T. Gibbs
2002-09-05 9:39 ` Jeremy Higdon
2002-09-05 13:35 ` Justin T. Gibbs
2002-09-05 23:56 ` Jeremy Higdon
2002-09-06 0:13 ` Justin T. Gibbs
2002-09-06 0:32 ` Jeremy Higdon
2002-09-03 21:13 ` Doug Ledford
2002-09-03 21:48 ` James Bottomley
2002-09-03 22:42 ` Doug Ledford
2002-09-03 22:52 ` Doug Ledford
2002-09-03 23:29 ` Alan Cox
2002-09-04 21:16 ` Luben Tuikov
2002-09-04 10:37 ` Andries Brouwer
2002-09-04 10:48 ` Doug Ledford
2002-09-04 11:23 ` Alan Cox
2002-09-04 16:25 ` Rogier Wolff
2002-09-04 19:34 ` Thunder from the hill
2002-09-03 21:24 ` Patrick Mansfield
2002-09-03 22:02 ` James Bottomley
2002-09-03 23:26 ` Alan Cox
2002-08-26 16:29 [RFC]: 64 bit LUN/Tags, dummy device in host_queue, host_lock <-> LLDD reentrancy Aron Zeh
2002-08-26 16:48 ` James Bottomley
2002-08-26 17:27 ` Mike Anderson
2002-08-26 19:00 ` James Bottomley
2002-08-26 20:57 ` Mike Anderson
2002-08-26 21:10 ` James Bottomley
2002-08-26 22:38 ` Mike Anderson
2002-08-26 22:56 ` Patrick Mansfield
2002-08-26 23:10 ` Doug Ledford
2002-08-28 14:38 ` James Bottomley
2002-08-26 21:15 ` Mike Anderson
2002-08-12 23:38 [PATCH] 2.5.31 scsi_error.c cleanup Mike Anderson
2002-08-22 14:05 ` James Bottomley
2002-08-22 16:34 ` Mike Anderson
2002-08-22 17:11 ` James Bottomley
2002-08-22 20:10 ` Mike Anderson
2002-08-05 23:53 When must the io_request_lock be held? Jamie Wellnitz
2002-08-06 17:58 ` Mukul Kotwani
2002-08-07 14:48 ` Doug Ledford
2002-08-07 15:26 ` James Bottomley
2002-08-07 16:18 ` Doug Ledford
2002-08-07 16:48 ` James Bottomley
2002-08-07 18:06 ` Mike Anderson
2002-08-07 23:17 ` James Bottomley
2002-08-08 19:28 ` Luben Tuikov
2002-08-07 16:55 ` Patrick Mansfield
[not found] <200206132126.g5DLQiQ24889@localhost.localdomain>
2002-06-13 21:50 ` Proposed changes to generic blk tag for use in SCSI (1/3) Doug Ledford
2002-06-13 22:09 ` James Bottomley
2002-06-11 2:46 James Bottomley
2002-06-11 5:50 ` Jens Axboe
2002-06-11 14:29 ` James Bottomley
2002-06-11 14:45 ` Jens Axboe
2002-06-11 16:39 ` James Bottomley
2002-06-13 21:01 ` Doug Ledford
2002-06-13 21:26 ` James Bottomley
2002-04-08 15:18 [RFC] Persistent naming of scsi devices sullivan
2002-04-08 15:04 ` Christoph Hellwig
2002-04-08 15:59 ` Matthew Jacob
2002-04-08 16:34 ` James Bottomley
2002-04-08 18:27 ` Patrick Mansfield
2002-04-08 19:17 ` James Bottomley
2002-04-09 0:22 ` Douglas Gilbert
2002-04-09 14:35 ` sullivan
2002-04-09 14:55 ` sullivan
2002-04-08 17:51 ` Oliver Neukum
2002-04-08 18:01 ` Christoph Hellwig
2002-04-08 18:18 ` Matthew Jacob
2002-04-08 18:28 ` James Bottomley
2002-04-08 18:34 ` Matthew Jacob
2002-04-08 19:07 ` James Bottomley
2002-04-08 20:41 ` Matthew Jacob
2002-04-08 18:45 ` Tigran Aivazian
2002-04-08 20:18 ` Eddie Williams
2002-04-09 0:48 ` Kurt Garloff
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=20020924233941.A9952@flint.arm.linux.org.uk \
--to=rmk@arm.linux.org.uk \
--cc=James.Bottomley@steeleye.com \
--cc=linux-scsi@vger.kernel.org \
--cc=patmans@us.ibm.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;
as well as URLs for NNTP newsgroup(s).