scsi: target: core: Cleanup cmd flag bits
[linux-2.6-microblaze.git] / include / target / target_core_base.h
index 54dcc0e..fbe5b5b 100644 (file)
@@ -127,25 +127,25 @@ enum transport_state_table {
 
 /* Used for struct se_cmd->se_cmd_flags */
 enum se_cmd_flags_table {
-       SCF_SUPPORTED_SAM_OPCODE        = 0x00000001,
-       SCF_TRANSPORT_TASK_SENSE        = 0x00000002,
-       SCF_EMULATED_TASK_SENSE         = 0x00000004,
-       SCF_SCSI_DATA_CDB               = 0x00000008,
-       SCF_SCSI_TMR_CDB                = 0x00000010,
-       SCF_FUA                         = 0x00000080,
-       SCF_SE_LUN_CMD                  = 0x00000100,
-       SCF_BIDI                        = 0x00000400,
-       SCF_SENT_CHECK_CONDITION        = 0x00000800,
-       SCF_OVERFLOW_BIT                = 0x00001000,
-       SCF_UNDERFLOW_BIT               = 0x00002000,
-       SCF_ALUA_NON_OPTIMIZED          = 0x00008000,
-       SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC = 0x00020000,
-       SCF_COMPARE_AND_WRITE           = 0x00080000,
-       SCF_PASSTHROUGH_PROT_SG_TO_MEM_NOALLOC = 0x00200000,
-       SCF_ACK_KREF                    = 0x00400000,
-       SCF_USE_CPUID                   = 0x00800000,
-       SCF_TASK_ATTR_SET               = 0x01000000,
-       SCF_TREAT_READ_AS_NORMAL        = 0x02000000,
+       SCF_SUPPORTED_SAM_OPCODE                = (1 << 0),
+       SCF_TRANSPORT_TASK_SENSE                = (1 << 1),
+       SCF_EMULATED_TASK_SENSE                 = (1 << 2),
+       SCF_SCSI_DATA_CDB                       = (1 << 3),
+       SCF_SCSI_TMR_CDB                        = (1 << 4),
+       SCF_FUA                                 = (1 << 5),
+       SCF_SE_LUN_CMD                          = (1 << 6),
+       SCF_BIDI                                = (1 << 7),
+       SCF_SENT_CHECK_CONDITION                = (1 << 8),
+       SCF_OVERFLOW_BIT                        = (1 << 9),
+       SCF_UNDERFLOW_BIT                       = (1 << 10),
+       SCF_ALUA_NON_OPTIMIZED                  = (1 << 11),
+       SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC       = (1 << 12),
+       SCF_COMPARE_AND_WRITE                   = (1 << 13),
+       SCF_PASSTHROUGH_PROT_SG_TO_MEM_NOALLOC  = (1 << 14),
+       SCF_ACK_KREF                            = (1 << 15),
+       SCF_USE_CPUID                           = (1 << 16),
+       SCF_TASK_ATTR_SET                       = (1 << 17),
+       SCF_TREAT_READ_AS_NORMAL                = (1 << 18),
 };
 
 /*
@@ -488,7 +488,7 @@ struct se_cmd {
        /* Only used for internal passthrough and legacy TCM fabric modules */
        struct se_session       *se_sess;
        struct se_tmr_req       *se_tmr_req;
-       struct list_head        se_cmd_list;
+       struct llist_node       se_cmd_list;
        struct completion       *free_compl;
        struct completion       *abrt_compl;
        const struct target_core_fabric_ops *se_tfo;
@@ -765,9 +765,15 @@ struct se_dev_stat_grps {
        struct config_group scsi_lu_group;
 };
 
+struct se_cmd_queue {
+       struct llist_head       cmd_list;
+       struct work_struct      work;
+};
+
 struct se_device_queue {
        struct list_head        state_list;
        spinlock_t              lock;
+       struct se_cmd_queue     sq;
 };
 
 struct se_device {