Skip to contentSkip to conversation

final pre -rc pieces of SCSI for 2.6.14

PATCH In review James Bottomley 5 participants 6 messages Nov 11, 2005 – Nov 12, 2005 SCSI

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 final pre -rc pieces of SCSI for 2.6.14

This should be the final round of updates that I've been doing a few integration tests on.

The patch should be available here (checked the permissions this time)

master.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-for-linus-2.6.git

The short changelog is:

Adrian Bunk:
o remove the obsolete SCSI qlogicisp driver

Alan Stern:
o Fix refcount leak in scsi_report_lun_scan

Andrew Vasquez:
o qla2xxx: Update version number to 8.01.03-k
o qla2xxx: Correct ISP24xx soft-reset handling
o qla2xxx: Correct additional posting issues during NVRAM accesses

Brian King:
o ipr: Driver version 2.1.0
o ipr: Better handle failure of adapter bringup commands
o ipr: Increase ipr device scanning limits
o ipr: New PCI Ids
o pci: PCI ids for new ipr adapters
o ipr: Support device reset to RAID disks
o ipr: Support new device queueing model
o ipr: New adapter error types
o ipr: Handle device autosense
o ipr: Module parm to disable RAID 0 auto create
o ipr: Runtime reset
o ipr: handle new adapter errors
o ipr: Provide reset_adapter retry method for offlined adapters
o ipr: Runtime debugging options
o ipr: Fix adapter microcode update DMA mapping leak
o ipr: Convert to use kzalloc
o ipr: Write caching state host attribute
o ipr: slave_alloc optimization
o ipr: Prevent upper layer driver binding
o ipr: Include all disks in supported list
o ipr: Error logging cleanup
o ipr: Handle unknown errors
o ipr: Generic adapter error cleaup
o ipr: Physical resource error logging macro
o ipr: Cleanup error structures
o ipr: Disk array rescanning fix

Christoph Hellwig:
o remove Scsi_Device typedef
o remove Scsi_Pointer typedef
o remove Scsi_Host_Template typedef
o aic79xx: remove scsi_assign_lock usage
o aic7xxx: remove scsi_assign_lock usage
o megaraid (legacy): remove scsi_assign_lock usage
o megaraid_mbox: remove scsi_assign_lock usage
o megaraid_sas: fix EH locking
o use a completion in scsi_send_eh_cmnd
o remove scsi_wait_req
o remove Scsi_Host.eh_active
o tidy up scsi_error_handler

edward goggin:
o fix usb storage oops

Jack Hammer:
o ips: remove "Version Matching"

James Bottomley:
o Merge by hand (whitespace conflicts in libata.h)
o sd: fix issue_flush
o Merge by hand (conflicts between pending drivers and kfree cleanups)
o raid class update
o Fix transport class oops

Mark Haverkamp:
o aacraid: Fix read capacity 16 return data

Mike Miller:
o cciss: scsi error handling

Ravi Anand:
o qla2xxx: Correct abort issue during loop-down state
o qla2xxx: Correct loop-in-transition issues

Stefan Richter:
o Documentation: typo in scsi/scsi_eh.txt

Willem Riede:
o ide-scsi fails to call idescsi_check_condition for things like
"Medium not present"

