|
@@ -676,6 +676,16 @@ static void hpsa_scsi_replace_entry(struct ctlr_info *h, int hostno,
|
|
|
BUG_ON(entry < 0 || entry >= HPSA_MAX_SCSI_DEVS_PER_HBA);
|
|
|
removed[*nremoved] = h->dev[entry];
|
|
|
(*nremoved)++;
|
|
|
+
|
|
|
+ /*
|
|
|
+ * New physical devices won't have target/lun assigned yet
|
|
|
+ * so we need to preserve the values in the slot we are replacing.
|
|
|
+ */
|
|
|
+ if (new_entry->target == -1) {
|
|
|
+ new_entry->target = h->dev[entry]->target;
|
|
|
+ new_entry->lun = h->dev[entry]->lun;
|
|
|
+ }
|
|
|
+
|
|
|
h->dev[entry] = new_entry;
|
|
|
added[*nadded] = new_entry;
|
|
|
(*nadded)++;
|