1. 23 6月, 2015 8 次提交
    • E
      docs: Correct typos in scsi hostdev and address elements · d10a5f58
      Eric Farman 提交于
      The type='scsi' parameter of an address element is ignored
      if placed within a hostdev section, and rejected by the XML
      schema used by virt-xml-validate. Remove it from the doc,
      and correct a typo in the remaining address arguments.
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      Reviewed-by: NMatthew Rosato <mjrosato@linux.vnet.ibm.com>
      Reviewed-by: NStefan Zimmermann <stzi@linux.vnet.ibm.com>
      Reviewed-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      d10a5f58
    • E
      docs: Fix XML schema handling of LUN address in hostdev tag · c733e973
      Eric Farman 提交于
      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: NEric Farman <farman@linux.vnet.ibm.com>
      Reviewed-by: NMatthew Rosato <mjrosato@linux.vnet.ibm.com>
      Reviewed-by: NStefan Zimmermann <stzi@linux.vnet.ibm.com>
      Reviewed-by: NBoris Fiuczynski <fiuczy@linux.vnet.ibm.com>
      c733e973
    • E
      Convert SCSI logical unit from unsigned int to unsigned long long · 22b8a617
      Eric Farman 提交于
      The SCSI Architecture Model defines a logical unit address
      as 64-bits in length, so change the field accordingly so
      that the entire value could be stored.
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      22b8a617
    • E
      Print SCSI address attributes bus, target, unit as unsigned integer · 3b7983ad
      Eric Farman 提交于
      The address elements are all unsigned integers, so we should
      use the appropriate print directive when printing it.
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      3b7983ad
    • E
      Read SCSI address attributes bus, target, unit as positive integer · f714f528
      Eric Farman 提交于
      The SCSI address element attributes bus, target, and unit are expected
      to be positive values, so make sure no one provides a negative value since
      the value is stored as an unsigned.
      Signed-off-by: NEric Farman <farman@linux.vnet.ibm.com>
      f714f528
    • E
      qemu: simplify json parsing · 40783db3
      Eric Blake 提交于
      Rather than grabbing an arbitrary JSON value and then checking
      if it has the right type, we might as well request the correct
      type to begin with.
      
      * src/qemu/qemu_monitor_json.c (qemuMonitorJSONIOProcessEvent)
      (qemuMonitorJSONCommandWithFd, qemuMonitorJSONHandleGraphics)
      (qemuMonitorJSONGetStatus, qemuMonitorJSONExtractCPUInfo)
      (qemuMonitorJSONGetVirtType, qemuMonitorJSONGetBalloonInfo)
      (qemuMonitorJSONGetMemoryStats)
      (qemuMonitorJSONDevGetBlockExtent)
      (qemuMonitorJSONGetOneBlockStatsInfo)
      (qemuMonitorJSONGetAllBlockStatsInfo)
      (qemuMonitorJSONBlockStatsUpdateCapacityOne)
      (qemuMonitorJSONBlockStatsUpdateCapacity)
      (qemuMonitorJSONGetBlockExtent)
      (qemuMonitorJSONGetMigrationStatusReply)
      (qemuMonitorJSONGetDumpGuestMemoryCapability)
      (qemuMonitorJSONAddFd, qemuMonitorJSONQueryRxFilterParse)
      (qemuMonitorJSONExtractChardevInfo)
      (qemuMonitorJSONDiskNameLookupOne)
      (qemuMonitorJSONDiskNameLookup)
      (qemuMonitorJSONGetAllBlockJobInfo)
      (qemuMonitorJSONBlockIoThrottleInfo, qemuMonitorJSONGetVersion)
      (qemuMonitorJSONGetMachines, qemuMonitorJSONGetCPUDefinitions)
      (qemuMonitorJSONGetCommands, qemuMonitorJSONGetEvents)
      (qemuMonitorJSONGetKVMState, qemuMonitorJSONGetObjectTypes)
      (qemuMonitorJSONGetObjectListPaths)
      (qemuMonitorJSONGetObjectProps, qemuMonitorJSONGetTargetArch)
      (qemuMonitorJSONGetMigrationCapabilities)
      (qemuMonitorJSONGetStringArray, qemuMonitorJSONAttachCharDev)
      (qemuMonitorJSONGetCPUx86Data, qemuMonitorJSONGetIOThreads)
      (qemuMonitorJSONGetMemoryDeviceInfo): Use shorter idioms.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      40783db3
    • E
      json: make it easier to type-check when getting from object · 58fd6703
      Eric Blake 提交于
      While working in qemu_monitor_json, I repeatedly found myself
      getting a value then checking if it was an object.  Add some
      wrappers to make this task easier.
      
      * src/util/virjson.c (virJSONValueObjectGetByType)
      (virJSONValueObjectGetObject, virJSONValueObjectGetArray): New
      functions.
      (virJSONValueObjectGetString, virJSONValueObjectGetNumberInt)
      (virJSONValueObjectGetNumberUint)
      (virJSONValueObjectGetNumberLong)
      (virJSONValueObjectGetNumberUlong)
      (virJSONValueObjectGetNumberDouble)
      (virJSONValueObjectGetBoolean): Simplify.
      (virJSONValueIsNull): Change return type.
      * src/util/virjson.h: Reflect changes.
      * src/libvirt_private.syms (virjson.h): Export them.
      * tests/jsontest.c (testJSONLookup): New test.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      58fd6703
    • E
      json: fully parse input string · ceb496e5
      Eric Blake 提交于
      I was adding a JSON test, and was shocked to find out our parser
      treated the input string of "1" as invalid JSON.  It turns out
      that YAJL specifically documents that it buffers input, and that
      if the last input read could be a prefix to a longer token, then
      you have to explicitly tell the parser that the buffer has ended
      before that token will be processed.
      
      It doesn't help that yajl 2 renamed the function from what it was
      in yajl 1.
      
      * src/util/virjson.c (virJSONValueFromString): Complete parse, in
      case buffer ends in possible token prefix.
      * tests/jsontest.c (mymain): Expose the problem.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      ceb496e5
  2. 22 6月, 2015 6 次提交
  3. 20 6月, 2015 1 次提交
    • I
      libxl: avoid freeing an uninitialised bitmap · cc99d240
      Ian Campbell 提交于
      If vm->def->cputune.nvcpupin is 0 in libxlDomainSetVcpuAffinities (as
      seems to be the case on arm) then the VIR_FREE after cleanup: would be
      operating on an uninitialised pointer in map.map.
      
      Fix this by using libxl_bitmap_init and libxl_bitmap_dispose in the
      appropriate places (like VIR_FREE, libxl_bitmap_dispose is also
      idempotent, so there is no double free on exit from the loop).
      
      libxl_bitmap_dispose is slightly preferable since it also sets
      map.size back to 0, avoiding a potential source of confusion.
      
      This fixes the crashes we've been seeing in the Xen automated tests on
      ARM.
      
      I had a glance at the handful of other users of libxl_bitmap and none
      of them looked to have a similar issue.
      Signed-off-by: NIan Campbell <ian.campbell@citrix.com>
      cc99d240
  4. 19 6月, 2015 25 次提交