On Thu, Feb 26, 2015 at 5:04 PM, Peter Krempa <pkrempa@xxxxxxxxxx> wrote: > On Mon, Feb 23, 2015 at 14:18:31 +0100, Matthias Gatto wrote: >> On Tue, Feb 10, 2015 at 4:43 PM, Matthias Gatto >> <matthias.gatto@xxxxxxxxxxxx> 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. >> > >> > 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 | 96 +++++++++++------ >> > docs/schemas/storagecommon.rng | 1 + >> > docs/schemas/storagevol.rng | 1 + >> > src/conf/domain_conf.c | 195 ++++++++++++++++++++++++++-------- >> > src/conf/storage_conf.c | 23 ++-- >> > 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 | 33 +++--- >> > src/storage/storage_backend_fs.c | 36 ++++--- >> > 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 | 12 ++- >> > tests/virstoragetest.c | 18 ++-- >> > 23 files changed, 573 insertions(+), 173 deletions(-) >> > >> > -- >> > 1.8.3.1 >> > >> >> ping > > Sorry for taking so long. I was pretty busy in the last time and need to > switch context to the storage part of libvirt again at first. > > I have this series on the radar and will try to review it once I get rid > of some stuff. > > Peter ok, Thank you -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list