[libvirt] [PATCH v3 0/9] qemu: Add quorum support to libvirt
Matthias Gatto
matthias.gatto at outscale.com
Tue Mar 3 09:45:35 UTC 2015
On Thu, Feb 26, 2015 at 5:04 PM, Peter Krempa <pkrempa at redhat.com> 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 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
ok,
Thank you
More information about the libvir-list
mailing list