mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
Improve SCSI volume name generation
The SCSI volumes currently get a name like '17:0:0:1' based on $host:$bus:$target:$lun. The names are intended to be unique per pool and stable across pool restarts. The inclusion of the $host component breaks this, because the $host number for iSCSI pools is dynamically allocated by the kernel at time of login. This changes the name to be 'unit:0:0:1', ie removes the leading host component. The 'unit:' prefix is just to ensure the volume name doesn't start with a number and make it clearer when seen out of context. * src/storage/storage_backend_scsi.c: Improve volume name field value stability and uniqueness
This commit is contained in:
parent
e4c97a10db
commit
174d737d95
@ -162,7 +162,7 @@ cleanup:
|
||||
|
||||
static int
|
||||
virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
|
||||
uint32_t host,
|
||||
uint32_t host ATTRIBUTE_UNUSED,
|
||||
uint32_t bus,
|
||||
uint32_t target,
|
||||
uint32_t lun,
|
||||
@ -180,7 +180,12 @@ virStorageBackendSCSINewLun(virStoragePoolObjPtr pool,
|
||||
|
||||
vol->type = VIR_STORAGE_VOL_BLOCK;
|
||||
|
||||
if (virAsprintf(&(vol->name), "%u.%u.%u.%u", host, bus, target, lun) < 0) {
|
||||
/* 'host' is dynamically allocated by the kernel, first come,
|
||||
* first served, per HBA. As such it isn't suitable for use
|
||||
* in the volume name. We only need uniqueness per-pool, so
|
||||
* just leave 'host' out
|
||||
*/
|
||||
if (virAsprintf(&(vol->name), "unit:%u:%u:%u", bus, target, lun) < 0) {
|
||||
virReportOOMError();
|
||||
retval = -1;
|
||||
goto free_vol;
|
||||
|
Loading…
x
Reference in New Issue
Block a user