[libvirt] [PATCH 0/8] storage_scsi: Stable SCSI host addressing
John Ferlan
jferlan at redhat.com
Fri Jun 20 10:05:19 UTC 2014
Ping?
Tks,
John
On 06/10/2014 03:03 PM, John Ferlan wrote:
> Just over a year ago, Osier Yang submitted some patches to provide stable
> SCSI host addressing support:
>
> http://www.redhat.com/archives/libvir-list/2013-June/msg00396.html
>
> Although reviewed - none of the patches were ever pushed and Osier never
> got back to the work. I eventually inherited the changes and now after
> languishing in the todo list - I took the time to rework things. There
> is a bz associated:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=963817
>
> Prior to leaving Red Hat, Osier and I spent some time revisiting the patch
> series and hashing out new/different ideas to come up with the same answer.
> My focus was to avoid the "generic recursive directory search" (patch 3),
> to not require having to know whether the scsi_host was using udev or hal,
> and to simplify as much as possible using existing data/information.
>
> The generic directory search I believe was less generic than intended and
> over complicated things. The old patches essentially used the output of
> a 'virsh nodedev-list scsi_host' and then selecting a resulting entry ran
> a 'virsh nodedev-dumpxml' to grab/use the resulting <parent> value. Taking
> that value and optionally adding a unique_id value was the basis for the
> design that would generate a PCI address (either in udev or hal format) and
> recursively search through /sys/devices looking for a matching address in
> either udev or hal format.
>
> These patches replace the bulk of the directory traversal logic with a
> more direct (and already in use) approach to scan the /sys/class/scsi_host
> directories looking for a matching PCI address found in the symlink of
> the files in the directory.
>
> The changed logic will add a new XML element 'parentaddr' to describe the
> scsi_host by it's PCI address. Additionally, the 'unique_id' has become a
> required attribute. The code reuses the virDevicePCIAddressParseXML() in
> order parse the required 'address' element. The 'address' will be in the
> expect PCI Address format like other described host devices.
>
> In order to help view the required unique_id value, the nodedev-dumpxml
> output has been adjusted to provide the <unique_id> value. This value will
> be an optional value on input.
>
> The documentation is updated to describe how to generate the address from
> the nodedev-dumpxml output.
>
> The new scsihosttest creates the expected PCI infrastructure on the fly
> since adding files with colons (':') is prohibited. There are multiple
> directories and hosts within each to ensure the search logic worked as
> expected.
>
> Reviewer notes:
>
> Patch 1 is new - it's just forcing the specific adapter.type checking
> Patches 2 & 3 are the former patches 1 & 2 with some edits to adjust
> for new XML syntax (and changed associated structure)
> Patch 4 is new - it's just utilizing the 'LINUX_SYSFS_SCSI_HOST_PREFIX'
> definition rather than using the hardcoded value
> Patches 5 & 6 are new. They handle the optional unique_id value (including
> using the new virNodeDevCapsDefParseIntOptional())
> Patch 7 is similar to the former patch 5 insomuch as it's where the comparison
> of the PCI directory path and unique_id file is made.
> Patch 8 is similar to the former patch 7 insomuch as it's where the link
> is made between the scsi_host host# and the loading/refreshing of the
> scsi_host adapter.
>
> Former patches 3, 4, 6, and 8-11 are no longer used
>
> Please check my XML schema (patch 3) - I think I figured out the right
> syntax to use regarding using either "<name>" or "<parentaddr>" where
> "<parentaddr>" is an element. The syntax passes the make check, but
> it's not an area of expertise for me. Using parentaddr was preferred
> over overloading the parent attribute.
>
> John Ferlan (6):
> getAdapterName: check for SCSI_HOST
> scsi_backend: Use existing LINUX_SYSFS_SCSI_HOST_PREFIX definition
> virutil: Introduce virReadSCSIUniqueId
> Add unique_id to nodedev output
> scsi_host: Introduce virFindSCSIHostByPCI
> getAdapterName: Lookup stable scsi_host
>
> Osier Yang (2):
> virStoragePoolSourceAdapter: Refine the SCSI_HOST adapter name
> storage: Introduce parentaddr into virStoragePoolSourceAdapter
>
> docs/formatnode.html.in | 11 +
> docs/formatstorage.html.in | 130 +++++++--
> docs/schemas/basictypes.rng | 24 +-
> docs/schemas/nodedev.rng | 6 +
> src/conf/node_device_conf.c | 23 +-
> src/conf/node_device_conf.h | 1 +
> src/conf/storage_conf.c | 111 +++++++-
> src/conf/storage_conf.h | 8 +-
> src/libvirt_private.syms | 2 +
> src/node_device/node_device_linux_sysfs.c | 6 +
> src/phyp/phyp_driver.c | 8 +-
> src/storage/storage_backend_scsi.c | 53 +++-
> src/test/test_driver.c | 5 +-
> src/util/virutil.c | 154 +++++++++++
> src/util/virutil.h | 8 +
> tests/Makefile.am | 7 +
> .../pci_8086_27c5_scsi_host_0_unique_id.xml | 8 +
> tests/nodedevxml2xmltest.c | 1 +
> tests/scsihosttest.c | 308 +++++++++++++++++++++
> .../pool-scsi-type-scsi-host-stable.xml | 19 ++
> .../pool-scsi-type-scsi-host-stable.xml | 22 ++
> tests/storagepoolxml2xmltest.c | 1 +
> 22 files changed, 855 insertions(+), 61 deletions(-)
> create mode 100644 tests/nodedevschemadata/pci_8086_27c5_scsi_host_0_unique_id.xml
> create mode 100644 tests/scsihosttest.c
> create mode 100644 tests/storagepoolxml2xmlin/pool-scsi-type-scsi-host-stable.xml
> create mode 100644 tests/storagepoolxml2xmlout/pool-scsi-type-scsi-host-stable.xml
>
More information about the libvir-list
mailing list