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

[Xen-changelog] [linux-2.6.18-xen] [PVSCSI] Fix some issues



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1228827794 0
# Node ID 8761101c3ed59296bec2525264ef619cdd40d0f5
# Parent  eccc622d03af649ed32981d979263893f99d75f4
[PVSCSI] Fix some issues

Signed-off-by: James Harper <james.harper@xxxxxxxxxxxxxxxx>
Signed-off-by: Tomonari Horikoshi <t.horikoshi@xxxxxxxxxxxxxx>
Signed-off-by: Jun Kamada <kama@xxxxxxxxxxxxxx>
---
 drivers/xen/scsiback/emulate.c |  150 +++++++++++++++++++++++------------------
 1 files changed, 85 insertions(+), 65 deletions(-)

diff -r eccc622d03af -r 8761101c3ed5 drivers/xen/scsiback/emulate.c
--- a/drivers/xen/scsiback/emulate.c    Tue Dec 09 13:02:38 2008 +0000
+++ b/drivers/xen/scsiback/emulate.c    Tue Dec 09 13:03:14 2008 +0000
@@ -73,6 +73,11 @@
 #define VSCSI_MAX_SCSI_OP_CODE         256
 static unsigned char bitmap[VSCSI_MAX_SCSI_OP_CODE];
 
+#define NO_EMULATE(cmd) \
+       bitmap[cmd] = VSCSIIF_NEED_CMD_EXEC; \
+       pre_function[cmd] = NULL; \
+       post_function[cmd] = NULL
+
 
 
 /*
@@ -377,74 +382,89 @@ void scsiback_emulation_init(void)
        */
 
        /*
-         This command is Non emulation.
+         Following commands do not require emulation.
        */
