[libvirt] [PATCH 00/12] introduce locking into every driver

Daniel P. Berrangé posted 12 patches 13 weeks ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190710154741.17065-1-berrange@redhat.com
src/bhyve/bhyve_driver.c                |  9 +++++
src/bhyve/bhyve_utils.h                 |  3 ++
src/conf/virnodedeviceobj.h             |  5 +++
src/conf/virnwfilterobj.h               |  4 +++
src/conf/virstorageobj.h                |  3 ++
src/interface/interface_backend_netcf.c | 45 +++++++++++++++++++++++--
src/interface/interface_backend_udev.c  | 44 +++++++++++++++++++++++-
src/libxl/libxl_conf.h                  |  3 ++
src/libxl/libxl_driver.c                | 37 ++++++++------------
src/lxc/lxc_conf.h                      |  3 ++
src/lxc/lxc_driver.c                    |  9 +++++
src/network/bridge_driver.c             | 10 ++++++
src/network/bridge_driver_platform.h    |  3 ++
src/node_device/node_device_hal.c       | 31 +++++++++++++++++
src/node_device/node_device_udev.c      | 32 ++++++++++++++++++
src/nwfilter/nwfilter_driver.c          | 19 +++++++++++
src/qemu/qemu_conf.h                    |  3 ++
src/qemu/qemu_driver.c                  |  9 +++++
src/secret/secret_driver.c              | 44 +++++++++++++++++++-----
src/storage/storage_driver.c            | 11 ++++++
src/vz/vz_driver.c                      | 40 +++++++++++++++++++---
21 files changed, 327 insertions(+), 40 deletions(-)

[libvirt] [PATCH 00/12] introduce locking into every driver

Posted by Daniel P. Berrangé 13 weeks ago
As part of the proposal to introduce an embedded driver feature, we
decided we ought to have each driver acquire a lock against the virtual
root it is configured to use. This will prevent two apps from running an
embedded driver with the same root.

  https://www.redhat.com/archives/libvir-list/2019-May/msg00467.html

It turns out that this will also be useful for the per-driver split
daemons work I am working on. In that case libvirtd will exist as a
monolithic daemon running all drivers, and we'll also have per-driver
daemons like virtqemud, virtnetworkd, etc. It is only valid to run in
one setup on the host. ie you must choose libvirtd, or choose per-driver
daemons, never both.

The per-driver locking will provide very useful protection against
mistakes in this respect.

Since the locking is functionally independant of both patch series, I'm
sending it now.

Daniel P. Berrangé (12):
  qemu: acquire a pidfile in the driver root directory
  secrets: acquire a pidfile in the driver root directory
  network: acquire a pidfile in the driver root directory
  storage: acquire a pidfile in the driver root directory
  nodedev: acquire a pidfile in the driver root directory
  interface: acquire a pidfile in the driver root directory
  nwfilter: acquire a pidfile in the driver root directory
  libxl: remove obsolete check for xend during driver startup
  libxl: acquire a pidfile in the driver root directory
  lxc: acquire a pidfile in the driver root directory
  vz: acquire a pidfile in the driver root directory
  bhyve: acquire a pidfile in the driver root directory

 src/bhyve/bhyve_driver.c                |  9 +++++
 src/bhyve/bhyve_utils.h                 |  3 ++
 src/conf/virnodedeviceobj.h             |  5 +++
 src/conf/virnwfilterobj.h               |  4 +++
 src/conf/virstorageobj.h                |  3 ++
 src/interface/interface_backend_netcf.c | 45 +++++++++++++++++++++++--
 src/interface/interface_backend_udev.c  | 44 +++++++++++++++++++++++-
 src/libxl/libxl_conf.h                  |  3 ++
 src/libxl/libxl_driver.c                | 37 ++++++++------------
 src/lxc/lxc_conf.h                      |  3 ++
 src/lxc/lxc_driver.c                    |  9 +++++
 src/network/bridge_driver.c             | 10 ++++++
 src/network/bridge_driver_platform.h    |  3 ++
 src/node_device/node_device_hal.c       | 31 +++++++++++++++++
 src/node_device/node_device_udev.c      | 32 ++++++++++++++++++
 src/nwfilter/nwfilter_driver.c          | 19 +++++++++++
 src/qemu/qemu_conf.h                    |  3 ++
 src/qemu/qemu_driver.c                  |  9 +++++
 src/secret/secret_driver.c              | 44 +++++++++++++++++++-----
 src/storage/storage_driver.c            | 11 ++++++
 src/vz/vz_driver.c                      | 40 +++++++++++++++++++---
 21 files changed, 327 insertions(+), 40 deletions(-)

