usb-msc: move cdb dispatch to block.c
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 16 Nov 2011 12:02:53 +0000 (13:02 +0100)
committerKevin O'Connor <kevin@koconnor.net>
Fri, 18 Nov 2011 02:21:02 +0000 (21:21 -0500)
virtio-scsi's low-level dispatch code is exactly the same as USB's,
since in the end both are actually SCSI HBAs.  Move it to common code.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
src/block.c
src/usb-msc.c

index f7e7851b18b060586977e19eb282acbecb780dca..ac9eb26e090da82c1c07a0be3fcbb5c624c57fb1 100644 (file)
@@ -11,8 +11,8 @@
 #include "util.h" // dprintf
 #include "ata.h" // process_ata_op
 #include "ahci.h" // process_ahci_op
-#include "usb-msc.h" // process_usb_op
 #include "virtio-blk.h" // process_virtio_op
+#include "blockcmd.h" // cdb_*
 
 u8 FloppyCount VAR16VISIBLE;
 u8 CDCount;
@@ -276,6 +276,28 @@ map_floppy_drive(struct drive_s *drive_g)
  * 16bit calling interface
  ****************************************************************/
 
+int
+process_scsi_op(struct disk_op_s *op)
+{
+    if (!CONFIG_USB_MSC)
+        return 0;
+    switch (op->command) {
+    case CMD_READ:
+        return cdb_read(op);
+    case CMD_WRITE:
+        return cdb_write(op);
+    case CMD_FORMAT:
+    case CMD_RESET:
+    case CMD_ISREADY:
+    case CMD_VERIFY:
+    case CMD_SEEK:
+        return DISK_RET_SUCCESS;
+    default:
+        op->count = 0;
+        return DISK_RET_EPARAM;
+    }
+}
+
 // Execute a disk_op request.
 int
 process_op(struct disk_op_s *op)
@@ -293,12 +315,12 @@ process_op(struct disk_op_s *op)
         return process_ramdisk_op(op);
     case DTYPE_CDEMU:
         return process_cdemu_op(op);
-    case DTYPE_USB:
-        return process_usb_op(op);
     case DTYPE_VIRTIO:
        return process_virtio_op(op);
     case DTYPE_AHCI:
        return process_ahci_op(op);
+    case DTYPE_USB:
+        return process_scsi_op(op);
     default:
         op->count = 0;
         return DISK_RET_EPARAM;
index 33ce7da17e04b59adc826e4d5e98aa8a9de53dc4..4a09972b5f63381aaa592df63fd31629092c8a7f 100644 (file)
@@ -118,34 +118,6 @@ fail:
 }
 
 
-/****************************************************************
- * Drive ops
- ****************************************************************/
-
-// 16bit command demuxer for ATAPI cdroms.
-int
-process_usb_op(struct disk_op_s *op)
-{
-    if (!CONFIG_USB_MSC)
-        return 0;
-    switch (op->command) {
-    case CMD_READ:
-        return cdb_read(op);
-    case CMD_WRITE:
-        return cdb_write(op);
-    case CMD_FORMAT:
-    case CMD_RESET:
-    case CMD_ISREADY:
-    case CMD_VERIFY:
-    case CMD_SEEK:
-        return DISK_RET_SUCCESS;
-    default:
-        op->count = 0;
-        return DISK_RET_EPARAM;
-    }
-}
-
-
 /****************************************************************
  * Setup
  ****************************************************************/