qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Summary of CD, DVD passthrough tests with -drive if=scsi


From: Thomas Schmitt
Subject: [Qemu-devel] Summary of CD, DVD passthrough tests with -drive if=scsi
Date: Sun, 06 Nov 2011 12:26:54 +0100

Hi,

since i had to give up the plan to test BD burning, i now post the
first summary of passthrough testing on base of  if=scsi .

Next i will try to follow Paolo Bonzini's proposal to use if=virtio.

-------------------------------------------------------------------------

List of successes and failures with various CD and DVD use cases
on an internal SATA drive at host Debian 6.0.2
  Linux ... 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64
with guest Debian 6.0.3
  Linux ... 2.6.32-5-686 #1 SMP Mon Oct 3 04:15:24 UTC 2011 i686


qemu source is a git clone obtained on November 2 by
  git clone git://git.qemu.org/qemu.git

File VERSION has date Nov 2 13:41 (+0100)
  $ cat VERSION
  0.15.90
  $ git describe
  fatal: No annotated tags can describe 
'e072ea2fd8fdceef64159b9596d3c15ce01bea91'.
  However, there were unannotated tags: try --tags.
  $ git describe --tags
  v1.0-rc0


qemu start:

  .../x86_64-softmmu/qemu-system-x86_64 \
     -L .../pc-bios \
     -enable-kvm \
     -nographic \
     -m 512 \ 
     -net nic,model=ne2k_pci \
     -net user,hostfwd=tcp::5557-:22 \
     -hda /dvdbuffer/i386-install.qemu \
     -drive file=/dev/sg2,if=scsi \
     -cdrom /dvdbuffer/pseudo_drive

-------------------------------------------------------------------------

Successes:

  All media types

    Tray loading and ejecting.

  CD-RW (and most probably CD-R)

    Writing a session with a single track with write type TAO.
    As first session and as add-on session.

  DVD+RW

    Writing if SET STREAMING is omitted.

  DVD-RW (and most probably DVD-R)

    Write type Incremental (aka Packet) if SET STREAMING is omitted.

    Blanking.

    Writing to thoroughly formatted DVD-RW if SET STREAMING is omitted.

  DVD+R

    Writing sessions without using RESERVE TRACK, if SET STREAMING is omitted.

    Closing of medium.


-------------------------------------------------------------------------

Failures:

I count and classify them by these poetic category names:

  1  HOST CRASHER   kernel Oops and crash of the host system
  2  DRIVE FREEZER  makes the drive unusable on the host until host reboot
  4  GUEST KILLER   makes guest freeze or qemu abort
  1  MEDIUM KILLER  makes medium unusable (at least for current libburn)
  2  SHOWSTOPPER    prevents usage of drive or medium
  2  ANNOYING       severely hampers usage of medium
  1  UGLY           deprives user of less important information


  USB attached drive

    * HOST CRASHER
    * SHOWSTOPPER
    An USB attached drive does not perform any SCSI command,
    qemu ioctl() gets "No such device",
    host gets kernel Oops when guest is shut down,
    host shell sessions are frozen until hardware reset button.

  CD-RW (and most probably CD-R)

    * DRIVE FREEZER
    * GUEST KILLER
    Writing a first session to blank media with write type SAO.
    The guest freezes. The drive gets unusable by the host system
    until host reboot.
      SEND CUE SHEET
      5d 00 00 00 00 00 00 00 20 00 
      To drive: 32b
      41 00 00 01 00 00 00 00 41 01 00 10 00 00 00 00 41 01 01 10
      00 00 02 00 41 aa 01 01 00 00 35 30 
    

  DVD in general

    * DRIVE FREEZER
    * GUEST KILLER
    Guest freezes, qemu goes to 100% CPU, after
      SET STREAMING
      b6 00 00 00 00 00 00 00 00 00 1c 00 
      To drive: 28b
      00 00 00 00 00 00 00 00 00 23 04 88 10 00 00 00 00 00 03 e8
      10 00 00 00 00 00 03 e8 
    The drive is unusable by the host afterwards

    * ANNOYING
    Guest SG_IO timeout with READ DISC STRUCTURE formats
    0x04 , 0x11 , 0x0e , 0x10.
      READ DISC STRUCTURE
      ad 00 00 00 00 00 00 04 00 04 00 00 
      READ DISC STRUCTURE
      ad 00 00 00 00 00 00 11 00 04 00 00
      READ DISC STRUCTURE
      ad 00 00 00 00 00 00 0e 00 04 00 00 
      READ DISC STRUCTURE
      ad 00 00 00 00 00 00 10 00 04 00 00 

  DVD+RW

    * SHOWSTOPPER
    Failure to write to unformatted or partly formatted DVD+RW.
      FORMAT UNIT
      04 11 00 00 00 00 
      To drive: 12b
      00 02 00 08 ff ff ff ff 98 00 00 00
      +++ sense data = F0 00 0B 00 00 00 00 0A 00 00 00 00 00 00 00 00 00 00
      +++ key=B  asc=00h  ascq=00h   (   488 ms)

  DVD-RW

    * GUEST KILLER
    Guest freezes with DVD-RW write type DAO. qemu is on 100 % CPU.
    Most probably after RESERVE TRACK, although this command is not shown
    by the SCSI log. But the command before it is shown and the medium
    has inconsistent knowledge of the desired track size.

    * ANNOYING
    Failure to format sequential DVD-RW, and to write to partially
    formatted DVD-RW.

    * UGLY
    Failure to deliver progress of Blanking DVD-RW via REQUEST SENSE.
      REQUEST SENSE
      03 00 00 00 12 00 
      From drive: 18b
      f0 00 00 00 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 
           0 ms
    TEST UNIT READY delivers the desired information.

  DVD+R

    * GUEST KILLER
    * MEDIUM KILLER
    Guest freezes, medium has unwritten open reserved track after
      RESERVE TRACK
      53 00 00 00 00 00 00 0f 30 00

-------------------------------------------------------------------------

Proposals:

  Mode page 2A of emulated ATAPI DVD-ROM should have page length 0x14
  like SCSI CD-ROM, rather than 0x12. (Just add two 0-bytes to its end
  and adkust the size dependent fields.)

  MODE SENSE(6) should be thrown out of ATAPI DVD-ROM emulation.
  Its implementation is wrong. It is not specified in the ATAPI list
  of MMC-2. MMC-5 prescribes to use MODE SENSE(10).

  Let passthrough operate on /dev/sr too.
  Using /dev/sg as superuser makes the hard disk prone to be used
  as qemu -drive by mistake of the user.

-------------------------------------------------------------------------

Have a nice day :)

Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]