• O
    storage: Introduce parentaddr into virStoragePoolSourceAdapter · a4bd62ad
    Osier Yang 提交于
    Between reboots and kernel reloads, the SCSI host number used for SCSI
    storage pools may change requiring modification to the storage pool XML
    in order to use a specific SCSI host adapter.
    
    This patch introduces the "parentaddr" element and "unique_id" attribute
    for the SCSI host adapter in order to uniquely identify the adapter
    between reboots and kernel reloads. For now the goal is to only parse
    and format the XML. Both will be required to be provided in order to
    uniquely identify the desired SCSI host.
    
    The new XML is expected to be as follows:
    
      <adapter type='scsi_host'>
        <parentaddr unique_id='3'>
          <address domain='0x0000' bus='0x00' slot='0x1f' func='0x2'/>
        </parentaddr>
      </adapter>
    
    where "parentaddr" is the parent device of the SCSI host using the PCI
    address on which the device resides and the value from the unique_id file
    for the device. Both the PCI address and unique_id values will be used
    to traverse the /sys/class/scsi_host/ directories looking at each link
    to match the PCI address reformatted to the directory link format where
    "domain:bus:slot:function" is found.  Then for each matching directory
    the unique_id file for the scsi_host will be used to match the unique_id
    value in the xml.
    
    For a PCI address listed above, this will be formatted to "0000:00:1f.2"
    and the links in /sys/class/scsi_host will be used to find the host#
    to be used for the 'scsi_host' device. Each entry is a link to the
    /sys/bus/pci/devices directories, e.g.:
    
    %  ls -al /sys/class/scsi_host/host2
    lrwxrwxrwx. 1 root root 0 Jun  1 00:22 /sys/class/scsi_host/host2 -> ../../devices/pci0000:00/0000:00:1f.2/ata3/host2/scsi_host/host2
    
    % cat /sys/class/scsi_host/host2/unique_id
    3
    
    The "parentaddr" and "name" attributes are mutually exclusive to identify
    the SCSI host number. Use of the "parentaddr" element will be the preferred
    mechanism.
    
    This patch only supports to parse and format the XMLs. Later patches will
    add code to find out the scsi host number.
    a4bd62ad
storage_conf.c 71.5 KB