1. 03 9月, 2011 13 次提交
    • E
      snapshot: add qemu snapshot redefine support · bd18b967
      Eric Blake 提交于
      Redefining a qemu snapshot requires a bit of a tweak to the common
      snapshot parsing code, but the end result is quite nice.
      
      Be careful that redefinitions do not introduce circular parent
      chains.  Also, we don't want to allow conversion between online
      and offline existing snapshots.  We could probably do some more
      validation for snapshots that don't already exist to make sure
      they are even feasible, by parsing qemu-img output, but that
      can come later.
      
      * src/conf/domain_conf.h (virDomainSnapshotParseFlags): New
      internal flags.
      * src/conf/domain_conf.c (virDomainSnapshotDefParseString): Alter
      signature to take internal flags.
      * src/esx/esx_driver.c (esxDomainSnapshotCreateXML): Update caller.
      * src/vbox/vbox_tmpl.c (vboxDomainSnapshotCreateXML): Likewise.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateXML): Support
      new public flags.
      bd18b967
    • E
      snapshot: add qemu snapshot creation without metadata · ece197e9
      Eric Blake 提交于
      Supporting NO_METADATA on snapshot creation is interesting - we must
      still return a valid opaque snapshot object, but the user can't get
      anything out of it (unless we add a virDomainSnapshotGetName()),
      since it is no longer registered with the domain.
      
      Also, virsh now tries to query for secure xml, in anticipation of
      when we store <domain> xml inside <domainsnapshot>; for now, we
      can trivially support it, since we have nothing secure.
      
      * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateXML): Support
      new flag.
      (qemuDomainSnapshotGetXMLDesc): Trivially support VIR_DOMAIN_XML_SECURE.
      ece197e9
    • E
      snapshot: identify qemu snapshot roots · 6b3801b0
      Eric Blake 提交于
      Filtering for roots is pretty easy to do.
      
      * src/conf/domain_conf.h (virDomainSnapshotObjListGetNames)
      (virDomainSnapshotObjListNum): Update prototype.
      * src/conf/domain_conf.c (virDomainSnapshotObjListCopyNames)
      (virDomainSnapshotObjListGetNames, virDomainSnapshotObjListCount)
      (virDomainSnapshotObjListNum): Support filtering.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotNum)
      (qemuDomainSnapshotListNames): Update callers.
      6b3801b0
    • E
      snapshot: identify which snapshots have metadata · 9f5e53e2
      Eric Blake 提交于
      To make it easier to know when undefine will fail because of existing
      snapshot metadata, we need to know how many snapshots have metadata.
      
      Also, it is handy to filter the list of snapshots to just those that
      have no parents; document that flag now, but implement it in later patches.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_SNAPSHOT_LIST_ROOTS)
      (VIR_DOMAIN_SNAPSHOT_LIST_METADATA): New flags.
      * src/libvirt.c (virDomainSnapshotNum)
      (virDomainSnapshotListNames): Document them.
      * src/esx/esx_driver.c (esxDomainSnapshotNum)
      (esxDomainSnapshotListNames): Implement trivial flag.
      * src/vbox/vbox_tmpl.c (vboxDomainSnapshotNum)
      (vboxDomainSnapshotListNames): Likewise.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotNum)
      (qemuDomainSnapshotListNames): Likewise.
      9f5e53e2
    • E
      snapshot: let qemu discard only snapshot metadata · 7afa6b41
      Eric Blake 提交于
      Adding this was trivial compared to the previous patch for fixing
      qemu snapshot deletion in the first place.
      
      * src/qemu/qemu_driver.c (qemuDomainSnapshotDiscard): Add
      parameter.
      (qemuDomainSnapshotDiscardDescendant, qemuDomainSnapshotDelete):
      Update callers.
      7afa6b41
    • E
      snapshot: simplify acting on just children · 67555b24
      Eric Blake 提交于
      Similar to the last patch in isolating the filtering from the
      client actions, so that clients don't have to reinvent the
      filtering.
      
      * src/conf/domain_conf.h (virDomainSnapshotForEachChild): New
      prototype.
      * src/libvirt_private.syms (domain_conf.h): Export it.
      * src/conf/domain_conf.c (virDomainSnapshotActOnChild)
      (virDomainSnapshotForEachChild): New functions.
      (virDomainSnapshotCountChildren): Delete.
      (virDomainSnapshotHasChildren): Simplify.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotReparentChildren)
      (qemuDomainSnapshotDelete): Likewise.
      67555b24
    • E
      snapshot: track current domain across deletion of children · 90ea06b8
      Eric Blake 提交于
      Deleting a snapshot and all its descendants had problems with
      tracking the current snapshot.  The deletion does not necessarily
      proceed in depth-first order, so a parent could be deleted
      before a child, wreaking havoc on passing the notion of the
      current snapshot to the parent.  Furthermore, even if traversal
      were depth-first, doing multiple file writes to pass current up
      the chain one snapshot at a time is wasteful, comparing to a
      single update to the current snapshot at the end of the algorithm.
      
      * src/qemu/qemu_driver.c (snap_remove): Add field.
      (qemuDomainSnapshotDiscard): Add parameter.
      (qemuDomainSnapshotDiscardDescendant): Adjust accordingly.
      (qemuDomainSnapshotDelete): Properly reset current.
      90ea06b8
    • E
      snapshot: avoid crash when deleting qemu snapshots · cb231b4b
      Eric Blake 提交于
      This one's nasty.  Ever since we fixed virHashForEach to prevent
      nested hash iterations for safety reasons (commit fba550f6),
      virDomainSnapshotDelete with VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN
      has been broken for qemu: it deletes children, while leaving
      grandchildren intact but pointing to a no-longer-present parent.
      But even before then, the code would often appear to succeed to
      clean up grandchildren, but risked memory corruption if you have
      a large and deep hierarchy of snapshots.
      
      For acting on just children, a single virHashForEach is sufficient.
      But for acting on an entire subtree, it requires iteration; and
      since we declared recursion as invalid, we have to switch to a
      while loop.  Doing this correctly requires quite a bit of overhaul,
      so I added a new helper function to isolate the algorithm from the
      actions, so that callers do not have to reinvent the iteration.
      
      Note that this _still_ does not handle CHILDREN correctly if one
      of the children is the current snapshot; that will be next.
      
      * src/conf/domain_conf.h (_virDomainSnapshotDef): Add mark.
      (virDomainSnapshotForEachDescendant): New prototype.
      * src/libvirt_private.syms (domain_conf.h): Export it.
      * src/conf/domain_conf.c (virDomainSnapshotMarkDescendant)
      (virDomainSnapshotActOnDescendant)
      (virDomainSnapshotForEachDescendant): New functions.
      * src/qemu/qemu_driver.c (qemuDomainSnapshotDiscardChildren):
      Replace...
      (qemuDomainSnapshotDiscardDescenent): ...with callback that
      doesn't nest hash traversal.
      (qemuDomainSnapshotDelete): Use new function.
      cb231b4b
    • E
      snapshot: fine-tune qemu snapshot revert states · 7dc44eb0
      Eric Blake 提交于
      For a system checkpoint of a running or paused domain, it's fairly
      easy to honor new flags for altering which state to use after the
      revert.  For an inactive snapshot, the revert has to be done while
      there is no qemu process, so do back-to-back transitions; this also
      lets us revert to inactive snapshots even for transient domains.
      
      * src/qemu/qemu_driver.c (qemuDomainRevertToSnapshot): Support new
      flags.
      7dc44eb0
    • E
      snapshot: properly revert qemu to offline snapshots · 25fb3ef1
      Eric Blake 提交于
      Commit 5e47785b broke reverts to offline system checkpoint snapshots
      with older qemu, since there is no longer any code path to use
      qemu -loadvm on next boot.  Meanwhile, reverts to offline system
      checkpoints have been broken for newer qemu, both before and
      after that commit, since -loadvm no longer works to revert to
      disk state without accompanying vm state.  Fix both of these by
      using qemu-img to revert disk state.
      
      Meanwhile, consolidate the (now 3) clients of a qemu-img iteration
      over all disks of a VM into one function, so that any future
      algorithmic fixes to the FIXMEs in that function after partial
      loop iterations are dealt with at once.  That does mean that this
      patch doesn't handle partial reverts very well, but we're not
      making the situation any worse in this patch.
      
      * src/qemu/qemu_driver.c (qemuDomainRevertToSnapshot): Use
      qemu-img rather than 'qemu -loadvm' to revert to offline snapshot.
      (qemuDomainSnapshotRevertInactive): New helper.
      (qemuDomainSnapshotCreateInactive): Factor guts...
      (qemuDomainSnapshotForEachQcow2): ...into new helper.
      (qemuDomainSnapshotDiscard): Use it.
      25fb3ef1
    • E
      snapshot: improve reverting to qemu paused snapshots · 88fe7a4b
      Eric Blake 提交于
      If you take a checkpoint snapshot of a running domain, then pause
      qemu, then restore the snapshot, the result should be a running
      domain, but the code was leaving things paused.  Furthermore, if
      you take a checkpoint of a paused domain, then run, then restore,
      there was a brief but non-deterministic window of time where the
      domain was running rather than paused.  Fix both of these
      discrepancies by always pausing before restoring.
      
      Also, check that the VM is active every time lock is dropped
      between two monitor calls.
      
      Finally, straighten out the events that get emitted on each
      transition.
      
      * src/qemu/qemu_driver.c (qemuDomainRevertToSnapshot): Always
      pause before reversion, and improve events.
      88fe7a4b
    • E
      snapshot: fine-tune qemu saved images starting paused · 7381aaff
      Eric Blake 提交于
      Implement the new running/paused overrides for saved state management.
      
      Unfortunately, for virDomainSaveImageDefineXML, the saved state
      updates are write-only - I don't know of any way to expose a way
      to query the current run/pause setting of an existing save image
      file to the user without adding a new API or modifying the domain
      xml of virDomainSaveImageGetXMLDesc to include a new element to
      reflect the state bit encoded into the save image.  However, I
      don't think this is a show-stopper, since the API is designed to
      leave the state bit alone unless an explicit flag is used to
      change it.
      
      * src/qemu/qemu_driver.c (qemuDomainSaveInternal)
      (qemuDomainSaveImageOpen): Adjust signature.
      (qemuDomainSaveFlags, qemuDomainManagedSave)
      (qemuDomainRestoreFlags, qemuDomainSaveImageGetXMLDesc)
      (qemuDomainSaveImageDefineXML, qemuDomainObjRestore): Adjust
      callers.
      7381aaff
    • E
      snapshot: better events when starting paused · c1ff5dc6
      Eric Blake 提交于
      There are two classes of management apps that track events - one
      that only cares about on/off (and only needs to track EVENT_STARTED
      and EVENT_STOPPED), and one that cares about paused/running (also
      tracks EVENT_SUSPENDED/EVENT_RESUMED).  To keep both classes happy,
      any transition that can go from inactive to paused must emit two
      back-to-back events - one for started and one for suspended (since
      later resuming of the domain will only send RESUMED, but the first
      class isn't tracking that).
      
      This also fixes a bug where virDomainCreateWithFlags with the
      VIR_DOMAIN_START_PAUSED flag failed to start paused when restoring
      from a managed save image.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_EVENT_SUSPENDED_RESTORED)
      (VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT)
      (VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT): New sub-events.
      * src/qemu/qemu_driver.c (qemuDomainRevertToSnapshot): Use them.
      (qemuDomainSaveImageStartVM): Likewise, and add parameter.
      (qemudDomainCreate, qemuDomainObjStart): Send suspended event when
      starting paused.
      (qemuDomainObjRestore): Add parameter.
      (qemuDomainObjStart, qemuDomainRestoreFlags): Update callers.
      * examples/domain-events/events-c/event-test.c
      (eventDetailToString): Map new detail strings.
      c1ff5dc6
  2. 02 9月, 2011 16 次提交
    • M
      Add "redirdev" redirection device · 162efa1a
      Marc-André Lureau 提交于
      - create a new "redirdev" element for this purpose
      162efa1a
    • M
      qemu: Don't append 0 at usb id, so that it is compatible with legacy -usb · fdd14a9d
      Marc-André Lureau 提交于
      QEMU uses USB bus name "usb.0" when using the legacy -usb argument.
      If we want to allow USB devices to specify their addresses with legacy
      -usb, we should either in case of legacy bus name drop the 0 from the
      address bus, or just drop the 0 from device id. This patch does the
      later.
      
      Another solution would be to permit addressing on non-legacy USB
      controllers only.
      fdd14a9d
    • M
      qemu: don't reserve slot 1 if a PIIX3 USB controller is defined there · f35bbf7b
      Marc-André Lureau 提交于
      Applies only to piix3 and check if piix3 controller is on correct
      address, or report error
      f35bbf7b
    • M
      Modify USB port to be defined as a port path · 31710a53
      Marc-André Lureau 提交于
      So that devices can be attached to hubs. Example, to attach to first
      port of a usb-hub on port 1.
      
            <hub type='usb'>
               <address type='usb' bus='0' port='1'/>
            </hub>
      
            <input type='mouse' type='usb'>
               <address type='usb' bus='0' port='1.1'/>
            </hub>
      
      also add a test entry
      31710a53
    • M
      Add USB hub device · fdabeb3c
      Marc-André Lureau 提交于
      domain parsing and serialization code, qemu driver backend and
      a couple of test
      fdabeb3c
    • M
      Add USB companion controllers support · f3ce5962
      Marc-André Lureau 提交于
      Companion controllers take an extra 'master' attribute to associate
      them.
      
      Also add tests for this
      f3ce5962
    • M
      USB devices gain a new USB address child element · 22c0d433
      Marc-André Lureau 提交于
      Expand the domain and the QEmu driver code
      Adds a couple of tests
      22c0d433
    • M
      Add a new controller type 'usb' with optionnal 'model' · d6d54cd1
      Marc-André Lureau 提交于
      The model by default is piix3-uchi.
      
      Example:
      <controller type='usb' index='0' model='ich9-ehci'/>
      d6d54cd1
    • M
      Add various USB devices QEMU_CAPS · 329f907b
      Marc-André Lureau 提交于
      329f907b
    • E
      snapshot: fix corner case on OOM during creation · c554f6e1
      Eric Blake 提交于
      Commit 6766ff10 introduced a corner case bug with snapshot creation:
      if a snapshot is created, but then we hit OOM while trying to
      create the return value of the function, then we have polluted the
      internal directory with the snapshot metadata with no way to clean
      it up from the running libvirtd.
      
      * src/qemu/qemu_driver.c (qemuDomainSnapshotCreateXML): Don't
      write metadata file on OOM condition.
      c554f6e1
    • O
      Add directsync cache mode support for disk driver · 6ee52c1b
      Osier Yang 提交于
      Newer QEMU introduced cache=directsync for -drive, this patchset
      is to expose it in libvirt layer.
      
        * Introduced a new QEMU capability flag ($prefix_CACHE_DIRECTSYNC),
          As even $prefix_CACHE_V2 is set, we can't known if directsync
          is supported.
      6ee52c1b
    • E
      qemu: detect incomplete save files · 55d88def
      Eric Blake 提交于
      Several users have reported problems with 'virsh start' failing because
      it was encountering a managed save situation where the managed save file
      was incomplete.  Be more robust to this by using two different magic
      numbers, so that newer libvirt can gracefully handle an incomplete file
      differently than a complete one, while older libvirt will at least fail
      up front rather than trying to load only to have qemu fail at the end.
      
      Managed save is a convenience - it exists to preserve as much state
      as possible; if the state was not preserved, it is reasonable to just
      log that fact, then proceed with a fresh boot.  On the other hand,
      user saves are under user control, so we must fail, but by making
      the failure message distinct, the user can better decide how to handle
      the situation of an incomplete save file.
      
      * src/qemu/qemu_driver.c (QEMUD_SAVE_PARTIAL): New define.
      (qemuDomainSaveInternal): Use it to mark incomplete images.
      (qemuDomainSaveImageOpen, qemuDomainObjRestore): Add parameter
      that controls what to do with partial images.
      (qemuDomainRestoreFlags, qemuDomainSaveImageGetXMLDesc)
      (qemuDomainSaveImageDefineXML, qemuDomainObjStart): Update callers.
      Based on an initial idea by Osier Yang.
      55d88def
    • E
      qemu: refactor file opening · 449ae9c2
      Eric Blake 提交于
      In a SELinux or root-squashing NFS environment, libvirt has to go
      through some hoops to create a new file that qemu can then open()
      by name.  Snapshots are a case where we want to guarantee an empty
      file that qemu can open; also, reopening a save file to convert it
      from being marked partial to complete requires a reopen to avoid
      O_DIRECT headaches.  Refactor some existing code to make it easier
      to reuse in later patches.
      
      * src/qemu/qemu_migration.h (qemuMigrationToFile): Drop parameter.
      * src/qemu/qemu_migration.c (qemuMigrationToFile): Let cgroup do
      the stat, rather than asking caller to do it and pass info down.
      * src/qemu/qemu_driver.c (qemuOpenFile): New function, pulled from...
      (qemuDomainSaveInternal): ...here.
      (doCoreDump, qemuDomainSaveImageOpen): Use it here as well.
      449ae9c2
    • W
      reserve slot 1 on pci bus0 · deff02a3
      Wen Congyang 提交于
      After supporting multi function pci device, we only reserve function 1 on slot 1.
      The user can use the other function on slot 1 in the xml config file. We should
      detect this wrong usage.
      deff02a3
    • A
      BlockPull: Set initial bandwidth limit if specified · d4b9e062
      Adam Litke 提交于
      The libvirt BlockPull API supports the use of an initial bandwidth limit but the
      qemu block_stream API does not.  To get the desired behavior we use the two APIs
      strung together: first BlockPull, then BlockJobSetSpeed.  We can do this at the
      driver level to avoid duplicated code in each monitor path.
      Signed-off-by: NAdam Litke <agl@us.ibm.com>
      d4b9e062
    • A
      BlockJob: Bandwidth parameter is in MB when using text monitor · 78d9325d
      Adam Litke 提交于
      Due to an unfortunate precedent in qemu, the units for the bandwidth parameter
      to block_job_set_speed are different between the text monitor and the qmp
      monitor.  While the qmp monitor uses bytes/s, the text monitor expects MB/s.
      
      Correct the units for the text interface.
      Signed-off-by: NAdam Litke <agl@us.ibm.com>
      78d9325d
  3. 01 9月, 2011 1 次提交
  4. 31 8月, 2011 3 次提交
    • D
      Fix sanlock socket security labelling · 64bdec38
      Daniel P. Berrange 提交于
      It is not possible to change the label of a TCP socket once it
      has been opened. When creating a TCP socket care must be taken
      to ensure the socket creation label is set & then cleared.
      Remove the bogus call to virSecurityManagerSetProcessFDLabel
      from the lock driver guest setup code and instead make use of
      virSecurityManagerSetSocketLabel
      64bdec38
    • E
      snapshot: forbid snapshot on autodestroy domain · 173015be
      Eric Blake 提交于
      There is no reason to forbid pausing an autodestroy domain
      (not to mention that 'virsh start --paused --autodestroy'
      succeeds in creating a paused autodestroy domain).
      
      Meanwhile, qemu was failing to enforce the API documentation that
      autodestroy domains cannot be saved.  And while the original
      documentation only mentioned save/restore, snapshots are another
      form of saving that are close enough in semantics as to make no
      sense on one-shot domains.
      
      * src/qemu/qemu_driver.c (qemudDomainSuspend): Drop bogus check.
      (qemuDomainSaveInternal, qemuDomainSnapshotCreateXML): Forbid
      saves of autodestroy domains.
      * src/libvirt.c (virDomainCreateWithFlags, virDomainCreateXML):
      Document snapshot interaction.
      173015be
    • P
      Fix error detection in device change · 4521ffab
      Philipp Hahn 提交于
      According to qemu-kvm/qerror.c all messages start with a capital
      "Device ", but the current code only scans for the lower case "device ".
      This results in "virDomainUpdateDeviceFlags()" to not detect locked
      CD-ROMs and reporting success even in the case of a failure:
      	# virsh qemu-monitor-command "$VM" change\ drive-ide0-0-0\ \"/var/lib/libvirt/images/ucs_2.4-0-sec4-20110714145916-dvd-amd64.iso\"
      	Device 'drive-ide0-0-0' is locked
      	# virsh update-device "$VM" /dev/stdin <<<"<disk type='file' device='cdrom'><driver name='qemu' type='raw'/><source file='/var/lib/libvirt/images/ucs_2.4-0-sec4-20110714145916-dvd-amd64.iso'/><target dev='hda' bus='ide'/><readonly/><alias name='ide0-0-0'/><address type='drive' controller='0' bus='0' unit='0'/></disk>"
      	Device updated successfully
      Signed-off-by: NPhilipp Hahn <hahn@univention.de>
      4521ffab
  5. 30 8月, 2011 2 次提交
    • E
      start: allow discarding managed save · 27c85260
      Eric Blake 提交于
      There have been several instances of people having problems with
      a broken managed save file, and not aware that they could use
      'virsh managedsave-remove dom' to fix things.  Making it possible
      to do this as part of starting a domain makes the same functionality
      easier to find, and one less API call.
      
      * include/libvirt/libvirt.h.in (VIR_DOMAIN_START_FORCE_BOOT): New
      flag.
      * src/libvirt.c (virDomainCreateWithFlags): Document it.
      * src/qemu/qemu_driver.c (qemuDomainObjStart): Alter signature.
      (qemuAutostartDomain, qemuDomainStartWithFlags): Update callers.
      * tools/virsh.c (cmdStart): Expose it in virsh.
      * tools/virsh.pod (start): Document it.
      27c85260
    • E
      qemu: properly label outgoing pipe for tunneled migration · e6b8bc81
      Eric Blake 提交于
      Commit 32617617 made it possible to use pipes instead of sockets
      for outgoing tunneled migration; however, it caused a regression
      because the pipe was never given a SELinux label.
      
      * src/qemu/qemu_migration.c (doTunnelMigrate): Label outgoing pipe.
      e6b8bc81
  6. 26 8月, 2011 5 次提交
    • K
      Fix persistent migration config save · 709b4c50
      KAMEZAWA Hiroyuki 提交于
      When a user migrates a domain by command as
      
      libvirt saves vm's domain XML config in destination host after migration.
      But it saves vm->def. Then, the saved XML contains some garbage.
      
        <domain type='kvm' id='50'>
                           ^^^^^^^^
        ...
         <console type='pty' tty='/dev/pts/5'>
                             ^^^^^^^^^^^^^^^^^
      
      Avoid saving unnecessary things by saving persistent vm definition.
      709b4c50
    • D
      Detect errors from the 'sendkey' command · 6b434da6
      Daniel P. Berrange 提交于
      On success, the 'sendkey' command does not return any data, so
      any data in the reply should be considered to be an error
      message
      
      * src/qemu/qemu_monitor_text.c: Treat non-"" reply data as an
        error message for 'sendkey' command
      6b434da6
    • D
      Fix keymap used to talk with QEMU · ce93f64b
      Daniel P. Berrange 提交于
      The QEMU 'sendkey' command expects keys to be encoded in the same
      way as the RFB extended keycode set. Specifically it wants extended
      keys to have the high bit of the first byte set, while the Linux
      XT KBD driver codeset uses the low bit of the second byte. To deal
      with this we introduce a new keymap 'RFB' and use that in the QEMU
      driver
      
      * include/libvirt/libvirt.h.in: Add VIR_KEYCODE_SET_RFB
      * src/qemu/qemu_driver.c: Use RFB keycode set instead of XT KBD
      * src/util/virkeycode-mapgen.py: Auto-generate the RFB keycode
        set from the XT KBD set
      * src/util/virkeycode.c: Add RFB keycode entry to table. Add a
        verify check on cardinality of the codeOffset table
      ce93f64b
    • J
      qemu: Correctly label migration TCP socket · 855f7689
      Jiri Denemark 提交于
      855f7689
    • J
      security: Rename SetSocketLabel APIs to SetDaemonSocketLabel · 4c85d96f
      Jiri Denemark 提交于
      The APIs are designed to label a socket in a way that the libvirt daemon
      itself is able to access it (i.e., in SELinux the label is virtd_t based
      as opposed to svirt_* we use for labeling resources that need to be
      accessed by a vm). The new name reflects this.
      4c85d96f