]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
hpsa: print accurate SSD Smart Path Enabled status
authorRobert Elliott <elliott@hp.com>
Fri, 6 Nov 2015 13:47:41 +0000 (05:47 -0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 10 Mar 2016 19:46:35 +0000 (11:46 -0800)
offload_enabled changes are deferred until after the
added/updated prints occur, so the values are incorrect.

defer printing SSD Smart Path Enabled status information until the
information is correct

Reviewed-by: Scott Teel <scott.teel@pmcs.com>
Reviewed-by: Kevin Barnett <kevin.barnett@pmcs.com>
Signed-off-by: Robert Elliott <elliott@hp.com>
Signed-off-by: Don Brace <don.brace@pmcs.com>
Orabug: 22075051
Acked-by: Chuck Anderson <chuck.anderson@oracle.com>
drivers/scsi/hpsa.c

index 350a76ace5bec47de61506501d3ca6ef419558f2..1aa36e6773f9e043bc8095a89b124776b2b066d9 100644 (file)
@@ -1060,12 +1060,12 @@ lun_assigned:
 
        h->dev[n] = device;
        h->ndevices++;
-       device->offload_to_be_enabled = device->offload_enabled;
-       device->offload_enabled = 0;
        added[*nadded] = device;
        (*nadded)++;
        hpsa_show_dev_msg(KERN_INFO, h, device,
                device->expose_state & HPSA_SCSI_ADD ? "added" : "masked");
+       device->offload_to_be_enabled = device->offload_enabled;
+       device->offload_enabled = 0;
        return 0;
 }
 
@@ -1073,6 +1073,7 @@ lun_assigned:
 static void hpsa_scsi_update_entry(struct ctlr_info *h, int hostno,
        int entry, struct hpsa_scsi_dev_t *new_entry)
 {
+       int offload_enabled;
        /* assumes h->devlock is held */
        BUG_ON(entry < 0 || entry >= HPSA_MAX_DEVICES);
 
@@ -1105,7 +1106,10 @@ static void hpsa_scsi_update_entry(struct ctlr_info *h, int hostno,
        if (!new_entry->offload_enabled)
                h->dev[entry]->offload_enabled = 0;
 
+       offload_enabled = h->dev[entry]->offload_enabled;
+       h->dev[entry]->offload_enabled = h->dev[entry]->offload_to_be_enabled;
        hpsa_show_dev_msg(KERN_INFO, h, h->dev[entry], "updated");
+       h->dev[entry]->offload_enabled = offload_enabled;
 }
 
 /* Replace an entry from h->dev[] array. */
@@ -1128,12 +1132,12 @@ static void hpsa_scsi_replace_entry(struct ctlr_info *h, int hostno,
                new_entry->lun = h->dev[entry]->lun;
        }
 
-       new_entry->offload_to_be_enabled = new_entry->offload_enabled;
-       new_entry->offload_enabled = 0;
        h->dev[entry] = new_entry;
        added[*nadded] = new_entry;
        (*nadded)++;
        hpsa_show_dev_msg(KERN_INFO, h, new_entry, "replaced");
+       new_entry->offload_to_be_enabled = new_entry->offload_enabled;
+       new_entry->offload_enabled = 0;
 }
 
 /* Remove an entry from h->dev[] array. */