[libvirt] [PATCH v3 0/9] qemu: Add quorum support to libvirt

Peter Krempa pkrempa at redhat.com
Thu Feb 26 16:04:09 UTC 2015


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 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.
> >
> > 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150226/c96eca98/attachment-0001.sig>


More information about the libvir-list mailing list