c733e97 docs: Fix XML schema handling of LUN address in hostdev tag

4 files Authored by Eric Farman 8 years ago, Committed by John Ferlan 8 years ago,
    docs: Fix XML schema handling of LUN address in hostdev tag
    
    Defining a domain with a SCSI disk attached via a hostdev
    tag and a source address unit value longer than two digits
    causes an error when editing the domain with virsh edit,
    even if no changes are made to the domain definition.
    The error suggests invalid XML, somewhere:
    
      # virsh edit lmb_guest
      error: XML document failed to validate against schema:
      Unable to validate doc against /usr/local/share/libvirt/schemas/domain.rng
      Extra element devices in interleave
      Element domain failed to validate content
    
    The virt-xml-validate tool fails with a similar error:
    
      # virt-xml-validate lmb_guest.xml
      Relax-NG validity error : Extra element devices in interleave
      lmb_guest.xml:17: element devices: Relax-NG validity error :
      Element domain failed to validate content
      lmb_guest.xml fails to validate
    
    The hostdev tag requires a source address to be specified,
    which includes bus, target, and unit address attributes.
    According to the SCSI Architecture Model spec (section
    4.9 of SAM-2), a LUN address is 64 bits and thus could be
    up to 20 decimal digits long.  Unfortunately, the XML
    schema limits this string to just two digits.  Similarly,
    the target field can be up to 32 bits in length, which
    would be 10 decimal digits.
    
      # lsscsi -xx
      [0:0:19:0x4022401100000000]  disk    IBM      2107900          3.44 /dev/sda
      # lsscsi
      [0:0:19:1074872354]disk    IBM      2107900          3.44  /dev/sda
      # cat lmb_guest.xml
      <domain type='kvm'>
        <name>lmb_guest</name>
        <memory unit='MiB'>1024</memory>
      ...trimmed...
        <devices>
          <controller type='scsi' model='virtio-scsi' index='0'/>
          <hostdev mode='subsystem' type='scsi'>
            <source>
              <adapter name='scsi_host0'/>
              <address bus='0' target='19' unit='1074872354'/>
            </source>
          </hostdev>
      ...trimmed...
    
    Since the reference unit and target fields are used in
    several places in the XML schema, create a separate one
    specific for SCSI Logical Units that will permit the
    greater length.  This permits both the validation utility
    and the virsh edit command to succeed when a hostdev
    tag is included.
    
    Signed-off-by: Eric Farman <farman@linux.vnet.ibm.com>
    Reviewed-by: Matthew Rosato <mjrosato@linux.vnet.ibm.com>
    Reviewed-by: Stefan Zimmermann <stzi@linux.vnet.ibm.com>
    Reviewed-by: Boris Fiuczynski <fiuczy@linux.vnet.ibm.com>
    
        
file modified
+8 -1
file modified
+12 -2
file modified
+1 -0