1. 03 12月, 2012 2 次提交
  2. 01 12月, 2012 6 次提交
  3. 30 11月, 2012 14 次提交
  4. 29 11月, 2012 13 次提交
  5. 28 11月, 2012 5 次提交
    • D
      virtio-scsi: Fix subtle (guest) endian bug · 863d1050
      David Gibson 提交于
      The virtio-scsi config space is, by specification, in guest endian (which
      is ill-defined, but there you go).  In virtio_scsi_get_config() we set up
      all the fields in there, using stl_raw().  Which is a problem for the
      max_channel and max_target fields, which are 16-bit, not 32-bit.  For
      little-endian targets we get away with it by accident, since the first
      two bytes will still be correct, and the extra two bytes written (with
      zeroes) will be overwritten correctly by the next store.
      
      But for big-endian guests, this means the max_target field ends up as zero,
      which means the guest will only recognize a single disk on the virtio-scsi
      bus.  This patch fixes the problem.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Paul 'Rusty' Russell <rusty@rustcorp.com.au>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      863d1050
    • D
      virtio-scsi: Fix some endian bugs with virtio-scsi · 474ee55a
      David Gibson 提交于
      The virtio-scsi specification does not specify the correct endianness for
      fields in the request structure.  It's therefore best to assume that it is
      "guest native" endian since that's the (stupid and poorly defined) norm in
      virtio.
      
      However, the qemu device for virtio-scsi has no byteswaps at all, and so
      will break if the guest has different endianness from the host.  This patch
      fixes it by adding tswap() calls for the sense_len and resid fields in
      the request structure.  In theory status_qualifier needs swaps as well,
      but that field is never actually touched.  The tag field is a uint64_t, but
      since its value is completely arbitrary, it might as well be uint8_t[8]
      and so it does not need swapping.
      
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Paul 'Rusty' Russell <rusty@rustcorp.com.au>
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      474ee55a
    • P
      iscsi: do not assume device is zero initialized · f807ecd5
      Peter Lieven 提交于
      Without any complex checks we can't assume that an
      iscsi target is initialized to zero.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      f807ecd5
    • P
      iscsi: fix deadlock during login · e829b0bb
      Peter Lieven 提交于
      If the connection is interrupted before the first login is successfully
      completed qemu-kvm is waiting forever in qemu_aio_wait().
      
      This is fixed by performing an sync login to the target. If the
      connection breaks after the first successful login errors are
      handled internally by libiscsi.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e829b0bb
    • P
      iscsi: fix segfault in url parsing · 8da1e18b
      Peter Lieven 提交于
      If an invalid URL is specified iscsi_get_error(iscsi) is called
      with iscsi == NULL.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      8da1e18b