[Libvirt-cim] RFC : Introducing new CIM_RES_TYPE for 9pfs support on QEMU/KVM environment

Deepak Shetty deepakcs at linux.vnet.ibm.com
Fri Dec 2 13:13:13 UTC 2011


On 12/02/2011 01:23 PM, Deepak Shetty wrote:
> On 12/02/2011 04:32 AM, Sharad Mishra wrote:
[...]
 >> <filesystem type='mount'>
 >> <driver type='handle'/>
 >> <source dir='/tmp/virt1'/>
 >> <target dir='test-lib'/>
 >> <alias name='fs0'/>
 >> <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
 >> function='0x0'/>
 >> </filesystem>

>> What in the above libvirt XML makes it specific to 9pfs?  I am 
>> looking for
>> special 'tags'  or 'properties'.
>>
>> -Sharad Mishra
> type='mount' makes it specific to 9pfs. So its the type attribute of 
> the filesystem tag.
> I confirmed the same by looking into libvirt code also.
>
[...]
>>> The<filesystem>  node comes directly under the<domain>  node.
>>>
>>> My approach for introducing 9pfs support in libvirt-cim is ...
>>>
>>> 1) Add a new CIM res type, eg; CIM_RES_TYPE_9PFS, is this ok ?
>>>
>>> 2) Add appropriate handlers for the above new resource type
>>>
>>> 3) Add new members in struct domain for representing this new device
>> type.
>>> 4) Add appropriate xml parsing generation tags for the new resource 
>>> type.
>>>
>>> 5) I probably need to add something like
>>> KVM_9PFSResourceAllocationSettingData -- I am not very clear on this 
>>> yet.
>>> Need some help on how to do this ?
>>>

I found some more enlightment today looking at the code, so here are my 
newer thoughts...

1) It looks like the <filesystem> libvirt xml node ( that comes directly 
under <devices>) is supported in a psuedo fashion, under 
CIM_RES_TYPE_DISK, is this correct ?
It does res_type = ...DISK and dev_type = ..DISK_FS.

2) The cim code is structured in such a way that for each device type 
that comes under <devices> there is a virt-device and 
<device_type>_device (eg: disk_device, net_device) structures and they 
are described by the respective RASDs. In following this tradition the 
there should have been virt_device and fs_device structures to 
correspond to the <filesystem> device type, eventually getting embedded 
under 'struct domain' but I don't see it, why is this so ? Why is 
<filesystem> treated differently  in cim code ?

3) Assuming "yes" to #1 above, i need to extend the EmulatedType in 
KVM_DiskResourceAllocationSettingData to support "filesystem" as a 
value, set the disk_type = DISK_FS in disk_rasd_to_vdev and then it 
should probably work, as the disk_xml and disk_fs_xml code is already 
present to create the <filesystem> xml node.

4) I probably will re-use some of the members of 
KVM_DiskResourceAllocationSettingData from a 9pfs perspective, source 
and target will remain same as before, DriverCache, Address, may not be 
relevant for 9pfs. I might need to add few more stuff in DiskRASD as 
needed to support more sub-elements and attributes in for the 
<filesystem> in 9pfs case.

Let me know if the above approach/understanding is correct. Appreciate 
your inputs.

thanx,
deepak




More information about the Libvirt-cim mailing list