* [PATCH] tmscsim: use block-layer tags
@ 2004-10-12 21:14 Guennadi Liakhovetski
2004-10-13 19:35 ` Guennadi Liakhovetski
0 siblings, 1 reply; 4+ messages in thread
From: Guennadi Liakhovetski @ 2004-10-12 21:14 UTC (permalink / raw)
To: James Bottomley; +Cc: linux-scsi
Slightly tested. Applies on the top of all up to date tmscsim patches (if
I didn't miss any). Reviews, tests highly welcome. Inline patch should be
fine now. Will re-send if still not...
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
diff -u a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c
--- a/drivers/scsi/tmscsim.c Tue Oct 12 22:46:13 2004
+++ b/drivers/scsi/tmscsim.c Tue Oct 12 23:00:37 2004
@@ -494,8 +494,10 @@
static int
dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
- struct scsi_device *sdev = pSRB->pcmd->device;
- u8 cmd; u8 disc_allowed, try_sync_nego;
+ struct scsi_cmnd *scmd = pSRB->pcmd;
+ struct scsi_device *sdev = scmd->device;
+ u8 cmd, disc_allowed, try_sync_nego;
+ char tag[2];
pSRB->ScsiPhase = SCSI_NOP0;
@@ -524,7 +526,7 @@
DC390_write8 (CtrlReg4, pDCB->CtrlR4);
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); /* Flush FIFO */
DEBUG1(printk (KERN_INFO "DC390: Start SCSI command: %02x (Sync:%02x)\n",\
- pSRB->pcmd->cmnd[0], pDCB->SyncMode));
+ scmd->cmnd[0], pDCB->SyncMode));
disc_allowed = pDCB->DevMode & EN_DISCONNECT_;
try_sync_nego = 0;
/* Don't disconnect on AUTO_REQSENSE, cause it might be an
@@ -537,33 +539,26 @@
||*/ (pSRB->SRBFlag & AUTO_REQSENSE) )
disc_allowed = 0;
if ( (pDCB->SyncMode & SYNC_ENABLE) && (pDCB->TargetLUN == 0) && sdev->sdtr &&
- ( ( ( (pSRB->pcmd->cmnd[0] == REQUEST_SENSE) || (pSRB->SRBFlag & AUTO_REQSENSE) )
- && !(pDCB->SyncMode & SYNC_NEGO_DONE) ) || (pSRB->pcmd->cmnd[0] == INQUIRY) ) )
+ ( ( ( (scmd->cmnd[0] == REQUEST_SENSE) || (pSRB->SRBFlag & AUTO_REQSENSE) )
+ && !(pDCB->SyncMode & SYNC_NEGO_DONE) ) || (scmd->cmnd[0] == INQUIRY) ) )
try_sync_nego = 1;
- pSRB->MsgCnt = 0; cmd = SEL_W_ATN;
+ pSRB->MsgCnt = 0;
+ cmd = SEL_W_ATN;
DC390_write8 (ScsiFifo, IDENTIFY(disc_allowed, pDCB->TargetLUN));
/* Change 99/05/31: Don't use tags when not disconnecting (BUSY) */
- if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed)
- {
- s8 tag_no = 0;
- while ((1 << tag_no) & pDCB->TagMask) tag_no++;
- if (tag_no >= sizeof (pDCB->TagMask)*8 || tag_no >= pDCB->MaxCommand) {
- printk (KERN_WARNING "DC390: Out of tags for Dev. %02x %02x\n", pDCB->TargetID, pDCB->TargetLUN);
- return 1;
- //goto no_tag;
- }
- DC390_write8 (ScsiFifo, SIMPLE_QUEUE_TAG);
- pDCB->TagMask |= (1 << tag_no); pSRB->TagNumber = tag_no;
- DC390_write8 (ScsiFifo, tag_no);
- DEBUG1(printk (KERN_DEBUG "DC390: Select w/DisCn for Cmd %li (SRB %p), Using Tag %02x\n", pSRB->pcmd->pid, pSRB, tag_no));
+ if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed && scsi_populate_tag_msg(scmd, tag)) {
+ DC390_write8(ScsiFifo, tag[0]);
+ pDCB->TagMask |= (1 << tag[1]);
+ pSRB->TagNumber = tag[1];
+ DC390_write8(ScsiFifo, tag[1]);
+ DEBUG1(printk(KERN_INFO "DC390: Select w/DisCn for Cmd %li (SRB %p), block tag %02x\n", scmd->pid, pSRB, tag[1]));
cmd = SEL_W_ATN3;
- }
- else /* No TagQ */
- {
-// no_tag:
- DEBUG1(printk (KERN_DEBUG "DC390: Select w%s/DisCn for Cmd %li (SRB %p), No TagQ\n", (disc_allowed?"":"o"), pSRB->pcmd->pid, pSRB));
- }
+ } else {
+ /* No TagQ */
+//no_tag:
+ DEBUG1(printk(KERN_INFO "DC390: Select w%s/DisCn for Cmd %li (SRB %p), No TagQ\n", (disc_allowed ? "" : "o"), scmd->pid, pSRB));
+ }
pSRB->SRBState = SRB_START_;
@@ -592,15 +587,15 @@
DC390_write8 (ScsiFifo, pDCB->TargetLUN << 5);
DC390_write8 (ScsiFifo, 0);
DC390_write8 (ScsiFifo, 0);
- DC390_write8 (ScsiFifo, sizeof(pSRB->pcmd->sense_buffer));
+ DC390_write8 (ScsiFifo, sizeof(scmd->sense_buffer));
DC390_write8 (ScsiFifo, 0);
DEBUG1(printk (KERN_DEBUG "DC390: AutoReqSense !\n"));
}
else /* write cmnd to bus */
{
u8 *ptr; u8 i;
- ptr = (u8 *) pSRB->pcmd->cmnd;
- for (i=0; i<pSRB->pcmd->cmd_len; i++)
+ ptr = (u8 *)scmd->cmnd;
+ for (i = 0; i < scmd->cmd_len; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
}
@@ -613,14 +608,15 @@
{
dc390_freetag (pDCB, pSRB);
DEBUG0(printk ("DC390: Interrupt during Start SCSI (pid %li, target %02i-%02i)\n",
- pSRB->pcmd->pid, pSRB->pcmd->device->id, pSRB->pcmd->device->lun));
+ scmd->pid, scmd->device->id, scmd->device->lun));
pSRB->SRBState = SRB_READY;
//DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
pACB->SelLost++;
return 1;
}
DC390_write8 (ScsiCmd, cmd);
- pACB->pActiveDCB = pDCB; pDCB->pActiveSRB = pSRB;
+ pACB->pActiveDCB = pDCB;
+ pDCB->pActiveSRB = pSRB;
pACB->Connected = 1;
pSRB->ScsiPhase = SCSI_NOP1;
return 0;
@@ -1067,7 +1063,8 @@
dc390_MsgIn_reject (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
pSRB->MsgOutBuf[0] = MESSAGE_REJECT;
- pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT;
+ pSRB->MsgCnt = 1;
+ DC390_ENABLE_MSGOUT;
DEBUG0 (printk (KERN_INFO "DC390: Reject message\n"));
}
@@ -1083,29 +1080,24 @@
static struct dc390_srb*
dc390_MsgIn_QTag (struct dc390_acb* pACB, struct dc390_dcb* pDCB, s8 tag)
{
- struct dc390_srb* lastSRB = pDCB->pGoingLast;
struct dc390_srb* pSRB = pDCB->pGoingSRB;
if (pSRB)
{
- for( ;pSRB ; )
- {
- if (pSRB->TagNumber == tag) break;
- if (pSRB == lastSRB) goto mingx0;
- pSRB = pSRB->pNextSRB;
- }
+ struct scsi_cmnd *scmd = scsi_find_tag(pSRB->pcmd->device, tag);
+ pSRB = (struct dc390_srb *)scmd->host_scribble;
- if( pDCB->DCBFlag & ABORT_DEV_ )
+ if (pDCB->DCBFlag & ABORT_DEV_)
{
pSRB->SRBState = SRB_ABORT_SENT;
dc390_EnableMsgOut_Abort( pACB, pSRB );
}
- if( !(pSRB->SRBState & SRB_DISCONNECT) )
- goto mingx0;
+ if (!(pSRB->SRBState & SRB_DISCONNECT))
+ goto mingx0;
- pDCB->pActiveSRB = pSRB;
- pSRB->SRBState = SRB_DATA_XFER;
+ pDCB->pActiveSRB = pSRB;
+ pSRB->SRBState = SRB_DATA_XFER;
}
else
{
@@ -1906,7 +1898,7 @@
{
struct dc390_dcb *pDCB, *pdcb;
struct dc390_srb *psrb, *psrb2;
- u8 i;
+ int i;
struct scsi_cmnd *pcmd;
pDCB = pACB->pLinkDCB;
@@ -1915,7 +1907,7 @@
do
{
psrb = pdcb->pGoingSRB;
- for( i=0; i<pdcb->GoingSRBCnt; i++)
+ for (i = 0; i < pdcb->GoingSRBCnt; i++)
{
psrb2 = psrb->pNextSRB;
pcmd = psrb->pcmd;
@@ -2003,6 +1995,7 @@
srb->pSRBDCB = dcb;
srb->pcmd = cmd;
+ cmd->host_scribble = (char *)srb;
srb->SGIndex = 0;
srb->AdaptStatus = 0;
@@ -2279,7 +2272,9 @@
if (sdev->tagged_supported && (dcb->DevMode & TAG_QUEUEING_)) {
dcb->SyncMode |= EN_TAG_QUEUEING;
dcb->MaxCommand = dcb->pDCBACB->TagMaxNum;
+ scsi_activate_tcq(sdev, dcb->MaxCommand);
}
+
return 0;
}
Thanks
Guennadi
---
Guennadi Liakhovetski
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tmscsim: use block-layer tags
2004-10-12 21:14 [PATCH] tmscsim: use block-layer tags Guennadi Liakhovetski
@ 2004-10-13 19:35 ` Guennadi Liakhovetski
2004-10-13 21:49 ` James Bottomley
0 siblings, 1 reply; 4+ messages in thread
From: Guennadi Liakhovetski @ 2004-10-13 19:35 UTC (permalink / raw)
To: James Bottomley; +Cc: linux-scsi
On Tue, 12 Oct 2004, Guennadi Liakhovetski wrote:
> Slightly tested. Applies on the top of all up to date tmscsim patches (if
> I didn't miss any). Reviews, tests highly welcome. Inline patch should be
> fine now. Will re-send if still not...
I think, there was (at least) one missing chunk in the first version of
the patch. Here's an updated version. Patch inlining seems to work indeed
now.
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
diff -u a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c
--- a/drivers/scsi/tmscsim.c Tue Oct 12 23:06:39 2004
+++ b/drivers/scsi/tmscsim.c Wed Oct 13 21:27:25 2004
@@ -494,8 +494,10 @@
static int
dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
- struct scsi_device *sdev = pSRB->pcmd->device;
- u8 cmd; u8 disc_allowed, try_sync_nego;
+ struct scsi_cmnd *scmd = pSRB->pcmd;
+ struct scsi_device *sdev = scmd->device;
+ u8 cmd, disc_allowed, try_sync_nego;
+ char tag[2];
pSRB->ScsiPhase = SCSI_NOP0;
@@ -524,7 +526,7 @@
DC390_write8 (CtrlReg4, pDCB->CtrlR4);
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); /* Flush FIFO */
DEBUG1(printk (KERN_INFO "DC390: Start SCSI command: %02x (Sync:%02x)\n",\
- pSRB->pcmd->cmnd[0], pDCB->SyncMode));
+ scmd->cmnd[0], pDCB->SyncMode));
disc_allowed = pDCB->DevMode & EN_DISCONNECT_;
try_sync_nego = 0;
/* Don't disconnect on AUTO_REQSENSE, cause it might be an
@@ -537,33 +539,26 @@
||*/ (pSRB->SRBFlag & AUTO_REQSENSE) )
disc_allowed = 0;
if ( (pDCB->SyncMode & SYNC_ENABLE) && (pDCB->TargetLUN == 0) && sdev->sdtr &&
- ( ( ( (pSRB->pcmd->cmnd[0] == REQUEST_SENSE) || (pSRB->SRBFlag & AUTO_REQSENSE) )
- && !(pDCB->SyncMode & SYNC_NEGO_DONE) ) || (pSRB->pcmd->cmnd[0] == INQUIRY) ) )
+ ( ( ( (scmd->cmnd[0] == REQUEST_SENSE) || (pSRB->SRBFlag & AUTO_REQSENSE) )
+ && !(pDCB->SyncMode & SYNC_NEGO_DONE) ) || (scmd->cmnd[0] == INQUIRY) ) )
try_sync_nego = 1;
- pSRB->MsgCnt = 0; cmd = SEL_W_ATN;
+ pSRB->MsgCnt = 0;
+ cmd = SEL_W_ATN;
DC390_write8 (ScsiFifo, IDENTIFY(disc_allowed, pDCB->TargetLUN));
/* Change 99/05/31: Don't use tags when not disconnecting (BUSY) */
- if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed)
- {
- s8 tag_no = 0;
- while ((1 << tag_no) & pDCB->TagMask) tag_no++;
- if (tag_no >= sizeof (pDCB->TagMask)*8 || tag_no >= pDCB->MaxCommand) {
- printk (KERN_WARNING "DC390: Out of tags for Dev. %02x %02x\n", pDCB->TargetID, pDCB->TargetLUN);
- return 1;
- //goto no_tag;
- }
- DC390_write8 (ScsiFifo, SIMPLE_QUEUE_TAG);
- pDCB->TagMask |= (1 << tag_no); pSRB->TagNumber = tag_no;
- DC390_write8 (ScsiFifo, tag_no);
- DEBUG1(printk (KERN_DEBUG "DC390: Select w/DisCn for Cmd %li (SRB %p), Using Tag %02x\n", pSRB->pcmd->pid, pSRB, tag_no));
+ if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed && scsi_populate_tag_msg(scmd, tag)) {
+ DC390_write8(ScsiFifo, tag[0]);
+ pDCB->TagMask |= (1 << tag[1]);
+ pSRB->TagNumber = tag[1];
+ DC390_write8(ScsiFifo, tag[1]);
+ DEBUG1(printk(KERN_INFO "DC390: Select w/DisCn for Cmd %li (SRB %p), block tag %02x\n", scmd->pid, pSRB, tag[1]));
cmd = SEL_W_ATN3;
- }
- else /* No TagQ */
- {
-// no_tag:
- DEBUG1(printk (KERN_DEBUG "DC390: Select w%s/DisCn for Cmd %li (SRB %p), No TagQ\n", (disc_allowed?"":"o"), pSRB->pcmd->pid, pSRB));
- }
+ } else {
+ /* No TagQ */
+//no_tag:
+ DEBUG1(printk(KERN_INFO "DC390: Select w%s/DisCn for Cmd %li (SRB %p), No TagQ\n", (disc_allowed ? "" : "o"), scmd->pid, pSRB));
+ }
pSRB->SRBState = SRB_START_;
@@ -592,15 +587,15 @@
DC390_write8 (ScsiFifo, pDCB->TargetLUN << 5);
DC390_write8 (ScsiFifo, 0);
DC390_write8 (ScsiFifo, 0);
- DC390_write8 (ScsiFifo, sizeof(pSRB->pcmd->sense_buffer));
+ DC390_write8 (ScsiFifo, sizeof(scmd->sense_buffer));
DC390_write8 (ScsiFifo, 0);
DEBUG1(printk (KERN_DEBUG "DC390: AutoReqSense !\n"));
}
else /* write cmnd to bus */
{
u8 *ptr; u8 i;
- ptr = (u8 *) pSRB->pcmd->cmnd;
- for (i=0; i<pSRB->pcmd->cmd_len; i++)
+ ptr = (u8 *)scmd->cmnd;
+ for (i = 0; i < scmd->cmd_len; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
}
@@ -613,14 +608,15 @@
{
dc390_freetag (pDCB, pSRB);
DEBUG0(printk ("DC390: Interrupt during Start SCSI (pid %li, target %02i-%02i)\n",
- pSRB->pcmd->pid, pSRB->pcmd->device->id, pSRB->pcmd->device->lun));
+ scmd->pid, scmd->device->id, scmd->device->lun));
pSRB->SRBState = SRB_READY;
//DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
pACB->SelLost++;
return 1;
}
DC390_write8 (ScsiCmd, cmd);
- pACB->pActiveDCB = pDCB; pDCB->pActiveSRB = pSRB;
+ pACB->pActiveDCB = pDCB;
+ pDCB->pActiveSRB = pSRB;
pACB->Connected = 1;
pSRB->ScsiPhase = SCSI_NOP1;
return 0;
@@ -1067,7 +1063,8 @@
dc390_MsgIn_reject (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
pSRB->MsgOutBuf[0] = MESSAGE_REJECT;
- pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT;
+ pSRB->MsgCnt = 1;
+ DC390_ENABLE_MSGOUT;
DEBUG0 (printk (KERN_INFO "DC390: Reject message\n"));
}
@@ -1083,29 +1080,24 @@
static struct dc390_srb*
dc390_MsgIn_QTag (struct dc390_acb* pACB, struct dc390_dcb* pDCB, s8 tag)
{
- struct dc390_srb* lastSRB = pDCB->pGoingLast;
struct dc390_srb* pSRB = pDCB->pGoingSRB;
if (pSRB)
{
- for( ;pSRB ; )
- {
- if (pSRB->TagNumber == tag) break;
- if (pSRB == lastSRB) goto mingx0;
- pSRB = pSRB->pNextSRB;
- }
+ struct scsi_cmnd *scmd = scsi_find_tag(pSRB->pcmd->device, tag);
+ pSRB = (struct dc390_srb *)scmd->host_scribble;
- if( pDCB->DCBFlag & ABORT_DEV_ )
+ if (pDCB->DCBFlag & ABORT_DEV_)
{
pSRB->SRBState = SRB_ABORT_SENT;
dc390_EnableMsgOut_Abort( pACB, pSRB );
}
- if( !(pSRB->SRBState & SRB_DISCONNECT) )
- goto mingx0;
+ if (!(pSRB->SRBState & SRB_DISCONNECT))
+ goto mingx0;
- pDCB->pActiveSRB = pSRB;
- pSRB->SRBState = SRB_DATA_XFER;
+ pDCB->pActiveSRB = pSRB;
+ pSRB->SRBState = SRB_DATA_XFER;
}
else
{
@@ -1782,7 +1774,7 @@
static void
dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
- u8 bval, status;
+ u8 status;
struct scsi_cmnd *pcmd;
pcmd = pSRB->pcmd;
@@ -1833,9 +1825,13 @@
}
else if( status_byte(status) == QUEUE_FULL )
{
- bval = (u8) pDCB->GoingSRBCnt;
- bval--;
- pDCB->MaxCommand = bval;
+ if (pDCB->GoingSRBCnt > 2) {
+ pDCB->MaxCommand = pDCB->GoingSRBCnt - 1;
+ scsi_adjust_queue_depth(pcmd->device, MSG_ORDERED_TAG, pDCB->MaxCommand);
+ } else {
+ pDCB->MaxCommand = 1;
+ scsi_deactivate_tcq(pcmd->device, pcmd->device->host->can_queue);
+ }
pcmd->use_sg = pSRB->SavedSGCount;
DEBUG0 (printk ("DC390: RETRY pid %li (%02x), target %02i-%02i\n", pcmd->pid, pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun));
pSRB->TotalXferredLen = 0;
@@ -1906,7 +1902,7 @@
{
struct dc390_dcb *pDCB, *pdcb;
struct dc390_srb *psrb, *psrb2;
- u8 i;
+ int i;
struct scsi_cmnd *pcmd;
pDCB = pACB->pLinkDCB;
@@ -1915,7 +1911,7 @@
do
{
psrb = pdcb->pGoingSRB;
- for( i=0; i<pdcb->GoingSRBCnt; i++)
+ for (i = 0; i < pdcb->GoingSRBCnt; i++)
{
psrb2 = psrb->pNextSRB;
pcmd = psrb->pcmd;
@@ -2003,6 +1999,7 @@
srb->pSRBDCB = dcb;
srb->pcmd = cmd;
+ cmd->host_scribble = (char *)srb;
srb->SGIndex = 0;
srb->AdaptStatus = 0;
@@ -2279,7 +2276,9 @@
if (sdev->tagged_supported && (dcb->DevMode & TAG_QUEUEING_)) {
dcb->SyncMode |= EN_TAG_QUEUEING;
dcb->MaxCommand = dcb->pDCBACB->TagMaxNum;
+ scsi_activate_tcq(sdev, dcb->MaxCommand);
}
+
return 0;
}
Thanks
Guennadi
---
Guennadi Liakhovetski
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tmscsim: use block-layer tags
2004-10-13 19:35 ` Guennadi Liakhovetski
@ 2004-10-13 21:49 ` James Bottomley
2004-10-13 22:00 ` Christoph Hellwig
0 siblings, 1 reply; 4+ messages in thread
From: James Bottomley @ 2004-10-13 21:49 UTC (permalink / raw)
To: Guennadi Liakhovetski; +Cc: SCSI Mailing List
On Wed, 2004-10-13 at 14:35, Guennadi Liakhovetski wrote:
> On Tue, 12 Oct 2004, Guennadi Liakhovetski wrote:
>
> > Slightly tested. Applies on the top of all up to date tmscsim patches (if
> > I didn't miss any). Reviews, tests highly welcome. Inline patch should be
> > fine now. Will re-send if still not...
>
> I think, there was (at least) one missing chunk in the first version of
> the patch. Here's an updated version. Patch inlining seems to work indeed
> now.
This doesn't want to apply to scsi-misc-2.6 ...
Patch failed. **** patch log follows ****
Patching file drivers/scsi/tmscsim.c
11 out of 13 hunks FAILED -- saving rejects to file
drivers/scsi/tmscsim.c.rej
James
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] tmscsim: use block-layer tags
2004-10-13 21:49 ` James Bottomley
@ 2004-10-13 22:00 ` Christoph Hellwig
0 siblings, 0 replies; 4+ messages in thread
From: Christoph Hellwig @ 2004-10-13 22:00 UTC (permalink / raw)
To: James Bottomley; +Cc: Guennadi Liakhovetski, SCSI Mailing List
On Wed, Oct 13, 2004 at 04:49:22PM -0500, James Bottomley wrote:
> On Wed, 2004-10-13 at 14:35, Guennadi Liakhovetski wrote:
> > On Tue, 12 Oct 2004, Guennadi Liakhovetski wrote:
> >
> > > Slightly tested. Applies on the top of all up to date tmscsim patches (if
> > > I didn't miss any). Reviews, tests highly welcome. Inline patch should be
> > > fine now. Will re-send if still not...
> >
> > I think, there was (at least) one missing chunk in the first version of
> > the patch. Here's an updated version. Patch inlining seems to work indeed
> > now.
>
> This doesn't want to apply to scsi-misc-2.6 ...
>
> Patch failed. **** patch log follows ****
> Patching file drivers/scsi/tmscsim.c
> 11 out of 13 hunks FAILED -- saving rejects to file
> drivers/scsi/tmscsim.c.rej
scsi-misc still seems to be missing the patch to merge scsiiom.c into
tmscsim.c
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-10-13 22:00 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-12 21:14 [PATCH] tmscsim: use block-layer tags Guennadi Liakhovetski
2004-10-13 19:35 ` Guennadi Liakhovetski
2004-10-13 21:49 ` James Bottomley
2004-10-13 22:00 ` Christoph Hellwig
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox