1. 25 7月, 2017 13 次提交
    • J
      secret: Fix memory leak in virSecretLoad · d04bc027
      John Ferlan 提交于
      If the virSecretLoadValue fails, the code jumped to cleanup without
      setting @ret = obj, thus calling virSecretObjListRemove which only
      accounts for the object reference related to adding the object to
      the list during virSecretObjListAdd, but does not account for the
      reference to the object itself as the return of @ret would be NULL
      so the caller wouldn't call virSecretObjEndAPI on the object recently
      added thus reducing the refcnt to zero.
      
      This patch will perform the ObjListRemove in the failure path of
      virSecretLoadValue and Unref @obj in order to perform clean up
      and return @obj as NULL. The @def will be freed as part of the
      virObjectUnref.
      d04bc027
    • J
      secret: Properly handle @def after virSecretObjAdd in driver · e4c0aff2
      John Ferlan 提交于
      Since the virSecretObjListAdd technically consumes @def on success,
      the secretDefineXML should set @def = NULL immediately and process
      the remaining calls using a new @objDef variable. We can use use
      VIR_STEAL_PTR since we know the Add function just stores @def in
      obj->def.
      
      Because we steal @def into @objDef, if we jump to restore_backup:
      and @backup is set, then we need to ensure the @def would be
      free'd properly, so we'll steal it back from @objDef. For the other
      condition this fixes a double free of @def if the code had jumped to
      @backup == NULL thus calling virSecretObjListRemove without setting
      @def = NULL. In this case, the subsequent call to DefFree would
      succeed and free @def; however, the call to EndAPI would also
      call DefFree because the Unref done would be the last one for
      the @obj meaning the obj->def would be used to call DefFree,
      but it's already been free'd because @def wasn't managed right
      within this error path.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      e4c0aff2
    • J
      secret: Remove need for local configFile and base64File in ObjectAdd · 7ca17da9
      John Ferlan 提交于
      Rather than assign to a local variable, let's just assign directly to the
      object using the error path for cleanup.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      7ca17da9
    • M
      Revert "virthread: Introduce virRWLockInitPreferWriter" · 2d3c7122
      Michal Privoznik 提交于
      This reverts commit 328bd244.
      
      As it turns out, this is not portable and very Linux & glibc
      specific. Worse, this may lead to not starving writers on Linux
      but everywhere else. Revert this and if the starvation occurs
      resolve it.
      Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
      Reviewed-by: NDaniel P. Berrange <berrange@redhat.com>
      2d3c7122
    • A
      conf: Rename virDomainControllerIsPCIHostBridge() to IsPSeriesPHB() · bbda2883
      Andrea Bolognani 提交于
      The original name didn't hint at the fact that PHBs are
      a pSeries-specific concept.
      Suggested-by: NPeter Krempa <pkrempa@redhat.com>
      Signed-off-by: NAndrea Bolognani <abologna@redhat.com>
      bbda2883
    • A
      conf: Fix backwards migration of pSeries guests · 9b45cd8f
      Andrea Bolognani 提交于
      Recent commits made it so that pci-root controllers for
      pSeries guests are automatically assigned the
      spapr-pci-host-bridge model name; however, that prevents
      guests to migrate to older versions of libvirt which don't
      know about that model name at all, which at the moment is
      all of them :)
      
      To avoid the issue, just strip the model name from PHBs
      when formatting the migratable XML; guests that use more
      than one PHB are not going to be migratable anyway.
      Signed-off-by: NAndrea Bolognani <abologna@redhat.com>
      9b45cd8f
    • J
      storage: Check if provided parent is vHBA capable · f7237d63
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1458708
      
      If the parent provided for the storage pool adapter is not vHBA
      capable, then issue a configuration error even though the provided
      wwnn/wwpn were found.
      
      It is a configuration error to provide a mismatched parent to
      the wwnn/wwpn. The @parent is optional and is used as a means to
      perform duplicate pool source checks.
      f7237d63
    • J
      storage: Remove @conn from virNodeDeviceCreateVport · 214a353c
      John Ferlan 提交于
      It's no longer needed since the checkParent code moved back to
      storage_backend_scsi.c
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      214a353c
    • J
      storage: Fix existing parent check for vHBA creation · c4030331
      John Ferlan 提交于
      https://bugzilla.redhat.com/show_bug.cgi?id=1472277
      
      Commit id '106930aa' altered the order of checking for an existing
      vHBA (e.g something created via nodedev-create functionality outside
      of the storage pool logic) which inadvertantly broke the code to
      decide whether to alter/force the fchost->managed field to be 'yes'
      because the storage pool will be managing the created vHBA in order
      to ensure when the storage pool is destroyed that the vHBA is also
      destroyed.
      
      This patch moves the check (and checkParent helper) for an existing
      vHBA back into the createVport in storage_backend_scsi. It also
      adjusts the checkParent logic to more closely follow the intentions
      prior to commit id '79ab0935'. The changes made by commit id '08c0ea16'
      are only necessary to run the virStoragePoolFCRefreshThread when
      a vHBA was really created because there's a timing lag such that
      the refreshPool call made after a startPool from storagePoolCreate*
      wouldn't necessarily find LUNs, but the thread would. For an already
      existing vHBA, using the thread is unnecessary since the vHBA already
      exists and the lag to configure the LUNs wouldn't exist.
      Signed-off-by: NJohn Ferlan <jferlan@redhat.com>
      c4030331
    • J
      nodedev: Remove driver locks around object list mgmt code · 4cb719b2
      John Ferlan 提交于
      Since virnodedeviceobj now has a self-lockable hash table, there's no
      need to lock the table from the driver for processing. Thus remove the
      locks from the driver for NodeDeviceObjList mgmt.
      
      This includes the test driver as well.
      4cb719b2
    • J
      nodedev: Convert virNodeDeviceObjListPtr to use hash tables · 4ae9dbea
      John Ferlan 提交于
      Rather than use a forward linked list of elements, it'll be much more
      efficient to use a hash table to reference the elements by unique name
      and to perform hash searches.
      
      This patch does all the heavy lifting of converting the list object to
      use a self locking list that contains the hash table. Each of the FindBy
      functions that do not involve finding the object by it's key (name) is
      converted to use virHashSearch in order to find the specific object.
      When searching for the key (name), it's possible to use virHashLookup.
      For any of the list perusal functions that are required to evaluate
      each object, the virHashForEach function is used.
      4ae9dbea
    • J
      nodedev: Remove @create from virNodeDeviceObjListGetParentHost · 8f6679d9
      John Ferlan 提交于
      The only callers to this function are from CreateXML paths now, so
      let's just remove the unnecessary parameter.
      8f6679d9
    • J
      nodedev: Alter node device deletion logic · 5ba2ce65
      John Ferlan 提交于
      Alter the node device deletion logic to make use of the parent field
      from the obj->def rather than call virNodeDeviceObjListGetParentHost.
      As it turns out the saved @def won't have parent_wwnn/wwpn or
      parent_fabric_wwn, so the only logical path would be to call
      virNodeDeviceObjListGetParentHostByParent which we can accomplish
      directly via virNodeDeviceObjListFindByName.
      5ba2ce65
  2. 24 7月, 2017 13 次提交
  3. 22 7月, 2017 14 次提交