1. 27 1月, 2015 28 次提交
    • D
      lxc: more logging during startup paths · e4fc4f0c
      Daniel P. Berrange 提交于
      Add more logging to the lxc controller and container files to
      facilitate debugging startup problems. Also make it clear when
      the container is going to close stdout and thus no longer do
      any logging.
      e4fc4f0c
    • D
      lxc: delay setup of cgroup until we have the init pid · 4acb01e4
      Daniel P. Berrange 提交于
      Don't create the cgroups ahead of launching the container since
      there is no need for the limits to apply during initial bootstrap.
      Create the cgroup after the container PID is known and tell
      systemd the initpid is the leader, instead of the controller
      pid.
      4acb01e4
    • D
      lxc: only write XML once for lxc controller · 0a8addc1
      Daniel P. Berrange 提交于
      Currently when launching the LXC controller we first write out
      the plain, inactive XML configuration, then launch the controller,
      then replace the file with the live status XML configuration.
      By good fortune this hasn't caused any problems other than some
      misleading error messages during failure scenarios.
      
      This simplifies the code so it only writes out the XML once and
      always writes the live status XML. To do this we need to handshake
      with the child process, to make execution pause just before exec()
      so we can write the XML status with the child PID present.
      0a8addc1
    • D
      lxc: re-arrange startup synchronization sequence with controller · e1de5521
      Daniel P. Berrange 提交于
      Currently the lxc controller process itself is responsible for
      daemonizing itself into the background and writing out its pid
      file. The lxc driver would fork the controller and then attempt
      to connect to the lxc monitor. This connection would only
      succeed after the controller has backgrounded itself, setup
      cgroups and written its pid file, so startup was race free.
      
      The problem is that we need to delay create of the cgroups to
      much later, such that we can tell systemd the container init
      pid when we create the cgroups. If we delay cgroup creation
      though the current synchronization won't work.
      
      A second problem is that the controller needs the XML config
      of the guest. Currently we write out the plain virDomainDefPtr
      XML before starting the controller, and then later replace it
      with the full virDomainObjPtr status XML. This is kind of gross
      and also means that the controller doesn't get a record of the
      live XML config right away. This means it doesn't have a record
      of the veth device names either and so can't give that info
      to systemd when creating the cgroups.
      
      To address this we change the startup sequencing. The goal
      is that we want to get the PID as soon as possible, before
      the LXC controller even starts. So we stop letting the LXC
      controller daemonize itself, and instead use virCommand's
      built-in capabilities. This daemonizes and writes the PID
      before LXC controller is exec'd. So the driver can read
      the PID as soon as virCommandRun returns. It is no longer
      safe to connect to the monitor or detect the cgroups though.
      
      Fortunately the LXC controller already has a second point
      of synchronization. Immediately before its  event loop
      starts running, it performs a handshake with the driver.
      So we move the opening of the monitor connection and cgroup
      detection after this synchronization point.
      e1de5521
    • D
      lxc: don't build pidfile string multiple times · a5979e33
      Daniel P. Berrange 提交于
      Build the pidfile string once when starting a guest and then
      use the same string thereafter. This will benefit following
      patches which need the pidfile string in more situations.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      a5979e33
    • D
      systemd: don't report an error if the guest is already terminated · b3e4401d
      Daniel P. Berrange 提交于
      In many cases where we invoke virSystemdTerminateMachine the
      process(es) will have already gone away on their own accord.
      In these cases we log an error message that the machine does
      not exist. We should catch this particular error and simply
      ignore it, so we don't pollute the logs.
      b3e4401d
    • D
      qemu: report TAP device indexes to systemd · f7afeddc
      Daniel P. Berrange 提交于
      Record the index of each TAP device created and report them to
      systemd, so they show up in machinectl status for the VM.
      f7afeddc
    • J
      Fix shadowed variable warning · d0ab79e9
      Ján Tomko 提交于
      libvirtd.c: In function 'daemonSetupAccessManager':
      libvirtd.c:730:18: error: declaration of 'driver' shadows
        a global declaration [-Werror=shadow]
           const char **driver = (const char **)config->access_drivers;
                        ^
      In file included from libvirtd.c:95:0:
      ../src/node_device/node_device_driver.h:43:36: error: shadowed
        declaration is here [-Werror=shadow]
       extern virNodeDeviceDriverStatePtr driver;
                                          ^
      d0ab79e9
    • C
      storage: add a flag to clone files on btrfs · 95da1913
      Chen Hanxiao 提交于
      When creating a RAW file, we don't take advantage
      of clone of btrfs.
      
      Add a VIR_STORAGE_VOL_CREATE_REFLINK flag to request
      a reflink copy.
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      Signed-off-by: NJán Tomko <jtomko@redhat.com>
      95da1913
    • C
      storage: introduce btrfsCloneFile() for COW copy · 466b29c8
      Chen Hanxiao 提交于
      Add a wrapper for BTRFS_IOC_CLONE ioctl.
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      Signed-off-by: NJán Tomko <jtomko@redhat.com>
      466b29c8
    • D
      Removing probing of secondary drivers · 55ea7be7
      Daniel P. Berrange 提交于
      For stateless, client side drivers, it is never correct to
      probe for secondary drivers. It is only ever appropriate to
      use the secondary driver that is associated with the
      hypervisor in question. As a result the ESX & HyperV drivers
      have both been forced to do hacks where they register no-op
      drivers for the ones they don't implement.
      
      For stateful, server side drivers, we always just want to
      use the same built-in shared driver. The exception is
      virtualbox which is really a stateless driver and so wants
      to use its own server side secondary drivers. To deal with
      this virtualbox has to be built as 3 separate loadable
      modules to allow registration to work in the right order.
      
      This can all be simplified by introducing a new struct
      recording the precise set of secondary drivers each
      hypervisor driver wants
      
      struct _virConnectDriver {
          virHypervisorDriverPtr hypervisorDriver;
          virInterfaceDriverPtr interfaceDriver;
          virNetworkDriverPtr networkDriver;
          virNodeDeviceDriverPtr nodeDeviceDriver;
          virNWFilterDriverPtr nwfilterDriver;
          virSecretDriverPtr secretDriver;
          virStorageDriverPtr storageDriver;
      };
      
      Instead of registering the hypervisor driver, we now
      just register a virConnectDriver instead. This allows
      us to remove all probing of secondary drivers. Once we
      have chosen the primary driver, we immediately know the
      correct secondary drivers to use.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      55ea7be7
    • D
      don't disable state driver when libvirtd is not built · 220c01aa
      Daniel P. Berrange 提交于
      A bunch of code is wrapped in #if WITH_LIBVIRTD in order to
      enable the virStateDriver to be disabled when libvirtd is not
      built. Disabling this code doesn't have any real functional
      benefit beyond removing 1 pointer from the virConnectPtr struct,
      while having a cost of many more conditionals.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      220c01aa
    • D
      Remove all secondary driver private data fields · f35fa0fd
      Daniel P. Berrange 提交于
      Now all drivers are converted to use their global state
      directly, there is no need for private data fields for
      the secondary drivers in virConnectPtr
      f35fa0fd
    • D
      Remove use of interfacePrivateData from udev driver · d85f9f1a
      Daniel P. Berrange 提交于
      The udev driver can be implemented using global state instead
      of the connect private data.
      d85f9f1a
    • D
      Remove use of nodeDevicePrivateData from nodeDev driver · 60b966b3
      Daniel P. Berrange 提交于
      The node device driver can rely on its global state instead
      of the connect private data.
      60b966b3
    • D
      Remove use of storagePrivateData/networkPrivateData from vbox · 47b7f661
      Daniel P. Berrange 提交于
      The vbox driver can use the main hypervisor private data and
      so does not need to use the storage/network private data fields.
      47b7f661
    • D
      Remove use of nwfilterPrivateData from nwfilter driver · 7b1ba956
      Daniel P. Berrange 提交于
      The nwfilter driver can rely on its global state instead
      of the connect private data.
      7b1ba956
    • D
      Remove use of secretPrivateData from secret driver · 04101f23
      Daniel P. Berrange 提交于
      The secret driver can rely on its global state instead
      of the connect private data.
      04101f23
    • P
      qemu: Fix job handling in qemuDomainSetMetadata · d13f56f0
      Peter Krempa 提交于
      The code modifies the domain configuration but doesn't take a MODIFY
      type job to do so.
      d13f56f0
    • P
      qemu: Fix job type in qemuDomainGetBlockIoTune · fb2ed975
      Peter Krempa 提交于
      The function just queries status so there's no need for a MODIFY type
      job.
      fb2ed975
    • P
      qemu: Fix job handling in qemuDomainSetSchedulerParametersFlags · c5ee5cfb
      Peter Krempa 提交于
      The code modifies the domain configuration but doesn't take a MODIFY
      type job to do so.
      c5ee5cfb
    • P
      qemu: Fix job handling in qemuDomainSetMemoryParameters · 4fd7a720
      Peter Krempa 提交于
      The code modifies the domain configuration but doesn't take a MODIFY
      type job to do so.
      4fd7a720
    • P
      qemu: Fix job handling in qemuDomainSetAutostart · e3e72743
      Peter Krempa 提交于
      The code modifies the domain configuration but doesn't take a MODIFY
      type job to do so.
      
      This patch also fixes a few very long lines of code around the touched
      parts.
      e3e72743
    • P
      qemu: Fix job handling in qemuDomainPinEmulator · 79e56033
      Peter Krempa 提交于
      The code modifies the domain configuration but doesn't take a MODIFY
      type job to do so.
      79e56033
    • P
      qemu: Fix job handling in qemuDomainPinVcpuFlags · 46d95044
      Peter Krempa 提交于
      The domain modifies the domain configuration but doesn't take a MODIFY
      type job to do it.
      46d95044
    • P
      Post-release version bump for new dev cycle · a17ca850
      Peter Krempa 提交于
      a17ca850
    • D
      Release of libvirt-1.2.12 · fd596a45
      Daniel Veillard 提交于
      * docs/news.html.in libvirt.spec.in: updated for the release
      * po/*.po*: regenerated the po
      fd596a45
    • M
      tests: Check for virQEMUDriverConfigNew return value · c6ec7c6b
      Michal Privoznik 提交于
      The function may return NULL if something went wrong. In some places
      in the tests we are not checking the return value rather than
      accessing the pointer directly resulting in SIGSEGV.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      c6ec7c6b
  2. 26 1月, 2015 4 次提交
  3. 23 1月, 2015 8 次提交