The diffstat is:

 Documentation/scsi/qlogicisp.txt          |   30 
 b/Documentation/cciss.txt                 |   29 
 b/Documentation/scsi/00-INDEX             |    2 
 b/Documentation/scsi/qlogicfas.txt        |    3 
 b/Documentation/scsi/scsi_eh.txt          |    8 
 b/Documentation/scsi/scsi_mid_low_api.txt |    4 
 b/drivers/block/acsi.c                    |    1 
 b/drivers/block/cciss.c                   |  188 ++
 b/drivers/block/cciss.h                   |   11 
 b/drivers/block/cciss_scsi.c              |   82 +
 b/drivers/scsi/53c7xx.c                   |    6 
 b/drivers/scsi/53c7xx.h                   |    2 
 b/drivers/scsi/Kconfig                    |   29 
 b/drivers/scsi/Makefile                   |    1 
 b/drivers/scsi/NCR53C9x.c                 |   10 
 b/drivers/scsi/NCR53C9x.h                 |    6 
 b/drivers/scsi/NCR53c406a.c               |    4 
 b/drivers/scsi/a2091.c                    |    4 
 b/drivers/scsi/a2091.h                    |    2 
 b/drivers/scsi/a3000.c                    |    4 
 b/drivers/scsi/a3000.h                    |    2 
 b/drivers/scsi/aacraid/aachba.c           |   23 
 b/drivers/scsi/aacraid/commsup.c          |    4 
 b/drivers/scsi/advansys.c                 |    6 
 b/drivers/scsi/advansys.h                 |    2 
 b/drivers/scsi/aha152x.c                  |    4 
 b/drivers/scsi/aha1542.c                  |    4 
 b/drivers/scsi/aha1542.h                  |    2 
 b/drivers/scsi/aha1740.c                  |    2 
 b/drivers/scsi/aic7xxx/aic79xx_osm.c      |   37 
 b/drivers/scsi/aic7xxx/aic7xxx_osm.c      |   39 
 b/drivers/scsi/aic7xxx_old.c              |   18 
 b/drivers/scsi/amiga7xx.c                 |    8 
 b/drivers/scsi/amiga7xx.h                 |    2 
 b/drivers/scsi/arm/acornscsi.c            |    6 
 b/drivers/scsi/arm/acornscsi.h            |    2 
 b/drivers/scsi/arm/arxescsi.c             |    8 
 b/drivers/scsi/arm/cumana_1.c             |    2 
 b/drivers/scsi/arm/cumana_2.c             |    8 
 b/drivers/scsi/arm/ecoscsi.c              |    2 
 b/drivers/scsi/arm/eesox.c                |    8 
 b/drivers/scsi/arm/fas216.c               |   10 
 b/drivers/scsi/arm/fas216.h               |    8 
 b/drivers/scsi/arm/oak.c                  |    2 
 b/drivers/scsi/arm/powertec.c             |    6 
 b/drivers/scsi/arm/scsi.h                 |    8 
 b/drivers/scsi/atari_NCR5380.c            |    2 
 b/drivers/scsi/atari_scsi.c               |    4 
 b/drivers/scsi/atari_scsi.h               |    2 
 b/drivers/scsi/blz1230.c                  |    4 
 b/drivers/scsi/blz2060.c                  |    4 
 b/drivers/scsi/bvme6000.c                 |    4 
 b/drivers/scsi/bvme6000.h                 |    2 
 b/drivers/scsi/cyberstorm.c               |    4 
 b/drivers/scsi/cyberstormII.c             |    4 
 b/drivers/scsi/dec_esp.c                  |    2 
 b/drivers/scsi/dpti.h                     |    2 
 b/drivers/scsi/dtc.c                      |    6 
 b/drivers/scsi/dtc.h                      |    2 
 b/drivers/scsi/fastlane.c                 |    4 
 b/drivers/scsi/fcal.c                     |    8 
 b/drivers/scsi/fcal.h                     |    4 
 b/drivers/scsi/fd_mcs.c                   |    4 
 b/drivers/scsi/g_NCR5380.c                |    6 
 b/drivers/scsi/g_NCR5380.h                |    2 
 b/drivers/scsi/gdth.c                     |   12 
 b/drivers/scsi/gdth.h                     |    4 
 b/drivers/scsi/gdth_proc.c                |   10 
 b/drivers/scsi/gvp11.c                    |    4 
 b/drivers/scsi/gvp11.h                    |    2 
 b/drivers/scsi/ibmmca.c                   |    8 
 b/drivers/scsi/ibmmca.h                   |    2 
 b/drivers/scsi/ide-scsi.c                 |    2 
 b/drivers/scsi/in2000.c                   |    4 
 b/drivers/scsi/in2000.h                   |    2 
 b/drivers/scsi/ipr.c                      |  904 ++++++++++---
 b/drivers/scsi/ipr.h                      |  243 ++-
 b/drivers/scsi/ips.c                      |  150 --
 b/drivers/scsi/ips.h                      |    4 
 b/drivers/scsi/jazz_esp.c                 |    4 
 b/drivers/scsi/mac_esp.c                  |    4 
 b/drivers/scsi/mac_scsi.c                 |    6 
 b/drivers/scsi/mca_53c9x.c                |    4 
 b/drivers/scsi/megaraid.c                 |   34 
 b/drivers/scsi/megaraid.h                 |   10 
 b/drivers/scsi/megaraid/mega_common.h     |    2 
 b/drivers/scsi/megaraid/megaraid_mbox.c   |   81 -
 b/drivers/scsi/megaraid/megaraid_sas.c    |    5 
 b/drivers/scsi/mvme147.c                  |    4 
 b/drivers/scsi/mvme147.h                  |    2 
 b/drivers/scsi/mvme16x.c                  |    4 
 b/drivers/scsi/mvme16x.h                  |    2 
 b/drivers/scsi/nsp32.c                    |    6 
 b/drivers/scsi/oktagon_esp.c              |    4 
 b/drivers/scsi/pas16.c                    |    6 
 b/drivers/scsi/pas16.h                    |    2 
 b/drivers/scsi/pci2000.h                  |    2 
 b/drivers/scsi/pcmcia/nsp_cs.c            |    8 
 b/drivers/scsi/pcmcia/nsp_cs.h            |    6 
 b/drivers/scsi/pcmcia/qlogic_stub.c       |    4 
 b/drivers/scsi/pluto.c                    |    8 
 b/drivers/scsi/pluto.h                    |    4 
 b/drivers/scsi/psi240i.c                  |    4 
 b/drivers/scsi/qla1280.c                  |    8 
 b/drivers/scsi/qla2xxx/qla_dbg.c          |    8 
 b/drivers/scsi/qla2xxx/qla_init.c         |   28 
 b/drivers/scsi/qla2xxx/qla_mbx.c          |   10 
 b/drivers/scsi/qla2xxx/qla_sup.c          |    5 
 b/drivers/scsi/qla2xxx/qla_version.h      |    4 
 b/drivers/scsi/qlogicfas.c                |    6 
 b/drivers/scsi/qlogicfc.c                 |    4 
 b/drivers/scsi/raid_class.c               |   96 +
 b/drivers/scsi/scsi_debug.c               |    2 
 b/drivers/scsi/scsi_error.c               |  157 --
 b/drivers/scsi/scsi_lib.c                 |   58 
 b/drivers/scsi/scsi_priv.h                |    1 
 b/drivers/scsi/scsi_scan.c                |   54 
 b/drivers/scsi/scsi_sysfs.c               |    9 
 b/drivers/scsi/scsi_typedefs.h            |    3 
 b/drivers/scsi/sd.c                       |   22 
 b/drivers/scsi/seagate.c                  |    4 
 b/drivers/scsi/seagate.h                  |    2 
 b/drivers/scsi/sgiwd93.c                  |    6 
 b/drivers/scsi/sun3_NCR5380.c             |    2 
 b/drivers/scsi/sun3_scsi.c                |    6 
 b/drivers/scsi/sun3_scsi.h                |    2 
 b/drivers/scsi/sun3_scsi_vme.c            |    6 
 b/drivers/scsi/sun3x_esp.c                |    4 
 b/drivers/scsi/sym53c416.c                |    4 
 b/drivers/scsi/sym53c416.h                |    2 
 b/drivers/scsi/t128.c                     |    6 
 b/drivers/scsi/t128.h                     |    2 
 b/drivers/scsi/u14-34f.c                  |    2 
 b/drivers/scsi/ultrastor.c                |    8 
 b/drivers/scsi/ultrastor.h                |    2 
 b/drivers/usb/image/microtek.c            |    2 
 b/include/linux/libata.h                  |    2 
 b/include/linux/pci_ids.h                 |    2 
 b/include/linux/raid_class.h              |   32 
 b/include/scsi/scsi_host.h                |    7 
 b/include/scsi/scsi_request.h             |    3 
 drivers/scsi/qlogicisp.c                  | 1934 ----------------------------
 drivers/scsi/qlogicisp_asm.c              | 2034 ------------------------------
 143 files changed, 1733 insertions(+), 5102 deletions(-)

