[SCSI] libsas: convert ha->state to flags
Dan Williams [Tue, 20 Dec 2011 01:02:25 +0000 (17:02 -0800)]
In preparation for adding new states (SAS_HA_DRAINING, SAS_HA_FROZEN),
convert ha->state into a set of flags.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

drivers/scsi/libsas/sas_init.c
drivers/scsi/libsas/sas_internal.h
include/scsi/libsas.h

index a435876..da244e6 100644 (file)
@@ -112,7 +112,7 @@ int sas_register_ha(struct sas_ha_struct *sas_ha)
        else if (sas_ha->lldd_queue_size == -1)
                sas_ha->lldd_queue_size = 128; /* Sanity */
 
-       sas_ha->state = SAS_HA_REGISTERED;
+       set_bit(SAS_HA_REGISTERED, &sas_ha->state);
        spin_lock_init(&sas_ha->state_lock);
 
        error = sas_register_phys(sas_ha);
@@ -160,7 +160,7 @@ int sas_unregister_ha(struct sas_ha_struct *sas_ha)
        /* Set the state to unregistered to avoid further
         * events to be queued */
        spin_lock_irqsave(&sas_ha->state_lock, flags);
-       sas_ha->state = SAS_HA_UNREGISTERED;
+       clear_bit(SAS_HA_REGISTERED, &sas_ha->state);
        spin_unlock_irqrestore(&sas_ha->state_lock, flags);
        scsi_flush_work(sas_ha->core.shost);
 
index 7fe4ede..1fd84b3 100644 (file)
@@ -100,7 +100,7 @@ static inline void sas_queue_event(int event, unsigned long *pending,
                unsigned long flags;
 
                spin_lock_irqsave(&sas_ha->state_lock, flags);
-               if (sas_ha->state != SAS_HA_UNREGISTERED)
+               if (test_bit(SAS_HA_REGISTERED, &sas_ha->state))
                        scsi_queue_work(sas_ha->core.shost, work);
                spin_unlock_irqrestore(&sas_ha->state_lock, flags);
        }
index de63a66..8e402d5 100644 (file)
@@ -330,7 +330,6 @@ struct sas_ha_event {
 
 enum sas_ha_state {
        SAS_HA_REGISTERED,
-       SAS_HA_UNREGISTERED
 };
 
 struct sas_ha_struct {
@@ -338,7 +337,7 @@ struct sas_ha_struct {
        struct sas_ha_event ha_events[HA_NUM_EVENTS];
        unsigned long    pending;
 
-       enum sas_ha_state state;
+       unsigned long     state;
        spinlock_t        state_lock;
 
        struct scsi_core core;