[Libvirt-cim] [PATCH V2] Add disk device='lun' support
Xu Wang
cngesaint at gmail.com
Wed Jun 11 03:26:56 UTC 2014
? 2014?06?09? 19:09, John Ferlan ??:
>
> On 05/27/2014 04:14 AM, Xu Wang wrote:
>> Besides 'disk', 'cdrom', 'floppy' and 'filesystem', there is one
>> more value 'lun' should be supported by value of device field in
>> the disk device. So this patch adds it into libvirt-cim. Now device
>> like <disk type='block' device='lun'> could be operated by class.
>>
>> Signed-off-by: Xu Wang <gesaint at linux.vnet.ibm.com>
>> ---
>> schema/ResourceAllocationSettingData.mof | 8 ++++----
>> src/Virt_RASD.c | 3 +++
>> src/Virt_RASD.h | 1 +
>> src/Virt_SettingsDefineCapabilities.c | 3 ++-
>> src/Virt_VirtualSystemManagementService.c | 5 ++++-
>> 5 files changed, 14 insertions(+), 6 deletions(-)
> A difference between this and your prior patch:
>
> --- a/src/Virt_SettingsDefineCapabilities.c
> +++ b/src/Virt_SettingsDefineCapabilities.c
> @@ -1071,15 +1071,14 @@ static CMPIStatus set_disk_props(int type,
> (CMPIValue *)"FV disk", CMPI_chars);
> }
>
> - if (emu_type == VIRT_DISK_TYPE_DISK) {
> + if (emu_type == VIRT_DISK_TYPE_DISK ||
> + emu_type == VIRT_DISK_TYPE_LUN) {
> CMSetProperty(inst, "VirtualQuantity",
> (CMPIValue *)&disk_size,
> CMPI_uint64);
> } else if (emu_type == VIRT_DISK_TYPE_CDROM) {
> dev = "hdc";
> } else if (emu_type == VIRT_DISK_TYPE_FLOPPY) {
> dev = "fda";
> - } else if (emu_type == VIRT_DISK_TYPE_LUN) {
> - dev = "sda";
> }
>
>
>
> leaves me with one question -
>
> Are you expecting the LUN type to have a dev of "hda" or "sda"? If
> "sda", I can fix the code and push... If "hda", I will just push...
>
> I actually assume you meant "sda"...
>
> John
>
Dear John,
<disk type='block' device='lun'>
<driver name='qemu' type='raw'/>
<source dev='/dev/sda'/>
<target dev='sda' bus='scsi'/>
<address type='drive' controller='0' bus='0' target='3' unit='0'/>
</disk>
From http://libvirt.org/formatdomain.html, I think 'sda' is a better
choice.
Thanks,
Xu Wang
>> diff --git a/schema/ResourceAllocationSettingData.mof b/schema/ResourceAllocationSettingData.mof
>> index 9c387f0..f78d423 100644
>> --- a/schema/ResourceAllocationSettingData.mof
>> +++ b/schema/ResourceAllocationSettingData.mof
>> @@ -10,8 +10,8 @@ class Xen_DiskResourceAllocationSettingData : Xen_ResourceAllocationSettingData
>> string VirtualDevice;
>>
>> [Description ("Device emulation type"),
>> - ValueMap {"0", "1", "2"},
>> - Values {"Disk", "CDROM", "floppy"}]
>> + ValueMap {"0", "1", "2", "4"},
>> + Values {"Disk", "CDROM", "floppy", "lun"}]
>> uint16 EmulatedType;
>>
>> [Description ("Bus type of the device")]
>> @@ -43,8 +43,8 @@ class KVM_DiskResourceAllocationSettingData : KVM_ResourceAllocationSettingData
>> string VirtualDevice;
>>
>> [Description ("Device emulation type"),
>> - ValueMap {"0", "1", "2", "3"},
>> - Values {"Disk", "CDROM", "floppy", "filesystem"}]
>> + ValueMap {"0", "1", "2", "3", "4"},
>> + Values {"Disk", "CDROM", "floppy", "filesystem", "lun"}]
>> uint16 EmulatedType;
>>
>> [Description ("Bus type of the device")]
>> diff --git a/src/Virt_RASD.c b/src/Virt_RASD.c
>> index 3c62c2d..761d053 100644
>> --- a/src/Virt_RASD.c
>> +++ b/src/Virt_RASD.c
>> @@ -444,6 +444,9 @@ static CMPIStatus set_disk_rasd_params(const CMPIBroker *broker,
>> else if ((dev->dev.disk.device != NULL) &&
>> STREQ(dev->dev.disk.device, "floppy"))
>> type = VIRT_DISK_TYPE_FLOPPY;
>> + else if ((dev->dev.disk.device != NULL) &&
>> + STREQ(dev->dev.disk.device, "lun"))
>> + type = VIRT_DISK_TYPE_LUN;
>> else
>> type = VIRT_DISK_TYPE_DISK;
>>
>> diff --git a/src/Virt_RASD.h b/src/Virt_RASD.h
>> index 400143f..49d7195 100644
>> --- a/src/Virt_RASD.h
>> +++ b/src/Virt_RASD.h
>> @@ -27,6 +27,7 @@
>> #define VIRT_DISK_TYPE_CDROM 1
>> #define VIRT_DISK_TYPE_FLOPPY 2
>> #define VIRT_DISK_TYPE_FS 3
>> +#define VIRT_DISK_TYPE_LUN 4
>>
>> char *rasd_to_xml(CMPIInstance *rasd);
>>
>> diff --git a/src/Virt_SettingsDefineCapabilities.c b/src/Virt_SettingsDefineCapabilities.c
>> index 756e46b..49986ff 100644
>> --- a/src/Virt_SettingsDefineCapabilities.c
>> +++ b/src/Virt_SettingsDefineCapabilities.c
>> @@ -1071,7 +1071,8 @@ static CMPIStatus set_disk_props(int type,
>> (CMPIValue *)"FV disk", CMPI_chars);
>> }
>>
>> - if (emu_type == VIRT_DISK_TYPE_DISK) {
>> + if (emu_type == VIRT_DISK_TYPE_DISK ||
>> + emu_type == VIRT_DISK_TYPE_LUN) {
>> CMSetProperty(inst, "VirtualQuantity",
>> (CMPIValue *)&disk_size, CMPI_uint64);
>> } else if (emu_type == VIRT_DISK_TYPE_CDROM) {
>> diff --git a/src/Virt_VirtualSystemManagementService.c b/src/Virt_VirtualSystemManagementService.c
>> index f673c38..c640360 100644
>> --- a/src/Virt_VirtualSystemManagementService.c
>> +++ b/src/Virt_VirtualSystemManagementService.c
>> @@ -1114,7 +1114,8 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst,
>> type = VIRT_DISK_TYPE_DISK;
>>
>> if ((type == VIRT_DISK_TYPE_DISK) ||
>> - (type == VIRT_DISK_TYPE_FS)){
>> + (type == VIRT_DISK_TYPE_FS) ||
>> + (type == VIRT_DISK_TYPE_LUN)){
>> if (dev->dev.disk.disk_type == DISK_UNKNOWN) {
>> /* on success or fail caller should try free it */
>> rc = asprintf(p_error, "Device %s, Address %s, "
>> @@ -1149,6 +1150,8 @@ static const char *disk_rasd_to_vdev(CMPIInstance *inst,
>> dev->dev.disk.device = strdup("floppy");
>> else if (type == VIRT_DISK_TYPE_FS)
>> dev->dev.disk.device = strdup("filesystem");
>> + else if (type == VIRT_DISK_TYPE_LUN)
>> + dev->dev.disk.device = strdup("lun");
>> else
>> return "Invalid value for EmulatedType";
>>
>>
> _______________________________________________
> Libvirt-cim mailing list
> Libvirt-cim at redhat.com
> https://www.redhat.com/mailman/listinfo/libvirt-cim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-cim/attachments/20140611/74d3ec31/attachment.htm>
More information about the Libvirt-cim
mailing list