-       bitmap[TEST_UNIT_READY] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[TEST_UNIT_READY] = NULL;
-       post_function[TEST_UNIT_READY] = NULL;
-
-       bitmap[REZERO_UNIT] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[REZERO_UNIT] = NULL;
-       post_function[REZERO_UNIT] = NULL;
-
-       bitmap[REQUEST_SENSE] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[REQUEST_SENSE] = NULL;
-       post_function[REQUEST_SENSE] = NULL;
-
-       bitmap[FORMAT_UNIT] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[FORMAT_UNIT] = NULL;
-       post_function[FORMAT_UNIT] = NULL;
-
-       bitmap[READ_BLOCK_LIMITS] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[READ_BLOCK_LIMITS] = NULL;
-       post_function[READ_BLOCK_LIMITS] = NULL;
-
-       bitmap[READ_6] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[READ_6] = NULL;
-       post_function[READ_6] = NULL;
-
-       bitmap[WRITE_6] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[WRITE_6] = NULL;
-       post_function[WRITE_6] = NULL;
-
-       bitmap[WRITE_FILEMARKS] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[WRITE_FILEMARKS] = NULL;
-       post_function[WRITE_FILEMARKS] = NULL;
-
-       bitmap[SPACE] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[SPACE] = NULL;
-       post_function[SPACE] = NULL;
-
-       bitmap[INQUIRY] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[INQUIRY] = NULL;
-       post_function[INQUIRY] = NULL;
-
-       bitmap[ERASE] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[ERASE] = NULL;
-       post_function[ERASE] = NULL;
-
-       bitmap[MODE_SENSE] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[MODE_SENSE] = NULL;
-       post_function[MODE_SENSE] = NULL;
-
-       bitmap[SEND_DIAGNOSTIC] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[SEND_DIAGNOSTIC] = NULL;
-       post_function[SEND_DIAGNOSTIC] = NULL;
-
-       bitmap[READ_CAPACITY] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[READ_CAPACITY] = NULL;
-       post_function[READ_CAPACITY] = NULL;
-
-       bitmap[READ_10] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[READ_10] = NULL;
-       post_function[READ_10] = NULL;
-
-       bitmap[WRITE_10] = VSCSIIF_NEED_CMD_EXEC;
-       pre_function[WRITE_10] = NULL;
-       post_function[WRITE_10] = NULL;
+       NO_EMULATE(TEST_UNIT_READY);       /*0x00*/
+       NO_EMULATE(REZERO_UNIT);           /*0x01*/
+       NO_EMULATE(REQUEST_SENSE);         /*0x03*/
+       NO_EMULATE(FORMAT_UNIT);           /*0x04*/
+       NO_EMULATE(READ_BLOCK_LIMITS);     /*0x05*/
+       /*NO_EMULATE(REASSIGN_BLOCKS);       *//*0x07*/
+       /*NO_EMULATE(INITIALIZE_ELEMENT_STATUS); *//*0x07*/
+       NO_EMULATE(READ_6);                /*0x08*/
+       NO_EMULATE(WRITE_6);               /*0x0a*/
+       /*NO_EMULATE(SEEK_6);                *//*0x0b*/
+       /*NO_EMULATE(READ_REVERSE);          *//*0x0f*/
+       NO_EMULATE(WRITE_FILEMARKS);       /*0x10*/
+       NO_EMULATE(SPACE);                 /*0x11*/
+       NO_EMULATE(INQUIRY);               /*0x12*/
+       /*NO_EMULATE(RECOVER_BUFFERED_DATA); *//*0x14*/
+       /*NO_EMULATE(MODE_SELECT);           *//*0x15*/
+       /*NO_EMULATE(RESERVE);               *//*0x16*/
+       /*NO_EMULATE(RELEASE);               *//*0x17*/
+       /*NO_EMULATE(COPY);                  *//*0x18*/
+       NO_EMULATE(ERASE);                 /*0x19*/
+       NO_EMULATE(MODE_SENSE);            /*0x1a*/
+       /*NO_EMULATE(START_STOP);            *//*0x1b*/
+       /*NO_EMULATE(RECEIVE_DIAGNOSTIC);    *//*0x1c*/
+       NO_EMULATE(SEND_DIAGNOSTIC);       /*0x1d*/
+       /*NO_EMULATE(ALLOW_MEDIUM_REMOVAL);  *//*0x1e*/
+
+       /*NO_EMULATE(SET_WINDOW);            *//*0x24*/
+       NO_EMULATE(READ_CAPACITY);         /*0x25*/
+       NO_EMULATE(READ_10);               /*0x28*/
+       NO_EMULATE(WRITE_10);              /*0x2a*/
+       /*NO_EMULATE(SEEK_10);               *//*0x2b*/
+       /*NO_EMULATE(POSITION_TO_ELEMENT);   *//*0x2b*/
+       /*NO_EMULATE(WRITE_VERIFY);          *//*0x2e*/
+       /*NO_EMULATE(VERIFY);                *//*0x2f*/
+       /*NO_EMULATE(SEARCH_HIGH);           *//*0x30*/
+       /*NO_EMULATE(SEARCH_EQUAL);          *//*0x31*/
+       /*NO_EMULATE(SEARCH_LOW);            *//*0x32*/
+       /*NO_EMULATE(SET_LIMITS);            *//*0x33*/
+       /*NO_EMULATE(PRE_FETCH);             *//*0x34*/
+       /*NO_EMULATE(READ_POSITION);         *//*0x34*/
+       /*NO_EMULATE(SYNCHRONIZE_CACHE);     *//*0x35*/
+       /*NO_EMULATE(LOCK_UNLOCK_CACHE);     *//*0x36*/
+       /*NO_EMULATE(READ_DEFECT_DATA);      *//*0x37*/
+       /*NO_EMULATE(MEDIUM_SCAN);           *//*0x38*/
+       /*NO_EMULATE(COMPARE);               *//*0x39*/
+       /*NO_EMULATE(COPY_VERIFY);           *//*0x3a*/
+       /*NO_EMULATE(WRITE_BUFFER);          *//*0x3b*/
+       /*NO_EMULATE(READ_BUFFER);           *//*0x3c*/
+       /*NO_EMULATE(UPDATE_BLOCK);          *//*0x3d*/
+       /*NO_EMULATE(READ_LONG);             *//*0x3e*/
+       /*NO_EMULATE(WRITE_LONG);            *//*0x3f*/
+       /*NO_EMULATE(CHANGE_DEFINITION);     *//*0x40*/
+       /*NO_EMULATE(WRITE_SAME);            *//*0x41*/
+       /*NO_EMULATE(READ_TOC);              *//*0x43*/
+       /*NO_EMULATE(LOG_SELECT);            *//*0x4c*/
+       /*NO_EMULATE(LOG_SENSE);             *//*0x4d*/
+       /*NO_EMULATE(MODE_SELECT_10);        *//*0x55*/
+       /*NO_EMULATE(RESERVE_10);            *//*0x56*/
+       /*NO_EMULATE(RELEASE_10);            *//*0x57*/
+       /*NO_EMULATE(MODE_SENSE_10);         *//*0x5a*/
+       /*NO_EMULATE(PERSISTENT_RESERVE_IN); *//*0x5e*/
+       /*NO_EMULATE(PERSISTENT_RESERVE_OUT); *//*0x5f*/
+       /*           REPORT_LUNS             *//*0xa0*//*Full emulaiton*/
+       /*NO_EMULATE(MOVE_MEDIUM);           *//*0xa5*/
+       /*NO_EMULATE(EXCHANGE_MEDIUM);       *//*0xa6*/
+       /*NO_EMULATE(READ_12);               *//*0xa8*/
+       /*NO_EMULATE(WRITE_12);              *//*0xaa*/
+       /*NO_EMULATE(WRITE_VERIFY_12);       *//*0xae*/
+       /*NO_EMULATE(SEARCH_HIGH_12);        *//*0xb0*/
+       /*NO_EMULATE(SEARCH_EQUAL_12);       *//*0xb1*/
+       /*NO_EMULATE(SEARCH_LOW_12);         *//*0xb2*/
+       /*NO_EMULATE(READ_ELEMENT_STATUS);   *//*0xb8*/
+       /*NO_EMULATE(SEND_VOLUME_TAG);       *//*0xb6*/
+       /*NO_EMULATE(WRITE_LONG_2);          *//*0xea*/
+       /*NO_EMULATE(READ_16);               *//*0x88*/
+       /*NO_EMULATE(WRITE_16);              *//*0x8a*/
+       /*NO_EMULATE(VERIFY_16);              *//*0x8f*/
+       /*NO_EMULATE(SERVICE_ACTION_IN);     *//*0x9e*/
 
        /*
-         This command is Full emulation.
+         Following commands require emulation.
        */
        pre_function[REPORT_LUNS] = __report_luns;
        bitmap[REPORT_LUNS] = (VSCSIIF_NEED_EMULATE_REQBUF | 

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.