simliar -> similar Signed-off-by: Frediano Ziglio <fziglio@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
 | 
						|
qemu usb storage emulation
 | 
						|
--------------------------
 | 
						|
 | 
						|
QEMU has three devices for usb storage emulation.
 | 
						|
 | 
						|
Number one emulates the classic bulk-only transport protocol which is
 | 
						|
used by 99% of the usb sticks on the market today and is called
 | 
						|
"usb-storage".  Usage (hooking up to xhci, other host controllers work
 | 
						|
too):
 | 
						|
 | 
						|
  qemu ${other_vm_args}                                \
 | 
						|
       -drive if=none,id=stick,file=/path/to/file.img  \
 | 
						|
       -device nec-usb-xhci,id=xhci                    \
 | 
						|
       -device usb-storage,bus=xhci.0,drive=stick
 | 
						|
 | 
						|
 | 
						|
Number two is the newer usb attached scsi transport.  This one doesn't
 | 
						|
automagically create a scsi disk, so you have to explicitly attach one
 | 
						|
manually.  Multiple logical units are supported.  Here is an example
 | 
						|
with tree logical units:
 | 
						|
 | 
						|
  qemu ${other_vm_args}                                                \
 | 
						|
       -drive if=none,id=uas-disk1,file=/path/to/file1.img             \
 | 
						|
       -drive if=none,id=uas-disk2,file=/path/to/file2.img             \
 | 
						|
       -drive if=none,id=uas-cdrom,media=cdrom,file=/path/to/image.iso \
 | 
						|
       -device nec-usb-xhci,id=xhci                                    \
 | 
						|
       -device usb-uas,id=uas,bus=xhci.0                               \
 | 
						|
       -device scsi-hd,bus=uas.0,scsi-id=0,lun=0,drive=uas-disk1       \
 | 
						|
       -device scsi-hd,bus=uas.0,scsi-id=0,lun=1,drive=uas-disk2       \
 | 
						|
       -device scsi-cd,bus=uas.0,scsi-id=0,lun=5,drive=uas-cdrom
 | 
						|
 | 
						|
 | 
						|
Number three emulates the classic bulk-only transport protocol too.
 | 
						|
It's called "usb-bot".  It shares most code with "usb-storage", and
 | 
						|
the guest will not be able to see the difference.  The qemu command
 | 
						|
line interface is similar to usb-uas though, i.e. no automatic scsi
 | 
						|
disk creation.  It also features support for up to 16 LUNs.  The LUN
 | 
						|
numbers must be continuous, i.e. for three devices you must use 0+1+2.
 | 
						|
The 0+1+5 numbering from the "usb-uas" example isn't going to work
 | 
						|
with "usb-bot".
 | 
						|
 | 
						|
Starting with qemu version 2.7 usb-bot and usb-uas devices can be
 | 
						|
hotplugged.  In the hotplug case they are added with "attached =
 | 
						|
false" so the guest will not see the device until the "attached"
 | 
						|
property is explicitly set to true.  That allows to attach one or more
 | 
						|
scsi devices before making the device visible to the guest, i.e. the
 | 
						|
workflow looks like this:
 | 
						|
 | 
						|
   (1) device-add usb-bot,id=foo
 | 
						|
   (2) device-add scsi-{hd,cd},bus=foo.0,lun=0
 | 
						|
   (2b) optionally add more devices (luns 1 ... 15).
 | 
						|
   (3) scripts/qmp/qom-set foo.attached = true
 | 
						|
 | 
						|
enjoy,
 | 
						|
  Gerd
 | 
						|
 | 
						|
--
 | 
						|
Gerd Hoffmann <kraxel@redhat.com>
 |