1. 18 10月, 2017 1 次提交
  2. 17 10月, 2017 5 次提交
    • P
      Terminate backing chains explicitly · a693fdba
      Peter Krempa 提交于
      Express a properly terminated backing chain by putting a
      virStorageSource of type VIR_STORAGE_TYPE_NONE in the chain. The newly
      used helpers simplify this greatly.
      
      The change fixes a bug as formatting an incomplete backing chain and
      parsing it back would end up in expressing a terminated chain since
      src->backingStoreRaw was not populated. By relying on the terminator
      object this can be now processed appropriately.
      a693fdba
    • P
      util: storagefile: Add helpers to check presence of backing store · 0a294a8e
      Peter Krempa 提交于
      Add helpers that will simplify checking if a backing file is valid or
      whether it has backing store. The helper virStorageSourceIsBacking
      returns true if the given virStorageSource is a valid backing store
      member. virStorageSourceHasBacking returns true if the virStorageSource
      has a backing store child.
      
      Adding these functions creates a central points for further refactors.
      0a294a8e
    • P
      util: storagefile: Tolerate NULL path when looking up volume in chain · e3fb414e
      Peter Krempa 提交于
      chain->path may be NULL e.g. for NBD drives, so the check needs to avoid
      dereferencing the path in such case
      e3fb414e
    • P
      util: storage: use stored index to lookup disks · 9cc8d6ee
      Peter Krempa 提交于
      We can now use the backing store ID directly rather than counting the
      number of images seen while looking up images.
      9cc8d6ee
    • P
      util: storage: Store backing chain index in virStorageSource · c6231a6a
      Peter Krempa 提交于
      The backing store indexes were not bound to the storage sources in any
      way. To allow us to bind a given alias to a given storage source we need
      to save the index in virStorageSource. The backing store ids are now
      generated when detecting the backing chain.
      
      Since we don't re-detect the backing chain after snapshots, the
      numbering needs to be fixed there.
      c6231a6a
  3. 16 10月, 2017 3 次提交
    • L
      hyperv: Escape WQL queries · 5ae2d9c2
      Ladi Prosek 提交于
      The code was vulnerable to SQL injection. Likely not a security issue due to
      WMI SQL and other constraints but still lame. For example:
      
        virsh # dominfo \"
        error: failed to get domain '"'
        error: internal error: SOAP fault during enumeration: code 's:Sender', subcode
        'n:CannotProcessFilter', reason 'The data source could not process the filter.
        The filter might be missing or it might be invalid. Change the filter and try
        the request again.  ', detail 'The WS-Management service cannot process the
        request. The WQL query is invalid. '
      
      This commit fixes the Hyper-V driver by escaping all WMI SQL string parameters.
      
      The same command with the fix:
      
        virsh # dominfo \"
        error: failed to get domain '"'
        error: Domain not found: No domain with name "
      Signed-off-by: NLadi Prosek <lprosek@redhat.com>
      5ae2d9c2
    • D
      Use https:// links for most sites · e371b3bf
      Daniel P. Berrange 提交于
      This adds a rule to require https links for the libvirt, qemu
      and kvm websites.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      e371b3bf
    • J
      util: Introduce virStringListCopy · ef04596d
      Jiri Denemark 提交于
      The API makes a deep copy of a NULL-terminated string list.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
      ef04596d
  4. 14 10月, 2017 1 次提交
    • J
      nodedev: Fix missing network devices · ac7cc624
      John Ferlan 提交于
      Commit id '8708ca01' added a check to determine whether the NIC had
      Switchdev capabilities; however, in doing so inadvertently would cause
      network devices without a PCI device to not be added to the node device
      database. Thus, network devices having a "computer" as a parent, such
      as "net_lo*", "net_virbr*", "net_tun*", "net_vnet*", etc. were not added.
      
      Alter the check to not even check for Switchdev bits if no PCI device found.
      ac7cc624
  5. 13 10月, 2017 1 次提交
    • J
      util: Resolve resource leak · 0c691e98
      John Ferlan 提交于
      Need to free @groups in the parent on success similar to other
      APIs (virFile*) which use virGetGroupList and virFork.
      
      Reported by Coverity.
      0c691e98
  6. 10 10月, 2017 2 次提交
  7. 06 10月, 2017 1 次提交
  8. 05 10月, 2017 2 次提交
  9. 04 10月, 2017 2 次提交
  10. 28 9月, 2017 2 次提交
    • J
      qemu: Introduce qemuDomainPrepareDiskSource · 5c09486c
      John Ferlan 提交于
      Introduce a function to setup any TLS needs for a disk source.
      
      If there's a configuration or other error setting up the disk source
      for TLS, then cause the domain startup to fail.
      
      For VxHS, follow the chardevTLS model where if the src->haveTLS hasn't
      been configured, then take the system/global cfg->haveTLS setting for
      the storage source *and* mark that we've done so via the tlsFromConfig
      setting in storage source.
      
      Next, if we are using TLS, then generate an alias into a virStorageSource
      'tlsAlias' field that will be used to create the TLS object and added to
      the disk object in order to link the two together for QEMU.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      5c09486c
    • A
      util: Add TLS attributes to virStorageSource · f1705485
      Ashish Mittal 提交于
      Add an optional virTristateBool haveTLS to virStorageSource to
      manage whether a storage source will be using TLS.
      
      Sample XML for a VxHS disk:
      
      <disk type='network' device='disk'>
        <driver name='qemu' type='raw' cache='none'/>
        <source protocol='vxhs' name='eb90327c-8302-4725-9e1b-4e85ed4dc251' tls='yes'>
          <host name='192.168.0.1' port='9999'/>
        </source>
        <target dev='vda' bus='virtio'/>
      </disk>
      
      Additionally add a tlsFromConfig boolean to control whether the TLS
      setting was due to domain configuration or qemu.conf global setting
      in order to decide whether to Format the haveTLS setting for either
      a live or saved domain configuration file.
      
      Update the qemuxml2xmltest in order to add a test to show the proper
      parsing.
      
      Also update the docs to describe the tls attribute.
      Signed-off-by: NAshish Mittal <Ashish.Mittal@veritas.com>
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      f1705485
  11. 27 9月, 2017 3 次提交
    • J
      Shrink volume even with ALLOCATE flag · 959fe7de
      Ján Tomko 提交于
      Calling fallocate on the new (smaller) capacity ensures
      that the whole file is allocated, but it does not reduce
      the file size.
      
      Also call ftruncate after fallocate.
      
      https://bugzilla.redhat.com/show_bug.cgi?id=1366446
      959fe7de
    • J
      virStorageFileResize: fallocate the whole capacity · 3f702f5a
      Ján Tomko 提交于
      We have been trying to implement the ALLOCATE flag to mean
      "the volume should be fully allocated after the resize".
      
      Since commit b0579ed9 we do not allocate from the existing
      capacity, but from the existing allocation value.
      However this value is a total of all the allocated bytes,
      not an offset.
      
      For a sparsely allocated file:
      $ perl -e 'print "x"x8192;' > vol1
      $ fallocate -p -o 0 -l 4096 vol1
      $ virsh vol-info vol1 default
      Capacity:       8.00 KiB
      Allocation:     4.00 KiB
      
      Treating allocation as an offset would result in an incompletely
      allocated file:
      $ virsh vol-resize vol1 --pool default 16384 --allocate
      Capacity:       16.00 KiB
      Allocation:     12.00 KiB
      
      Call fallocate from zero on the whole requested capacity to fully
      allocate the file. After that, the volume is fully allocated
      after the resize:
      $ virsh vol-resize vol1 --pool default 16384 --allocate
      $ virsh vol-info vol1 default
      Capacity:       16.00 KiB
      Allocation:     16.00 KiB
      3f702f5a
    • J
      use virFileAllocate in virStorageFileResize · 5463d959
      Ján Tomko 提交于
      Introduce a new function virFileAllocate that will call the
      non-destructive variants of safezero, essentially reverting
      my commit 1390c268
          safezero: fall back to writing zeroes even when resizing
      back to the state as of commit 18f03166
          virstoragefile: Have virStorageFileResize use safezero
      
      This means that _ALLOCATE flag will no longer work on platforms
      without the allocate syscalls, but it will not overwrite data
      either.
      5463d959
  12. 25 9月, 2017 1 次提交
  13. 22 9月, 2017 3 次提交
  14. 21 9月, 2017 1 次提交
    • D
      iohelper: avoid calling read() with misaligned buffers for O_DIRECT · 633b699b
      Daniel P. Berrange 提交于
      The iohelper currently calls saferead() to get data from the
      underlying file. This has a problem with O_DIRECT when hitting
      end-of-file. saferead() is asked to read 1MB, but the first
      read() it does may return only a few KB, so it'll try another
      read() to fill the remaining buffer. Unfortunately the buffer
      pointer passed into this 2nd read() is likely not aligned
      to the extent that O_DIRECT requires, so rather than seeing
      '0' for end-of-file, we'll get -1 + EINVAL due to misaligned
      buffer.
      
      The way the iohelper is currently written, it already handles
      getting short reads, so there is actually no need to use
      saferead() at all. We can simply call read() directly. The
      benefit of this is that we can now write() the data immediately
      so when we go into the subsequent reads() we'll always have a
      correctly aligned buffer.
      
      Technically the file position ought to be aligned for O_DIRECT
      too, but this does not appear to matter when at end-of-file.
      Tested-by: NNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
      Reviewed-by: NEric Blake <eblake@redhat.com>
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      633b699b
  15. 20 9月, 2017 3 次提交
    • A
      util: storage: Add JSON backing volume parse for VxHS · 2a48252b
      Ashish Mittal 提交于
      Add the backing parse and a test case to verify parsing of VxHS
      backing storage.
      Signed-off-by: NAshish Mittal <Ashish.Mittal@veritas.com>
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      2a48252b
    • A
      storage: Introduce VIR_STORAGE_NET_PROTOCOL_VXHS · 029c36c9
      Ashish Mittal 提交于
      Add a new virStorageNetProtocol for Veritas HyperScale (VxHS) disks
      Signed-off-by: NAshish Mittal <Ashish.Mittal@veritas.com>
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      029c36c9
    • L
      util: virPCIGetNetName(): use first netdev name when phys_port_id isn't matched · 747116e0
      Laine Stump 提交于
      The mlx4 (Mellanox) netdev driver implements the sysfs phys_port_id
      file for both VFs and PFs, so you can find the VF netdev plugged into
      the same physical port as any given PF netdev by comparing the
      contents of phys_port_id of the respective netdevs. That's what
      libvirt does when attempting to find the PF netdev for a given VF
      netdev (or vice versa).
      
      Most other netdev's drivers don't implement phys_port_id, so the file
      is visible in sysfs directory listing, but attempts to read it result
      in ENOTSUPP. In these cases, libvirt is unable to read phys_port_id of
      either the PF or the VF, so it just returns the first entry in the
      PF/VF's list of netdevs.
      
      But we've found that the i40e driver is in between those two
      situations - it implements phys_port_id for PF netdevs, but doesn't
      implement it for VF netdevs. So libvirt would successfully read the
      phys_port_id of the PF netdev, then try to find a VF netdev with
      matching phys_port_id, but would fail because phys_port_id is NULL for
      all VFs. This would result in a message like the following:
      
         Could not find network device with phys_port_id '3cfdfe9edc39'
         under PCI device at /sys/class/net/ens4f1/device/virtfn0
      
      To solve this problem in a way that won't break functionality for
      anyone else, this patch saves the first netdev name we find for the
      device, and returns that if we fail to find a netdev with the desired
      phys_port_id.
      747116e0
  16. 19 9月, 2017 4 次提交
  17. 18 9月, 2017 1 次提交
  18. 15 9月, 2017 1 次提交
  19. 12 9月, 2017 1 次提交
  20. 07 9月, 2017 1 次提交
  21. 04 9月, 2017 1 次提交