-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Re: [libvirt] [PATCH 00/12] introduce locking into every driver

Posted by Michal Privoznik 13 weeks ago
On 7/10/19 5:47 PM, Daniel P. Berrangé wrote:
> As part of the proposal to introduce an embedded driver feature, we
> decided we ought to have each driver acquire a lock against the virtual
> root it is configured to use. This will prevent two apps from running an
> embedded driver with the same root.
> 
>    https://www.redhat.com/archives/libvir-list/2019-May/msg00467.html
> 
> It turns out that this will also be useful for the per-driver split
> daemons work I am working on. In that case libvirtd will exist as a
> monolithic daemon running all drivers, and we'll also have per-driver
> daemons like virtqemud, virtnetworkd, etc. It is only valid to run in
> one setup on the host. ie you must choose libvirtd, or choose per-driver
> daemons, never both.
> 
> The per-driver locking will provide very useful protection against
> mistakes in this respect.
> 
> Since the locking is functionally independant of both patch series, I'm
> sending it now.
> 
> Daniel P. Berrangé (12):
>    qemu: acquire a pidfile in the driver root directory
>    secrets: acquire a pidfile in the driver root directory
>    network: acquire a pidfile in the driver root directory
>    storage: acquire a pidfile in the driver root directory
>    nodedev: acquire a pidfile in the driver root directory
>    interface: acquire a pidfile in the driver root directory
>    nwfilter: acquire a pidfile in the driver root directory
>    libxl: remove obsolete check for xend during driver startup
>    libxl: acquire a pidfile in the driver root directory
>    lxc: acquire a pidfile in the driver root directory
>    vz: acquire a pidfile in the driver root directory
>    bhyve: acquire a pidfile in the driver root directory
> 
>   src/bhyve/bhyve_driver.c                |  9 +++++
>   src/bhyve/bhyve_utils.h                 |  3 ++
>   src/conf/virnodedeviceobj.h             |  5 +++
>   src/conf/virnwfilterobj.h               |  4 +++
>   src/conf/virstorageobj.h                |  3 ++
>   src/interface/interface_backend_netcf.c | 45 +++++++++++++++++++++++--
>   src/interface/interface_backend_udev.c  | 44 +++++++++++++++++++++++-
>   src/libxl/libxl_conf.h                  |  3 ++
>   src/libxl/libxl_driver.c                | 37 ++++++++------------
>   src/lxc/lxc_conf.h                      |  3 ++
>   src/lxc/lxc_driver.c                    |  9 +++++
>   src/network/bridge_driver.c             | 10 ++++++
>   src/network/bridge_driver_platform.h    |  3 ++
>   src/node_device/node_device_hal.c       | 31 +++++++++++++++++
>   src/node_device/node_device_udev.c      | 32 ++++++++++++++++++
>   src/nwfilter/nwfilter_driver.c          | 19 +++++++++++
>   src/qemu/qemu_conf.h                    |  3 ++
>   src/qemu/qemu_driver.c                  |  9 +++++
>   src/secret/secret_driver.c              | 44 +++++++++++++++++++-----
>   src/storage/storage_driver.c            | 11 ++++++
>   src/vz/vz_driver.c                      | 40 +++++++++++++++++++---
>   21 files changed, 327 insertions(+), 40 deletions(-)
> 

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list