Re: [libvirt] [PATCH 0/9] qemu: Add quorum support to libvirt
On 08.12.2014 19:31, 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. Therefore we have to treat the field virStorageSourcePtr backingStores as an array instead of a pointer. But doing that, most of the backingStore field would be an array contening only one element. So I've decide to allocate the array only if there is more than 1 backing store in a _virStorageSource. 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) 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: Treat backingStore as a pointer or an array virstoragefile: Add quorum in virstoragefile domain_conf: Read and Write quorum config qemu: Add quorum support in qemuBuildDriveDevStr virstoragefile: Add node-name src/conf/domain_conf.c| 193 ++ src/conf/storage_conf.c | 7 +- src/libvirt_private.syms | 3 + src/qemu/qemu_cgroup.c| 4 +- src/qemu/qemu_command.c | 114 src/qemu/qemu_domain.c| 3 +- src/qemu/qemu_driver.c| 20 ++-- src/security/security_dac.c | 2 +- src/security/security_selinux.c | 4 +- src/security/virt-aa-helper.c | 2 +- src/storage/storage_backend.c | 12 +-- src/storage/storage_backend_fs.c | 12 +-- src/storage/storage_backend_logical.c | 4 +- src/storage/storage_driver.c | 2 +- src/util/virstoragefile.c | 136 +--- src/util/virstoragefile.h | 12 +++ tests/virstoragetest.c| 18 ++-- 17 files changed, 445 insertions(+), 103 deletions(-) In general, looks good to me. However, I can't ACK it due to missing documentation. Moreover, you may want to rebase and resend - the code has changed and there are new places where access backingStore directly. Michal -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/9] qemu: Add quorum support to libvirt
On Wed, Dec 17, 2014 at 10:53 AM, Matthias Gatto wrote: > On Mon, Dec 8, 2014 at 7:31 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. >> >> Therefore we have to treat the field virStorageSourcePtr backingStores >> as an array instead of a pointer. >> But doing that, most of the backingStore field would be an array contening >> only one element. >> So I've decide to allocate the array only if there is more than 1 >> backing store in a _virStorageSource. >> 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) >> >> 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: Treat backingStore as a pointer or an array >> virstoragefile: Add quorum in virstoragefile >> domain_conf: Read and Write quorum config >> qemu: Add quorum support in qemuBuildDriveDevStr >> virstoragefile: Add node-name >> >> src/conf/domain_conf.c| 193 >> ++ >> src/conf/storage_conf.c | 7 +- >> src/libvirt_private.syms | 3 + >> src/qemu/qemu_cgroup.c| 4 +- >> src/qemu/qemu_command.c | 114 >> src/qemu/qemu_domain.c| 3 +- >> src/qemu/qemu_driver.c| 20 ++-- >> src/security/security_dac.c | 2 +- >> src/security/security_selinux.c | 4 +- >> src/security/virt-aa-helper.c | 2 +- >> src/storage/storage_backend.c | 12 +-- >> src/storage/storage_backend_fs.c | 12 +-- >> src/storage/storage_backend_logical.c | 4 +- >> src/storage/storage_driver.c | 2 +- >> src/util/virstoragefile.c | 136 +--- >> src/util/virstoragefile.h | 12 +++ >> tests/virstoragetest.c| 18 ++-- >> 17 files changed, 445 insertions(+), 103 deletions(-) >> >> -- >> 1.8.3.1 >> > > ping ping -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 0/9] qemu: Add quorum support to libvirt
On Mon, Dec 8, 2014 at 7:31 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. > > Therefore we have to treat the field virStorageSourcePtr backingStores > as an array instead of a pointer. > But doing that, most of the backingStore field would be an array contening > only one element. > So I've decide to allocate the array only if there is more than 1 > backing store in a _virStorageSource. > 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) > > 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: Treat backingStore as a pointer or an array > virstoragefile: Add quorum in virstoragefile > domain_conf: Read and Write quorum config > qemu: Add quorum support in qemuBuildDriveDevStr > virstoragefile: Add node-name > > src/conf/domain_conf.c| 193 > ++ > src/conf/storage_conf.c | 7 +- > src/libvirt_private.syms | 3 + > src/qemu/qemu_cgroup.c| 4 +- > src/qemu/qemu_command.c | 114 > src/qemu/qemu_domain.c| 3 +- > src/qemu/qemu_driver.c| 20 ++-- > src/security/security_dac.c | 2 +- > src/security/security_selinux.c | 4 +- > src/security/virt-aa-helper.c | 2 +- > src/storage/storage_backend.c | 12 +-- > src/storage/storage_backend_fs.c | 12 +-- > src/storage/storage_backend_logical.c | 4 +- > src/storage/storage_driver.c | 2 +- > src/util/virstoragefile.c | 136 +--- > src/util/virstoragefile.h | 12 +++ > tests/virstoragetest.c| 18 ++-- > 17 files changed, 445 insertions(+), 103 deletions(-) > > -- > 1.8.3.1 > ping -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH 0/9] qemu: Add quorum support to libvirt
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. Therefore we have to treat the field virStorageSourcePtr backingStores as an array instead of a pointer. But doing that, most of the backingStore field would be an array contening only one element. So I've decide to allocate the array only if there is more than 1 backing store in a _virStorageSource. 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) 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: Treat backingStore as a pointer or an array virstoragefile: Add quorum in virstoragefile domain_conf: Read and Write quorum config qemu: Add quorum support in qemuBuildDriveDevStr virstoragefile: Add node-name src/conf/domain_conf.c| 193 ++ src/conf/storage_conf.c | 7 +- src/libvirt_private.syms | 3 + src/qemu/qemu_cgroup.c| 4 +- src/qemu/qemu_command.c | 114 src/qemu/qemu_domain.c| 3 +- src/qemu/qemu_driver.c| 20 ++-- src/security/security_dac.c | 2 +- src/security/security_selinux.c | 4 +- src/security/virt-aa-helper.c | 2 +- src/storage/storage_backend.c | 12 +-- src/storage/storage_backend_fs.c | 12 +-- src/storage/storage_backend_logical.c | 4 +- src/storage/storage_driver.c | 2 +- src/util/virstoragefile.c | 136 +--- src/util/virstoragefile.h | 12 +++ tests/virstoragetest.c| 18 ++-- 17 files changed, 445 insertions(+), 103 deletions(-) -- 1.8.3.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list