提交 2206ec86 编写于 作者: M Michael Chapman 提交者: Cole Robinson

{domain, network}_conf: disable autostart when deleting config

Undefining a running, autostarted domain removes the autostart link, but
dom->autostart is not cleared. If the domain is subsequently redefined,
libvirt thinks it is already autostarted and will not create the link
even if requested:

  # virsh dominfo example | grep Autostart
  Autostart:      enable

  # ls /etc/libvirt/qemu/autostart/example.xml
  /etc/libvirt/qemu/autostart/example.xml

  # virsh undefine example
  Domain example has been undefined

  # virsh define example.xml
  Domain example defined from example.xml

  # virsh dominfo example | grep Autostart
  Autostart:      enable

  # virsh autostart example
  Domain example marked as autostarted

  # ls /etc/libvirt/qemu/autostart/example.xml
  ls: cannot access /etc/libvirt/qemu/autostart/example.xml: No such file or directory

This commit ensures dom->autostart is cleared whenever the config and
autostart link (if present) are removed.

The bridge network driver cleared this flag itself in networkUndefine.
This commit moves this into virNetworkDeleteConfig for symmetry with
virDomainDeleteConfig, and to ensure it is not missed in future network
drivers.
Signed-off-by: NMichael Chapman <mike@very.puzzling.org>
(cherry picked from commit a6ec4f47)
上级 5f3db971
...@@ -20882,6 +20882,7 @@ virDomainDeleteConfig(const char *configDir, ...@@ -20882,6 +20882,7 @@ virDomainDeleteConfig(const char *configDir,
/* Not fatal if this doesn't work */ /* Not fatal if this doesn't work */
unlink(autostartLink); unlink(autostartLink);
dom->autostart = 0;
if (unlink(configFile) < 0 && if (unlink(configFile) < 0 &&
errno != ENOENT) { errno != ENOENT) {
......
...@@ -3040,6 +3040,7 @@ int virNetworkDeleteConfig(const char *configDir, ...@@ -3040,6 +3040,7 @@ int virNetworkDeleteConfig(const char *configDir,
/* Not fatal if this doesn't work */ /* Not fatal if this doesn't work */
unlink(autostartLink); unlink(autostartLink);
net->autostart = 0;
if (unlink(configFile) < 0) { if (unlink(configFile) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
......
...@@ -3084,7 +3084,6 @@ networkUndefine(virNetworkPtr net) ...@@ -3084,7 +3084,6 @@ networkUndefine(virNetworkPtr net)
driver->networkAutostartDir, driver->networkAutostartDir,
network) < 0) network) < 0)
goto cleanup; goto cleanup;
network->autostart = 0;
event = virNetworkEventLifecycleNew(network->def->name, event = virNetworkEventLifecycleNew(network->def->name,
network->def->uuid, network->def->uuid,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册