On Thu, Apr 23, 2015 at 2:41 PM, Matthias Gatto
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
>
> V5:
> -Rebase on master
> -patch 1-4/9: use patchs from John Ferlan
> -patch 4/9: check return of virStorageSourceSetBackingStore
> -patch 5/9: report type of error on virStorageSourceSetBackingStore
>
> 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 | 30 +-
> docs/schemas/domaincommon.rng | 26 -
> 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| 39 ---
> src/qemu/qemu_migration.c | 1 +
> src/qemu/qemu_monitor_json.c | 4 +-
> src/security/security_dac.c | 2 +-
> src/security/security_selinux.c | 4 +-
> src/security/virt-aa-helper.c | 2 +-
> src/storage/storage_backend.c | 22 ++--
> src/storage/storage_backend_fs.c | 38 ---
> src/storage/storage_backend_gluster.c | 11 +-
> src/storage/storage_backend_logical.c | 15 ++-
> src/storage/storage_driver.c | 3 +-
> src/util/virstoragefile.c | 122 ++---
> src/util/virstoragefile.h | 13 ++-
> tests/virstoragetest.c| 18 ++--
> 24 files changed, 551 insertions(+), 141 deletions(-)
>
> --
> 2.3.5
>
ping
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list