[SCSI] target: Minor sparse warning fixes and annotations
authorDan Carpenter <error27@gmail.com>
Mon, 14 Mar 2011 11:06:01 +0000 (04:06 -0700)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 23 Mar 2011 16:36:29 +0000 (11:36 -0500)
This patch addresses the majority of sparse warnings and adds
proper locking annotations.  It also fixes the dubious one-bit signed
bitfield, for which the signed one-bit types can be 0 or -1 which can
cause a problem if someone ever checks if (foo->lu_gp_assoc == 1).
The current code is fine because everyone just checks zero vs non-zero.
But Sparse complains about it so lets change it.  The warnings look like
this:

include/target/target_core_base.h:228:26: error: dubious one-bit signed bitfield

Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Fubo Chen <fubo.chen@gmail.com>
Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/target/target_core_device.c
drivers/target/target_core_fabric_lib.c
drivers/target/target_core_pscsi.c
drivers/target/target_core_rd.h
drivers/target/target_core_transport.c
include/target/target_core_base.h
include/target/target_core_fabric_ops.h
include/target/target_core_transport.h

index 9e182bd..3fb8e32 100644 (file)
@@ -589,6 +589,7 @@ static void core_export_port(
  *     Called with struct se_device->se_port_lock spinlock held.
  */
 static void core_release_port(struct se_device *dev, struct se_port *port)
  *     Called with struct se_device->se_port_lock spinlock held.
  */
 static void core_release_port(struct se_device *dev, struct se_port *port)
+       __releases(&dev->se_port_lock) __acquires(&dev->se_port_lock)
 {
        /*
         * Wait for any port reference for PR ALL_TG_PT=1 operation
 {
        /*
         * Wait for any port reference for PR ALL_TG_PT=1 operation
index a3c695a..d57ad67 100644 (file)
@@ -34,6 +34,7 @@
 #include <target/target_core_base.h>
 #include <target/target_core_device.h>
 #include <target/target_core_transport.h>
 #include <target/target_core_base.h>
 #include <target/target_core_device.h>
 #include <target/target_core_transport.h>
+#include <target/target_core_fabric_lib.h>
 #include <target/target_core_fabric_ops.h>
 #include <target/target_core_configfs.h>
 
 #include <target/target_core_fabric_ops.h>
 #include <target/target_core_configfs.h>
 
index 51fd309..7ff6a35 100644 (file)
@@ -441,6 +441,7 @@ static struct se_device *pscsi_create_type_disk(
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
+       __releases(sh->host_lock)
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
@@ -488,6 +489,7 @@ static struct se_device *pscsi_create_type_rom(
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
+       __releases(sh->host_lock)
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
@@ -522,6 +524,7 @@ static struct se_device *pscsi_create_type_other(
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
        struct pscsi_dev_virt *pdv,
        struct se_subsystem_dev *se_dev,
        struct se_hba *hba)
+       __releases(sh->host_lock)
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
 {
        struct se_device *dev;
        struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
index 13badfb..3ea19e2 100644 (file)
@@ -14,8 +14,6 @@
 #define RD_BLOCKSIZE           512
 #define RD_MAX_SECTORS         1024
 
 #define RD_BLOCKSIZE           512
 #define RD_MAX_SECTORS         1024
 
-extern struct kmem_cache *se_mem_cache;
-
 /* Used in target_core_init_configfs() for virtual LUN 0 access */
 int __init rd_module_init(void);
 void rd_module_exit(void);
 /* Used in target_core_init_configfs() for virtual LUN 0 access */
 int __init rd_module_init(void);
 void rd_module_exit(void);
index ff9ace0..80df405 100644 (file)
@@ -227,8 +227,6 @@ static void transport_remove_cmd_from_queue(struct se_cmd *cmd,
 static int transport_set_sense_codes(struct se_cmd *cmd, u8 asc, u8 ascq);
 static void transport_stop_all_task_timers(struct se_cmd *cmd);
 
 static int transport_set_sense_codes(struct se_cmd *cmd, u8 asc, u8 ascq);
 static void transport_stop_all_task_timers(struct se_cmd *cmd);
 
-int transport_emulate_control_cdb(struct se_task *task);
-
 int init_se_global(void)
 {
        struct se_global *global;
 int init_se_global(void)
 {
        struct se_global *global;
@@ -4395,7 +4393,7 @@ out:
        return -1;
 }
 
        return -1;
 }
 
-extern u32 transport_calc_sg_num(
+u32 transport_calc_sg_num(
        struct se_task *task,
        struct se_mem *in_se_mem,
        u32 task_offset)
        struct se_task *task,
        struct se_mem *in_se_mem,
        u32 task_offset)
index 0828b6c..bc93b78 100644 (file)
@@ -239,7 +239,7 @@ struct t10_alua_lu_gp {
 } ____cacheline_aligned;
 
 struct t10_alua_lu_gp_member {
 } ____cacheline_aligned;
 
 struct t10_alua_lu_gp_member {
-       int lu_gp_assoc:1;
+       bool lu_gp_assoc;
        atomic_t lu_gp_mem_ref_cnt;
        spinlock_t lu_gp_mem_lock;
        struct t10_alua_lu_gp *lu_gp;
        atomic_t lu_gp_mem_ref_cnt;
        spinlock_t lu_gp_mem_lock;
        struct t10_alua_lu_gp *lu_gp;
@@ -271,7 +271,7 @@ struct t10_alua_tg_pt_gp {
 } ____cacheline_aligned;
 
 struct t10_alua_tg_pt_gp_member {
 } ____cacheline_aligned;
 
 struct t10_alua_tg_pt_gp_member {
-       int tg_pt_gp_assoc:1;
+       bool tg_pt_gp_assoc;
        atomic_t tg_pt_gp_mem_ref_cnt;
        spinlock_t tg_pt_gp_mem_lock;
        struct t10_alua_tg_pt_gp *tg_pt_gp;
        atomic_t tg_pt_gp_mem_ref_cnt;
        spinlock_t tg_pt_gp_mem_lock;
        struct t10_alua_tg_pt_gp *tg_pt_gp;
@@ -336,7 +336,7 @@ struct t10_pr_registration {
        int pr_res_type;
        int pr_res_scope;
        /* Used for fabric initiator WWPNs using a ISID */
        int pr_res_type;
        int pr_res_scope;
        /* Used for fabric initiator WWPNs using a ISID */
-       int isid_present_at_reg:1;
+       bool isid_present_at_reg;
        u32 pr_res_mapped_lun;
        u32 pr_aptpl_target_lun;
        u32 pr_res_generation;
        u32 pr_res_mapped_lun;
        u32 pr_aptpl_target_lun;
        u32 pr_res_generation;
@@ -418,7 +418,7 @@ struct se_transport_task {
        unsigned long long      t_task_lba;
        int                     t_tasks_failed;
        int                     t_tasks_fua;
        unsigned long long      t_task_lba;
        int                     t_tasks_failed;
        int                     t_tasks_fua;
-       int                     t_tasks_bidi:1;
+       bool                    t_tasks_bidi;
        u32                     t_task_cdbs;
        u32                     t_tasks_check;
        u32                     t_tasks_no;
        u32                     t_task_cdbs;
        u32                     t_tasks_check;
        u32                     t_tasks_no;
@@ -470,7 +470,7 @@ struct se_task {
        u8              task_flags;
        int             task_error_status;
        int             task_state_flags;
        u8              task_flags;
        int             task_error_status;
        int             task_state_flags;
-       int             task_padded_sg:1;
+       bool            task_padded_sg;
        unsigned long long      task_lba;
        u32             task_no;
        u32             task_sectors;
        unsigned long long      task_lba;
        u32             task_no;
        u32             task_sectors;
@@ -583,7 +583,7 @@ struct se_ua {
 struct se_node_acl {
        char                    initiatorname[TRANSPORT_IQN_LEN];
        /* Used to signal demo mode created ACL, disabled by default */
 struct se_node_acl {
        char                    initiatorname[TRANSPORT_IQN_LEN];
        /* Used to signal demo mode created ACL, disabled by default */
-       int                     dynamic_node_acl:1;
+       bool                    dynamic_node_acl;
        u32                     queue_depth;
        u32                     acl_index;
        u64                     num_cmds;
        u32                     queue_depth;
        u32                     acl_index;
        u64                     num_cmds;
@@ -632,7 +632,7 @@ struct se_lun_acl {
 }  ____cacheline_aligned;
 
 struct se_dev_entry {
 }  ____cacheline_aligned;
 
 struct se_dev_entry {
-       int                     def_pr_registered:1;
+       bool                    def_pr_registered;
        /* See transport_lunflags_table */
        u32                     lun_flags;
        u32                     deve_cmds;
        /* See transport_lunflags_table */
        u32                     lun_flags;
        u32                     deve_cmds;
index f3ac12b..5eb8b1a 100644 (file)
@@ -8,7 +8,7 @@ struct target_core_fabric_ops {
         * for scatterlist chaining using transport_do_task_sg_link(),
         * disabled by default
         */
         * for scatterlist chaining using transport_do_task_sg_link(),
         * disabled by default
         */
-       int task_sg_chaining:1;
+       bool task_sg_chaining;
        char *(*get_fabric_name)(void);
        u8 (*get_fabric_proto_ident)(struct se_portal_group *);
        char *(*tpg_get_wwn)(struct se_portal_group *);
        char *(*get_fabric_name)(void);
        u8 (*get_fabric_proto_ident)(struct se_portal_group *);
        char *(*tpg_get_wwn)(struct se_portal_group *);
index 2e8ec51..59aa464 100644 (file)
 struct se_mem;
 struct se_subsystem_api;
 
 struct se_mem;
 struct se_subsystem_api;
 
+extern struct kmem_cache *se_mem_cache;
+
 extern int init_se_global(void);
 extern void release_se_global(void);
 extern void init_scsi_index_table(void);
 extern int init_se_global(void);
 extern void release_se_global(void);
 extern void init_scsi_index_table(void);
@@ -190,6 +192,8 @@ extern void transport_generic_process_write(struct se_cmd *);
 extern int transport_generic_do_tmr(struct se_cmd *);
 /* From target_core_alua.c */
 extern int core_alua_check_nonop_delay(struct se_cmd *);
 extern int transport_generic_do_tmr(struct se_cmd *);
 /* From target_core_alua.c */
 extern int core_alua_check_nonop_delay(struct se_cmd *);
+/* From target_core_cdb.c */
+extern int transport_emulate_control_cdb(struct se_task *);
 
 /*
  * Each se_transport_task_t can have N number of possible struct se_task's
 
 /*
  * Each se_transport_task_t can have N number of possible struct se_task's