James

#1 lore raw
Quoted 1 line · James Bottomley

o remove scsi_wait_req

This requires '[PATCH] kill libata scsi_wait_req usage (make libata compile in scsi-misc)' from Mike, because libata started to use this function in mainline about the same time it was removed in scsi-misc.

#2 lore raw
Quoted 6 lines · Christoph Hellwig
Quoted 1 line · James Bottomley

o remove scsi_wait_req

This requires '[PATCH] kill libata scsi_wait_req usage (make libata compile in scsi-misc)' from Mike, because libata started to use this function in mainline about the same time it was removed in scsi-misc.

My previous patch needed to included scsi_eh.h. Someone sent a patch in -mm to d othis. Here is my patch plus the scsi_eh.h include patch rolled into one if you need it.

rm scsi_wait_req() usage.

drivers/scsi/libata-scsi.c +11 -29
index bb30fcd..b101f8e 100644
@@ -38,6 +38,7 @@
 #include <linux/spinlock.h>
 #include <scsi/scsi.h>
 #include <scsi/scsi_host.h>
+#include <scsi/scsi_eh.h>
 #include <scsi/scsi_device.h>
 #include <scsi/scsi_request.h>
 #include <linux/libata.h>
@@ -147,7 +148,8 @@ int ata_cmd_ioctl(struct scsi_device *sc
 	u8 scsi_cmd[MAX_COMMAND_SIZE];
 	u8 args[4], *argbuf = NULL;
 	int argsize = 0;
-	struct scsi_request *sreq;
+	struct scsi_sense_hdr sshdr;
+	enum dma_data_direction data_dir;
 
 	if (NULL == (void *)arg)
 		return -EINVAL;
@@ -155,10 +157,6 @@ int ata_cmd_ioctl(struct scsi_device *sc
 	if (copy_from_user(args, arg, sizeof(args)))
 		return -EFAULT;
 
-	sreq = scsi_allocate_request(scsidev, GFP_KERNEL);
-	if (!sreq)
-		return -EINTR;
-
 	memset(scsi_cmd, 0, sizeof(scsi_cmd));
 
 	if (args[3]) {
@@ -172,11 +170,11 @@ int ata_cmd_ioctl(struct scsi_device *sc
 		scsi_cmd[1]  = (4 << 1); /* PIO Data-in */
 		scsi_cmd[2]  = 0x0e;     /* no off.line or cc, read from dev,
 		                            block count in sector count field */
-		sreq->sr_data_direction = DMA_FROM_DEVICE;
+		data_dir = DMA_FROM_DEVICE;
 	} else {
 		scsi_cmd[1]  = (3 << 1); /* Non-data */
 		/* scsi_cmd[2] is already 0 -- no off.line, cc, or data xfer */
-		sreq->sr_data_direction = DMA_NONE;
+		data_dir = DMA_NONE;
 	}
 
 	scsi_cmd[0] = ATA_16;
@@ -194,9 +192,8 @@ int ata_cmd_ioctl(struct scsi_device *sc
 
 	/* Good values for timeout and retries?  Values below
 	   from scsi_ioctl_send_command() for default case... */
-	scsi_wait_req(sreq, scsi_cmd, argbuf, argsize, (10*HZ), 5);
-
-	if (sreq->sr_result) {
+	if (scsi_execute_req(scsidev, scsi_cmd, data_dir, argbuf, argsize,
+			     &sshdr, (10*HZ), 5)) {
 		rc = -EIO;
 		goto error;
 	}
@@ -207,8 +204,6 @@ int ata_cmd_ioctl(struct scsi_device *sc
 	 && copy_to_user((void *)(arg + sizeof(args)), argbuf, argsize))
 		rc = -EFAULT;
 error:
-	scsi_release_request(sreq);
-
 	if (argbuf)
 		kfree(argbuf);
 
@@ -231,7 +226,7 @@ int ata_task_ioctl(struct scsi_device *s
 	int rc = 0;
 	u8 scsi_cmd[MAX_COMMAND_SIZE];
 	u8 args[7];
-	struct scsi_request *sreq;
+	struct scsi_sense_hdr sshdr;
 
 	if (NULL == (void *)arg)
 		return -EINVAL;
@@ -250,26 +245,13 @@ int ata_task_ioctl(struct scsi_device *s
 	scsi_cmd[12] = args[5];
 	scsi_cmd[14] = args[0];
 
-	sreq = scsi_allocate_request(scsidev, GFP_KERNEL);
-	if (!sreq) {
-		rc = -EINTR;
-		goto error;
-	}
-
-	sreq->sr_data_direction = DMA_NONE;
 	/* Good values for timeout and retries?  Values below
-	   from scsi_ioctl_send_command() for default case... */
-	scsi_wait_req(sreq, scsi_cmd, NULL, 0, (10*HZ), 5);
-
-	if (sreq->sr_result) {
+	   from scsi_ioctl_send_command() for default case... */	
+	if (scsi_execute_req(scsidev, scsi_cmd, DMA_NONE, NULL, 0, &sshdr,
+			     (10*HZ), 5))
 		rc = -EIO;
-		goto error;
-	}
 
 	/* Need code to retrieve data from check condition? */
-
-error:
-	scsi_release_request(sreq);
 	return rc;
 }
 
#3 lore raw
Quoted 12 lines · Mike Christie
Quoted 7 lines · Christoph Hellwig
Quoted 1 line · James Bottomley

o remove scsi_wait_req

This requires '[PATCH] kill libata scsi_wait_req usage (make libata compile in scsi-misc)' from Mike, because libata started to use this function in mainline about the same time it was removed in scsi-misc.

Quoted 6 lines

My previous patch needed to included scsi_eh.h. Someone sent a patch in -mm to d othis. Here is my patch plus the scsi_eh.h include patch rolled into one if you need it.

rm scsi_wait_req() usage.

oh yeah that patch was made agsint scsi-misc.

#4 lore raw
In reply to Christoph Hellwig
Quoted 7 lines · Christoph Hellwig
Quoted 1 line · James Bottomley

o remove scsi_wait_req

This requires '[PATCH] kill libata scsi_wait_req usage (make libata compile in scsi-misc)' from Mike, because libata started to use this function in mainline about the same time it was removed in scsi-misc.

Yeah, I get

	drivers/built-in.o(.text+0x12e68c): In function `.ata_cmd_ioctl':
	: undefined reference to `.scsi_wait_req'
	drivers/built-in.o(.text+0x12e85c): In function `.ata_task_ioctl':
	: undefined reference to `.scsi_wait_req'

right now. Can somebody forward that patch to me..

Linus

#5 lore raw
Quoted 12 lines · Linus Torvalds
Quoted 7 lines · Christoph Hellwig
Quoted 1 line · James Bottomley

o remove scsi_wait_req

This requires '[PATCH] kill libata scsi_wait_req usage (make libata compile in scsi-misc)' from Mike, because libata started to use this function in mainline about the same time it was removed in scsi-misc.

Quoted 8 lines

Yeah, I get

	drivers/built-in.o(.text+0x12e68c): In function `.ata_cmd_ioctl':
	: undefined reference to `.scsi_wait_req'
	drivers/built-in.o(.text+0x12e85c): In function `.ata_task_ioctl':
	: undefined reference to `.scsi_wait_req'

right now. Can somebody forward that patch to me..

Given that that's the primary path for users issuing hdparm/SMART commands, I'm still hoping someone will give this patch even a simple "it works" test before pushing... I requested this days ago, but haven't heard any results.

Jeff