[libvirt] [PATCH v4 0/5] Allow to make disk optional on migration

Michal Privoznik mprivozn at redhat.com
Thu Oct 20 14:52:47 UTC 2011


This is a 4rd version of patches [1].
Diff to v3 includes Daniel's review and some other improvements.

The aim of these patches is to mark CDROM and floppy optional,
thus they might get dropped during migration, domain startup,
restore, etc. The granularity is set on disk level, so user
can decide which cd-roms are important and which not.

There are 3 levels of optionality:
    - mandatory - fail if missing for any reason (the default)
    - requisite - fail if missing on boot up, drop if missing on
                  migrate/restore/revert
    - optional  - drop if missing at any start attempt.

To assign a disk one of these, just append 'startupPolicy' attribute
to its <source>.

If a domain is then eventually started (migrated, restored, whatever),
we check for source path being accessible (currently only qemu driver
is supported) from hypervisor's POV. This is done by virFileAccessibleAs()
function. Currently, only uid+gid are considered. Ideally, this
should be extended to SElinux labeling and cgroups.

1: https://www.redhat.com/archives/libvir-list/2011-October/msg00896.html


Michal Privoznik (5):
  conf: Introduce optional startupPolicy attribute for cdrom and floppy
  util: Create virFileAccessibleAs function
  qemu: Move device alias assigning before command line construction
  qemu: implement startupPolicy
  on_missing: Emit event on disk source dropping

 daemon/remote.c                                    |   39 ++++++++++
 docs/formatdomain.html.in                          |   26 ++++++-
 docs/schemas/domaincommon.rng                      |   22 +++++-
 examples/domain-events/events-c/event-test.c       |   28 +++++++-
 examples/domain-events/events-python/event-test.py |    4 +
 include/libvirt/libvirt.h.in                       |   29 +++++++
 python/libvirt-override-virConnect.py              |    9 ++
 python/libvirt-override.c                          |   52 +++++++++++++
 src/conf/domain_conf.c                             |   43 ++++++++++-
 src/conf/domain_conf.h                             |   11 +++
 src/conf/domain_event.c                            |   61 +++++++++++++++
 src/conf/domain_event.h                            |    9 ++
 src/libvirt_private.syms                           |    4 +
 src/qemu/qemu_command.c                            |    5 +-
 src/qemu/qemu_command.h                            |    1 +
 src/qemu/qemu_domain.c                             |   73 ++++++++++++++++++
 src/qemu/qemu_domain.h                             |    4 +
 src/qemu/qemu_driver.c                             |    3 +
 src/qemu/qemu_process.c                            |    7 ++
 src/remote/remote_driver.c                         |   35 +++++++++
 src/remote/remote_protocol.x                       |   10 ++-
 src/remote_protocol-structs                        |    6 ++
 src/util/util.c                                    |   78 ++++++++++++++++++++
 src/util/util.h                                    |    3 +
 tests/qemuxml2argvtest.c                           |    3 +
 .../qemuxml2xmlout-disk-cdrom-empty.xml            |   31 ++++++++
 tests/qemuxmlnstest.c                              |    3 +
 27 files changed, 585 insertions(+), 14 deletions(-)
 create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-disk-cdrom-empty.xml

-- 
1.7.3.4




More information about the libvir-list mailing list