[libvirt] [PATCH v4 0/9] qemu: Add quorum support to libvirt
Michal Privoznik
mprivozn at redhat.com
Wed Apr 1 09:14:53 UTC 2015
On 31.03.2015 14:39, Matthias Gatto wrote:
> On Tue, Mar 17, 2015 at 8:25 PM, Matthias Gatto
> <matthias.gatto at outscale.com> wrote:
>> The purpose of these patches is to introduce quorum for libvirt
>> I've try to follow this proposal:
>> http://www.redhat.com/archives/libvir-list/2014-May/msg00533.html
>>
>> This feature ask for 6 task:
>>
>> 1) Allow a _virStorageSource to contain more than one backing store.
>>
>> Because all the actual libvirt code use the backingStore field
>> as a pointer and we needs want to change that, I've decide to encapsulate
>> the backingStore field to simplifie the array manipulation.
>>
>> 2) Add the missing field a quorum need in _virStorageSource and
>> the VIR_STORAGE_TYPE_QUORUM and VIR_STORAGE_FILE_QUORUM in
>> their respectives enums.
>>
>> 3) Parse and format the xml
>> Because a quorum allows to have more than one backing store at the same level
>> we need to change virDomainDiskDefFormat and virDomainDiskDefParseXML
>> to call virDomainDiskBackingStoreFormat and virDomainDiskBackingStoreParse
>> in a loop.
>> virDomainDiskBackingStoreFormat and virDomainDiskBackingStoreParse can
>> call themself recursively in a loop because a quorum can contain another
>> quorum
>>
>> 4) Add nodename
>> We need to add nodename support in _virStorageSource because qemu
>> use them for their child.
>>
>> 5) Build qemu string
>> As for the xml, we have to call the function which create quorum recursively.
>> But this task have the problem explained here:
>> http://www.redhat.com/archives/libvir-list/2014-October/msg00529.html
>> The _virStorageSource missing some informations that can be passed to
>> a child, and therefore this version of quorum is incomplet.
>>
>> 6) Allow to hotplug/change a disk in a quorum
>> This part is not present in these patches because for this task
>> we have to use blockdev-add, and currently libvirt use
>> device_add for hotpluging that doesn't allow to hotplug quorum childs.
>>
>> There is 3 way to handle this problem:
>> 1) create a virDomainBlockDevAdd function in libvirt witch call
>> blockdev-add.
>>
>> 2) use blockdev-add instead of device_add in qemuMonitorJSONAddDevice
>>
>> 3) write a hack which uses blockdev-add when only attaching quorum
>> (but i'm pretty sure this solution is not the good one)
>>
>> V2:
>> -Rebase on master
>> -Add Documentation
>>
>> V3:
>> -Transforme the backingStore field in virStorageSource into
>> an array of pointer instead of a pointer
>> -Modify virStorageSourceSetBackingStore to allow it to expand
>> the backingStore size.
>>
>> V4:
>> -Rebase on master
>>
>> Matthias Gatto (9):
>> virstoragefile: Add virStorageSourceGetBackingStore
>> virstoragefile: Always use virStorageSourceGetBackingStore to get
>> backing store
>> virstoragefile: Add virStorageSourceSetBackingStore
>> virstoragefile: Always use virStorageSourceSetBackingStore to set
>> backing store
>> virstoragefile: change backingStore to backingStores.
>> virstoragefile: Add quorum in virstoragefile
>> domain_conf: Read and Write quorum config
>> qemu: Add quorum support in qemuBuildDriveDevStr
>> virstoragefile: Add node-name
>>
>> docs/formatdomain.html.in | 27 ++++-
>> docs/schemas/domaincommon.rng | 95 +++++++++++------
>> docs/schemas/storagecommon.rng | 1 +
>> docs/schemas/storagevol.rng | 1 +
>> src/conf/domain_conf.c | 195 ++++++++++++++++++++++++++--------
>> src/conf/storage_conf.c | 22 ++--
>> src/libvirt_private.syms | 2 +
>> src/qemu/qemu_cgroup.c | 4 +-
>> src/qemu/qemu_command.c | 114 ++++++++++++++++++++
>> src/qemu/qemu_domain.c | 2 +-
>> src/qemu/qemu_driver.c | 30 +++---
>> src/qemu/qemu_migration.c | 1 +
>> src/security/security_dac.c | 2 +-
>> src/security/security_selinux.c | 4 +-
>> src/security/virt-aa-helper.c | 2 +-
>> src/storage/storage_backend.c | 35 +++---
>> src/storage/storage_backend_fs.c | 37 ++++---
>> src/storage/storage_backend_gluster.c | 10 +-
>> src/storage/storage_backend_logical.c | 15 ++-
>> src/storage/storage_driver.c | 2 +-
>> src/util/virstoragefile.c | 116 +++++++++++++++++---
>> src/util/virstoragefile.h | 13 ++-
>> tests/virstoragetest.c | 18 ++--
>> 23 files changed, 573 insertions(+), 175 deletions(-)
>>
>> --
>> 1.8.3.1
>>
>
> ping
This slipped yet another release. Sorry for overlooking this. I'll
review this after the release.
Michal
More information about the libvir-list
mailing list