We finally fixed all drivers to not require this hack, so let's get rid of it before people reintroduce uses (vendor drivers seem to be very eager to use it for no obvious reason) Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: scsi-misc-2.6/Documentation/scsi/scsi_mid_low_api.txt =================================================================== --- scsi-misc-2.6.orig/Documentation/scsi/scsi_mid_low_api.txt 2006-01-13 17:55:51.000000000 +0100 +++ scsi-misc-2.6/Documentation/scsi/scsi_mid_low_api.txt 2006-01-13 18:00:32.000000000 +0100 @@ -375,7 +375,6 @@ scsi_add_device - creates new scsi device (lu) instance scsi_add_host - perform sysfs registration and set up transport class scsi_adjust_queue_depth - change the queue depth on a SCSI device - scsi_assign_lock - replace default host_lock with given lock scsi_bios_ptable - return copy of block device's partition table scsi_block_requests - prevent further commands being queued to given host scsi_deactivate_tcq - turn off tag command queueing @@ -489,20 +488,6 @@ /** - * scsi_assign_lock - replace default host_lock with given lock - * @shost: a pointer to a scsi host instance - * @lock: pointer to lock to replace host_lock for this host - * - * Returns nothing - * - * Might block: no - * - * Defined in: include/scsi/scsi_host.h . - **/ -void scsi_assign_lock(struct Scsi_Host *shost, spinlock_t *lock) - - -/** * scsi_bios_ptable - return copy of block device's partition table * @dev: pointer to block device * @@ -1385,17 +1370,11 @@ Each struct Scsi_Host instance has a spin_lock called struct Scsi_Host::default_lock which is initialized in scsi_host_alloc() [found in hosts.c]. Within the same function the struct Scsi_Host::host_lock pointer -is initialized to point at default_lock with the scsi_assign_lock() function. -Thereafter lock and unlock operations performed by the mid level use the -struct Scsi_Host::host_lock pointer. - -LLDs can override the use of struct Scsi_Host::default_lock by -using scsi_assign_lock(). The earliest opportunity to do this would -be in the detect() function after it has invoked scsi_register(). It -could be replaced by a coarser grain lock (e.g. per driver) or a -lock of equal granularity (i.e. per host). Using finer grain locks -(e.g. per SCSI device) may be possible by juggling locks in -queuecommand(). +is initialized to point at default_lock. Thereafter lock and unlock +operations performed by the mid level use the struct Scsi_Host::host_lock +pointer. Previously drivers could override the host_lock pointer but +this is not allowed anymore. + Autosense ========= Index: scsi-misc-2.6/drivers/scsi/hosts.c =================================================================== --- scsi-misc-2.6.orig/drivers/scsi/hosts.c 2006-01-13 17:55:57.000000000 +0100 +++ scsi-misc-2.6/drivers/scsi/hosts.c 2006-01-13 18:00:32.000000000 +0100 @@ -311,8 +311,8 @@ return NULL; memset(shost, 0, sizeof(struct Scsi_Host) + privsize); - spin_lock_init(&shost->default_lock); - scsi_assign_lock(shost, &shost->default_lock); + shost->host_lock = &shost->default_lock; + spin_lock_init(shost->host_lock); shost->shost_state = SHOST_CREATED; INIT_LIST_HEAD(&shost->__devices); INIT_LIST_HEAD(&shost->__targets); Index: scsi-misc-2.6/include/scsi/scsi_host.h =================================================================== --- scsi-misc-2.6.orig/include/scsi/scsi_host.h 2006-01-13 17:56:02.000000000 +0100 +++ scsi-misc-2.6/include/scsi/scsi_host.h 2006-01-13 18:00:32.000000000 +0100 @@ -652,11 +652,6 @@ extern u64 scsi_calculate_bounce_limit(struct Scsi_Host *); -static inline void scsi_assign_lock(struct Scsi_Host *shost, spinlock_t *lock) -{ - shost->host_lock = lock; -} - static inline struct device *scsi_get_device(struct Scsi_Host *shost) { return shost->shost_gendev.parent; - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html