1. 30 1月, 2016 1 次提交
    • W
      storage: Add TRIM algorithm to storage volume API · 63cdc92f
      Wido den Hollander 提交于
      This new algorithm adds support for wiping volumes using TRIM.
      
      It does not overwrite all the data in a volume, but it tells the
      backing storage pool/driver that all bytes in a volume can be
      discarded.
      
      It depends on the backing storage pool how this is handled.
      
      A SCSI backend might send UNMAP commands to remove all data present
      on a LUN.
      
      A Ceph backend might use rbd_discard() to instruct the Ceph cluster
      that all data on that RBD volume can be discarded.
      Signed-off-by: NWido den Hollander <wido@widodh.nl>
      63cdc92f
  2. 29 1月, 2016 5 次提交
    • W
      rbd: Add support for wiping RBD volumes · f226ecbf
      Wido den Hollander 提交于
      When wiping the RBD image will be filled with zeros started
      at offset 0 and until the end of the volume.
      
      This will result in the RBD volume growing to it's full allocation
      on the Ceph cluster. All data on the volume will be overwritten
      however, making it unavailable.
      
      It does NOT take any RBD snapshots into account. The original data
      might still be in a snapshot of that RBD volume.
      Signed-off-by: NWido den Hollander <wido@widodh.nl>
      f226ecbf
    • W
      storage: Adjust fix virStorageBackendVolWipeLocal switch · 69535c61
      Wido den Hollander 提交于
      Use the cast of (virStorageVolWipeAlgorithm) adding the missing case:'s
      (VIR_STORAGE_VOL_WIPE_ALG_ZERO and VIR_STORAGE_VOL_WIPE_ALG_LAST).
      
      Additionally, the old code would also still run the SCRUB command on
      default since it didn't go to cleanup when a invalid flag was supplied.
      We now go to cleanup and exit if a invalid flag would be provided.
      Signed-off-by: NWido den Hollander <wido@widodh.nl>
      69535c61
    • J
      logical: Fix comment examples for virStorageBackendLogicalFindLVs · 680030c4
      John Ferlan 提交于
      When commit id '82c1740a' made changes to the output format (changing from
      using a ',' separator to '#'), the examples in the lvs output from the
      comments weren't changed.
      
      Additionally, the two new fields added ('segtype' and 'stripes') were
      not included in the output, leaving it well confusing.
      
      This patch fixes the sample output, adds a 'striped' example, and makes
      other comment related adjustments for long line and spacing between followup
      'NB' remarks (while I'm there).
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      680030c4
    • A
      pci: Use bool return type for some virPCIDeviceGet*() functions · 11ef5869
      Andrea Bolognani 提交于
      The affected functions are:
      
        virPCIDeviceGetManaged()
        virPCIDeviceGetUnbindFromStub()
        virPCIDeviceGetRemoveSlot()
        virPCIDeviceGetReprobe()
      
      Change their return type from unsigned int to bool: the corresponding
      members in struct _virPCIDevice are defined as bool, and even the
      corresponding virPCIDeviceSet*() functions take a bool value as input
      so there's no point in these functions having unsigned int as return
      type.
      Suggested-by: NJohn Ferlan <jferlan@redhat.com>
      11ef5869
    • M
      gendispatch: Don't output spaces on empty line · 3f3f7a82
      Michal Privoznik 提交于
      In our generator for some code we put empty lines in the output
      to separate blocks of code. However, in some cases we put couple
      of spaces on the empty line too. It's not bug, it just isn't
      nice.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      3f3f7a82
  3. 28 1月, 2016 6 次提交
  4. 27 1月, 2016 10 次提交
    • A
      virnetdevopenvswitch: Don't call strlen() twice on the same string · d87f0c00
      Andrea Bolognani 提交于
      Commit 871e10fc fixed a memory corruption error, but called strlen()
      twice on the same string to do so. Even though the compiler is
      probably smart enough to optimize the second call away, having a
      single invocation makes the code slightly cleaner.
      Suggested-by: NMichal Privoznik <mprivozn@redhat.com>
      d87f0c00
    • M
      virnetdevmacvlan: Provide stubs for build without macvtap · 720bc953
      Michal Privoznik 提交于
      In 370608b4 we have introduced two new internal APIs.
      However, there are no stubs for build without macvtap. Therefore
      build on systems lacking macvtap support (e.g. mingw or freebds)
      fails when trying to link.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      720bc953
    • J
      Fix libvirtd free() segfault when migrating guest with deleted open vswitch port · 871e10fc
      Jason J. Herne 提交于
      libvirtd crashes on free()ing portData for an open vswitch port if that port
      was deleted.  To reproduce:
      
      ovs-vsctl del-port vnet0
      virsh migrate --live kvm1 qemu+ssh://dstHost/system
      
      Error message:
      libvirtd: *** Error in `/usr/sbin/libvirtd': free(): invalid pointer: 0x000003ff90001e20 ***
      
      The problem is that virCommandRun can return an empty string in the event that
      the port being queried does not exist. When this happens then we are
      unconditionally overwriting a newline character at position strlen()-1. When
      strlen is 0, we overwrite memory that does not belong to the string.
      
      The fix: Only overwrite the newline if the string is not empty.
      Reviewed-by: NBjoern Walk <bwalk@linux.vnet.ibm.com>
      Signed-off-by: NJason J. Herne <jjherne@linux.vnet.ibm.com>
      871e10fc
    • L
      util: keep/use a bitmap of in-use macvtap devices · 370608b4
      Laine Stump 提交于
      This patch creates two bitmaps, one for macvlan device names and one
      for macvtap. The bitmap position is used to indicate that libvirt is
      currently using a device with the name macvtap%d/macvlan%d, where %d
      is the position in the bitmap. When requested to create a new
      macvtap/macvlan device, libvirt will now look for the first clear bit
      in the appropriate bitmap and derive the device name from that rather
      than just starting at 0 and counting up until one works.
      
      When libvirtd is restarted, the qemu driver code that reattaches to
      active domains calls the appropriate function to "re-reserve" the
      device names as it is scanning the status of running domains.
      
      Note that it may seem strange that the retry counter now starts at
      8191 instead of 5. This is because we now don't do a "pre-check" for
      the existence of a device once we've reserved it in the bitmap - we
      move straight to creating it; although very unlikely, it's possible
      that someone has a running system where they have a large number of
      network devices *created outside libvirt* named "macvtap%d" or
      "macvlan%d" - such a setup would still allow creating more devices
      with the old code, while a low retry max in the new code would cause a
      failure. Since the objective of the retry max is just to prevent an
      infinite loop, and it's highly unlikely to do more than 1 iteration
      anyway, having a high max is a reasonable concession in order to
      prevent lots of new failures.
      370608b4
    • L
      util: increase libnl buffer size · 8c70d04b
      Leno Hou 提交于
      In the following cases nl_recv() was returning the error "No buffer
      space available":
      
      * When switching CPUs to offline/online in a system more than 128 cpus
      * When using virsh to destroy domain in a system with many interfaces
      
      This patch sets the buffer size for all netlink sockets created by
      libnl to 128K and turns on message peeking for nl_recv(). This
      eliminates the "No buffer space available" errors seen in the cases
      above, and also preempts other future errors the smaller buffers could
      have caused.
      Signed-off-by: NLeno Hou <houqy@linux.vnet.ibm.com>
      Signed-off-by: NLaine Stump <laine@laine.org>
      8c70d04b
    • P
      device: cleanup input device code · 36785c7e
      Pavel Hrdina 提交于
      The current code was a little bit odd.  At first we've removed all
      possible implicit input devices from domain definition to add them later
      back if there was any graphics device defined while parsing XML
      description.  That's not all, while formating domain definition to XML
      description we at first ignore any input devices with bus different to
      USB and VIRTIO and few lines later we add implicit input devices to XML.
      
      This seems to me as a lot of code for nothing.  This patch may look
      to be more complicated than original approach, but this is a preferred
      way to modify/add driver specific stuff only in those drivers and not
      deal with them in common parsing/formating functions.
      
      The update is to add those implicit input devices into config XML to
      follow the real HW configuration visible by guest OS.
      
      There was also inconsistence between our behavior and QEMU's in the way,
      that in QEMU there is no way how to disable those implicit input devices
      for x86 architecture and they are available always, even without graphics
      device.  This applies also to XEN hypervisor.  VZ driver already does its
      part by putting correct implicit devices into live XML.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      36785c7e
    • P
      tests: add some missing tests to qemuxml2xmltest · 2686e44e
      Pavel Hrdina 提交于
      Those tests are in qemuargv2xmltest and it makes sense to include them
      also in qemuxml2xmltest and qemuxml2argvtest.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      2686e44e
    • P
      tests: use virtTestDifferenceFull in tests where we have output file · 2d446b6e
      Pavel Hrdina 提交于
      This will enable regenerate functionality for those tests to make
      developer lives easier while updating tests.
      Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
      2d446b6e
    • M
      vircgroup: Finish renaming of virCgroupIsolateMount · c7f5e26b
      Michal Privoznik 提交于
      In dc576025 we renamed virCgroupIsolateMount function to
      virCgroupBindMount. However, we forgot about one occurrence in
      section of the code which provides stubs for platforms without
      support for CGroups like *BSD for instance.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      c7f5e26b
    • D
      lxc: don't try to hide parent cgroups inside container · dc576025
      Daniel P. Berrange 提交于
      On the host when we start a container, it will be
      placed in a cgroup path of
      
         /machine.slice/machine-lxc\x2ddemo.scope
      
      under /sys/fs/cgroup/*
      
      Inside the containers' namespace we need to setup
      /sys/fs/cgroup mounts, and currently will bind
      mount /machine.slice/machine-lxc\x2ddemo.scope on
      the host to appear as / in the container.
      
      While this may sound nice, it confuses applications
      dealing with cgroups, because /proc/$PID/cgroup
      now does not match the directory in /sys/fs/cgroup
      
      This particularly causes problems for systems and
      will make it create repeated path components in
      the cgroup for apps run in the container eg
      
        /machine.slice/machine-lxc\x2ddemo.scope/machine.slice/machine-lxc\x2ddemo.scope/user.slice/user-0.slice/session-61.scope
      
      This also causes any systemd service that uses
      sd-notify to fail to start, because when systemd
      receives the notification it won't be able to
      identify the corresponding unit it came from.
      In particular this break rabbitmq-server startup
      
      Future kernels will provide proper cgroup namespacing
      which will handle this problem, but until that time
      we should not try to play games with hiding parent
      cgroups.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      dc576025
  5. 26 1月, 2016 11 次提交
  6. 25 1月, 2016 7 次提交