[libvirt] [PATCH v2 0/5] Resolve fc_host startup, shutdown issues
Michal Privoznik
mprivozn at redhat.com
Wed Nov 12 14:31:04 UTC 2014
On 10.11.2014 23:45, John Ferlan wrote:
> This series will replace:
>
> http://www.redhat.com/archives/libvir-list/2014-November/msg00197.html
>
> There are two bugs being fixed here and having them reviewed together
> makes things easier in the long run as the last 3 patches depended upon
> the first 2 being present.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1160565
>
> Patch 1 is as was in the previous set
> Patch 2 is essentially the same, except the single function
> checkVhbaSCSIHostParent was split out to generate a
> getVhbaSCSIHostParent which gets used later on.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=1160926
>
> Patch 3 fixes an issue which took a bit of gdb time in order
> to figure out exactly what was going wrong. Essentially,
> the exising createVport code had a path which would find
> the "best available" fc_host to use and save the parent on
> return so that the deleteVport code would delete the parent.
> However, the code used a copy of the adapter not a reference
> to the adapter and thus the change was lost leaving the vHBA
> on the system.
>
> Patch 4 adds a new function to save the StoragePool XML given a
> configFile. This will be used in the next patch because
> while having the in memory fchost copy updated does work -
> if libvirtd dies in between we're back at square 1 reading
> storage pool config files and not knowing whence we started.
>
> Patch 5 adds a new "managed" attribute to the fchost XML. It does this
> mainly to let the deleteVport know when it should delete the
> self created vport. Prior to this code, the reliance was that
> we didn't have a parent provided. However, this causes an issue
> where if someone used nodedev-create in order to create a vHBA
> and then tried to use that vHBA in a storage pool we would delete
> that vHBA when we were done, which may not be expected. Using
> the managed attribute at creation time will let libvirt know
> what to do in this case.
>
> NOTE: There's still one more issue in the code, but it's a bit trickier
> to resolve. A libvirt created vport doesn't seem to want to find the LUN's
> on the initial PoolRefresh that occurs during startup. However, if one
> does a refresh immediately after starting the pool, the luns show up.
> It seems perhaps there's some sort of locking issue that won't allow the
> udevEventHandleCallback to 'add' the new device.
>
> John Ferlan (5):
> storage: Check for valid fc_host parent at startup
> storage: Ensure fc_host parent matches wwnn/wwpn
> storage: Don't use a stack copy of the adapter
> storage: Introduce virStoragePoolSaveConfig
> storage: Introduce 'managed' for the fchost parent
>
> docs/formatstorage.html.in | 28 ++-
> docs/schemas/basictypes.rng | 5 +
> src/conf/storage_conf.c | 70 ++++--
> src/conf/storage_conf.h | 4 +
> src/libvirt_private.syms | 1 +
> src/storage/storage_backend_scsi.c | 237 ++++++++++++++++++---
> .../pool-scsi-type-fc-host-managed.xml | 15 ++
> .../pool-scsi-type-fc-host-managed.xml | 18 ++
> tests/storagepoolxml2xmltest.c | 1 +
> 9 files changed, 323 insertions(+), 56 deletions(-)
> create mode 100644 tests/storagepoolxml2xmlin/pool-scsi-type-fc-host-managed.xml
> create mode 100644 tests/storagepoolxml2xmlout/pool-scsi-type-fc-host-managed.xml
>
ACK series
Michal
More information about the libvir-list
mailing list