1. 19 2月, 2017 15 次提交
    • J
      tests: Add createVHBAByNodeDevice-parent-fabric-wwn to fchosttest · f3b1b981
      John Ferlan 提交于
      Add a test that allows providing the parent fabric_wwn in the input XML
      in order to create the vHBA.
      
      This also fixes a mixed setting of the fabric_wwn field from the read
      test driver XML strings.
      f3b1b981
    • J
      tests: Add createVHBAByNodeDevice-parent-wwn to fchosttest · 19ff4361
      John Ferlan 提交于
      Add a test that allows providing the parent wwnn/wwpn in the input XML
      in order to create the vHBA.
      19ff4361
    • J
      tests: Add createVHBAByNodeDevice-no-parent to fchosttest · 5319c49c
      John Ferlan 提交于
      Add a test that allows not providing a parent in the input XML, but still
      being able to create finding a VPORT capable NPIV HBA.
      5319c49c
    • J
      nodedev: Rework virNodeDeviceGetParentHost · 7ad479d0
      John Ferlan 提交于
      Rework the code to perform the various searches by parent, parent_wwnn/
      parent_wwpn, parent_fabric_wwn, or vport capable in order to return the
      'parent_host' number that is vHBA capable.
      
      The former virNodeDeviceGetParentHost is renamed to add the ByParent
      on it fixes an issue where if no parent was supplied in the XML to
      create the vHBA, then virNodeDeviceFindByName was called with a NULL
      second parameter which had bad results.
      
      The reworked code will make the various calls to fetch the NPIV host
      by the passed parameter options or if none are provided find a vport
      capable NPIV HBA to perform the create. If the call is from the delete
      path, then this option won't be allowed.
      
      Each of virNodeDeviceGetParentHostBy* functions is now static, so
      remove them external definitions.
      
      A secondary benefit of this is the test_driver now can make use of
      the new API to add some new tests to test the various creation options.
      7ad479d0
    • J
      nodedev: Keep the node device lock longer in nodeDeviceDestroy · ccb0d6e3
      John Ferlan 提交于
      While perhaps improbable, it could be possible that after finding our
      object that another thread running essentially in parallel could attempt
      to delete the same vHBA.
      
      So rather than dropping the lock right after finding the object, keep
      the lock around while we drop the object lock and work on deleting the
      object. Once the delete occurs we can safely drop the driver lock again.
      
      Cleanup some of the usage of cleanup instead out for the goto label.
      ccb0d6e3
    • J
      tests: Add new fchosttest tests for management of a vHBA · 4b6ee784
      John Ferlan 提交于
      Add a test that will mimic creation and destruction of a vHBA
      by using node device XML. The design will allow for testing the
      multiple mechanisms.
      
      The first test uses just <parent> in the node device XML. This is
      somewhat similar to the existing objecteventtest, except that this
      test will not provide input wwnn/wwpn's (similar to how the process
      is described for the the libvirt wiki).
      
      This requires mocking the virRandomGenerateWWN since parsing the
      input XML (virNodeDevCapSCSIHostParseXML) requires either a provided
      wwnn/wwpn in the XML or the ability to randomly generate the wwnn/wwpn.
      4b6ee784
    • J
      util: Move scsi_host specific functions from virutil · 03346def
      John Ferlan 提交于
      Create a virscsihost.c and place the functions there. That removes the
      last #ifdef __linux__ from virutil.c.
      
      Take the opporunity to also change the function names and in one case
      the parameters slightly
      03346def
    • J
      util: Replace virStoragePoolGetVhbaSCSIHostParent · d2d74a98
      John Ferlan 提交于
      Use the new virNodeDeviceGetParentName instead. Modify the callers to
      build the node device scsi_host# name string in order to call the new
      function so that proper lookup occurs.
      d2d74a98
    • J
      nodedev: Introduce virNodeDeviceGetParentName · aa6aa624
      John Ferlan 提交于
      Create a function which takes a node device "name" entry to lookup
      and returns a string containing the parent name for the node device.
      aa6aa624
    • J
      util: Create a new virvhba module and move/rename API's · 16416816
      John Ferlan 提交于
      Rather than have them mixed in with the virutil apis, create a separate
      virvhba.c module and move the vHBA related calls into there. Soon there
      will be more added.
      
      Also modify the names of the functions and some arguments to be more
      indicative of what is really happening. Adjust the callers respectively.
      
      While I was changing fchosttest, rather than the non-descriptive names
      test1...test6, rename them to match what the test is doing.
      16416816
    • J
      test: Fix fchosttest resource leak · 9588a21b
      John Ferlan 提交于
      Commit id '666bee39' made fabric_name optional; however, if fabric name
      was present, then a leak would occur.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      9588a21b
    • J
      tests: Create a more realistic vHBA · 8729ce56
      John Ferlan 提交于
      Modify the code to react more like a real HBA -> vHBA creation.
      
      Currently the code would just modify the input XML definition to
      set the name to a wwpn and then modify the scsi_host capability
      entry for the defintion to change the scsi_host# and unique_id
      before adding that into the node device.
      
      This patch does things a bit better. It finds and copies a known
      existing vHBA (scsi_host11) in the node_device database and modifies
      that definition to change the name to scsi_host12 and set the wwnn/
      wwpn to what the input XML would expect before adding the def to the
      node device object list.
      
      Then rather than create a returned "dev" using the (poorly) mocked
      name - perform the lookup using the new device name.
      8729ce56
    • J
      test: Add helper to create vHBA for testNodeDeviceCreateXML · 0869d9b3
      John Ferlan 提交于
      Rather than inline the dummy creation of a vHBA to add to the node
      devices - create a helper to do that work.
      
      Also just tidy up a couple of things while at it...
      0869d9b3
    • J
      test: Add new NPIV capable HBA and a vHBA · 5c2ff641
      John Ferlan 提交于
      Predefine a second NPIV capable HBA as well as a vHBA using the first
      NPIV capable HBA. This will allow for a mechanism to perform more
      realistic create vHBA testing.
      5c2ff641
    • J
      tests: Alter test_driver HBA name/data to be closer to reality · 779e4905
      John Ferlan 提交于
      Alter "test-scsi-host-vport" to be "scsi_host1" to match the real
      environment. This is the vport capable HBA - IOW the NPIV device.
      Add more fields to scsi_host1 as well.
      
      Alter the XML being used by the objecttest to create a vHBA in order
      to match the scsi_host1 parent name and to use validateable wwnn/wwpn.
      This will allow for realistic testing.
      779e4905
  2. 18 2月, 2017 1 次提交
    • R
      nodedev: fix build with clang · d3ffa0ec
      Roman Bogorodskiy 提交于
      Build fails with:
      
      conf/node_device_conf.c:825:62: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
          if ((data->drm.type = virNodeDevDRMTypeFromString(type)) < 0) {
              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
      conf/node_device_conf.c:1801:59: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
              if ((type = virNodeDevDevnodeTypeFromString(tmp)) < 0) {
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
      2 errors generated.
      
      Fix by using intermediate variable to store the result similarly
      to how it's done for other FromString* calls.
      d3ffa0ec
  3. 17 2月, 2017 10 次提交
  4. 16 2月, 2017 8 次提交
  5. 15 2月, 2017 6 次提交
    • M
      qemu_conf: Properly check for retval of qemuDomainNamespaceAvailable · 27ac5f37
      Michal Privoznik 提交于
      This function is returning a boolean therefore check for '< 0'
      makes no sense. It should have been
      '!qemuDomainNamespaceAvailable'.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      27ac5f37
    • M
      qemu_conf: Check for namespaces availability more wisely · b57bd206
      Michal Privoznik 提交于
      The bare fact that mnt namespace is available is not enough for
      us to allow/enable qemu namespaces feature. There are other
      requirements: we must copy all the ACL & SELinux labels otherwise
      we might grant access that is administratively forbidden or vice
      versa.
      At the same time, the check for namespace prerequisites is moved
      from domain startup time to qemu.conf parser as it doesn't make
      much sense to allow users to start misconfigured libvirt just to
      find out they can't start a single domain.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      b57bd206
    • J
      apparmor: don't fail on non-apparmor <seclabel> · ec94e14b
      Jim Fehlig 提交于
      If the apparmor security driver is loaded/enabled and domain config
      contains a <seclabel> element whose type attribute is not 'apparmor',
      starting the domain fails when attempting to label resources such
      as tap FDs.
      
      Many of the apparmor driver entry points attempt to retrieve the
      apparmor security label from the domain def, returning failure if
      not found. Functions such as AppArmorSetFDLabel fail even though
      domain config contains an explicit 'none' secuirty driver, e.g.
      
        <seclabel type='none' model='none'/>
      
      Change the entry points to succeed if the domain config <seclabel>
      is not apparmor. This matches the behavior of the selinux driver.
      ec94e14b
    • J
      apparmor: don't overwrite error from reload_profile · 5cdfc80b
      Jim Fehlig 提交于
      Like other callers of reload_profile, don't overwrite errors in
      AppArmorSetSecurityHostdevLabelHelper.
      5cdfc80b
    • J
      qemu_monitor_json: Properly check GetArray return value · 598b6d79
      Jiri Denemark 提交于
      Commit 2a8d40f4 refactored qemuMonitorJSONGetCPUx86Data and replaced
      virJSONValueObjectGet(reply, "return") with virJSONValueObjectGetArray.
      While the former is guaranteed to always return non-NULL pointer the
      latter may return NULL if the returned JSON object is not an array.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      598b6d79
    • A
      qemu: Call chmod() after mknod() · ee6ec782
      Andrea Bolognani 提交于
      mknod() is affected my the current umask, so we're not
      guaranteed the newly-created device node will have the
      right permissions.
      
      Call chmod(), which is not affected by the current umask,
      immediately afterwards to solve the issue.
      
      Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1421036
      ee6ec782