Skip to contentSkip to conversation

remove scsi_assign_lock

PATCH In review Christoph Hellwig 2 participants 3 messages Jan 13, 2006

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 remove scsi_assign_lock

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)

Documentation/scsi/scsi_mid_low_api.txt +5 -26
Index: scsi-misc-2.6/Documentation/scsi/scsi_mid_low_api.txt
===================================================================
@@ -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
 =========
drivers/scsi/hosts.c +2 -2
Index: scsi-misc-2.6/drivers/scsi/hosts.c
===================================================================
@@ -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);
include/scsi/scsi_host.h +0 -5
Index: scsi-misc-2.6/include/scsi/scsi_host.h
===================================================================
@@ -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;
#1 lore raw
Quoted 3 lines · Christoph Hellwig

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)

Although of course they'll now just assign to host_lock direectly. Presumably you intend to remove that in the near future, but didn't do that now because it would introduce too much code churn?

#2 lore raw
Quoted 8 lines · Matthew Wilcox
Quoted 3 lines · Christoph Hellwig

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)

Although of course they'll now just assign to host_lock direectly. Presumably you intend to remove that in the near future, but didn't do that now because it would introduce too much code churn?

yes.