mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-08 22:15:21 +00:00
storage: Fetch a unique key for vHBA/NPIV LUNs
https://bugzilla.redhat.com/show_bug.cgi?id=1657468
Commit be1bb6c95
changed the way volumes were stored from a forward
linked list to a hash table. In doing so, it required that each vol
object would have 3 unique values as keys into tables - key, name,
and path. Due to how vHBA/NPIV LUNs are created/used this resulted
in a failure to utilize all the LUN's found during processing.
During virStorageBackendSCSINewLun processing fetch the key (or
serial value) for NPIV LUN's using virStorageFileGetNPIVKey which
will formulate a more unique key based on the serial value and
the port for the LUN.
Signed-off-by: John Ferlan <jferlan@redhat.com>
ACKed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
5f9e211c93
commit
850cfd75be
@ -3776,12 +3776,16 @@ virStorageBackendRefreshLocal(virStoragePoolObjPtr pool)
|
||||
|
||||
|
||||
static char *
|
||||
virStorageBackendSCSISerial(const char *dev)
|
||||
virStorageBackendSCSISerial(const char *dev,
|
||||
bool isNPIV)
|
||||
{
|
||||
int rc;
|
||||
char *serial = NULL;
|
||||
|
||||
rc = virStorageFileGetSCSIKey(dev, &serial, true);
|
||||
if (isNPIV)
|
||||
rc = virStorageFileGetNPIVKey(dev, &serial);
|
||||
else
|
||||
rc = virStorageFileGetSCSIKey(dev, &serial, true);
|
||||
if (rc == 0 && serial)
|
||||
return serial;
|
||||
|
||||
@ -3878,7 +3882,10 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
|
||||
VIR_STORAGE_VOL_READ_NOERROR)) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(vol->key = virStorageBackendSCSISerial(vol->target.path)))
|
||||
vol->key = virStorageBackendSCSISerial(vol->target.path,
|
||||
(def->source.adapter.type ==
|
||||
VIR_STORAGE_ADAPTER_TYPE_FC_HOST));
|
||||
if (!vol->key)
|
||||
goto cleanup;
|
||||
|
||||
def->capacity += vol->target.capacity;
|
||||
|
Loading…
Reference in New Issue
Block a user