
On 05/16/2014 04:33 AM, Benoît Canet wrote:
I want to make use of the new backingStore xml element to implement quorum.
Proposed Quorum libvirt format: -------------------------------
<disk type='quorum' device='disk'> <driver name='qemu' type='quorum'/> <threshold value=2/>
Rather than making <threshold> a sub-element, I'd stick it as an attribute, as in: <disk type='quorum' threshold='2' device='disk'>
* Add VIR_STORAGE_TYPE_QUORUM
* In src/util/virstoragefile.h change _virStorageSource to contain a virStorageSourcePtrPtr backingStores.
PtrPtr doesn't make sense. Just keep it as a single pointer, but add an nBackingStores field and treat it as an array (all existing callers are now an array of 1, quorum is a new array of N).
I think doing it at this level allow to keep a 1-1 mapping with the qemu BlockDriverState hiearchy
* Add a int quorum_threshold field to the same structure
size_t, not int
* Add support for parsing treshold in virDomainDiskDefParseXML
* Change virDomainDiskBackingStoreParse to virDomainDiskBackingStoresParse to parse all the backingStore at once an use realloc to grow the backingStores field.
* Modify virDomainDiskDefFormat to call virDomainDiskBackingStoreFormat in a loop for saving
* hook into qemuBuildDriveStr around line 3442 to create the quorum parameters
Do you feel that I am missing something ?
We'll probably find more as you go, but this sounds like a reasonable start -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org