Skip to content

Commit

Permalink
[SCSI] target: Minor sparse warning fixes and annotations
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Dan Carpenter authored and James Bottomley committed Mar 23, 2011
1 parent 05aea6e commit 5dd7ed2
Show file tree
Hide file tree
Showing 8 changed files with 18 additions and 13 deletions.
1 change: 1 addition & 0 deletions drivers/target/target_core_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
__releases(&dev->se_port_lock) __acquires(&dev->se_port_lock)
{
/*
* Wait for any port reference for PR ALL_TG_PT=1 operation
Expand Down
1 change: 1 addition & 0 deletions drivers/target/target_core_fabric_lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_fabric_lib.h>
#include <target/target_core_fabric_ops.h>
#include <target/target_core_configfs.h>

Expand Down
3 changes: 3 additions & 0 deletions drivers/target/target_core_pscsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
__releases(sh->host_lock)
{
struct se_device *dev;
struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
Expand Down Expand Up @@ -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)
__releases(sh->host_lock)
{
struct se_device *dev;
struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
Expand Down Expand Up @@ -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)
__releases(sh->host_lock)
{
struct se_device *dev;
struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
Expand Down
2 changes: 0 additions & 2 deletions drivers/target/target_core_rd.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
#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);
Expand Down
4 changes: 1 addition & 3 deletions drivers/target/target_core_transport.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

int transport_emulate_control_cdb(struct se_task *task);

int init_se_global(void)
{
struct se_global *global;
Expand Down Expand Up @@ -4395,7 +4393,7 @@ transport_generic_get_mem(struct se_cmd *cmd, u32 length, u32 dma_size)
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)
Expand Down
14 changes: 7 additions & 7 deletions include/target/target_core_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ struct t10_alua_lu_gp {
} ____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;
Expand Down Expand Up @@ -271,7 +271,7 @@ struct t10_alua_tg_pt_gp {
} ____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;
Expand Down Expand Up @@ -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 isid_present_at_reg:1;
bool isid_present_at_reg;
u32 pr_res_mapped_lun;
u32 pr_aptpl_target_lun;
u32 pr_res_generation;
Expand Down Expand Up @@ -418,7 +418,7 @@ struct se_transport_task {
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;
Expand Down Expand Up @@ -470,7 +470,7 @@ struct se_task {
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;
Expand Down Expand Up @@ -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 */
int dynamic_node_acl:1;
bool dynamic_node_acl;
u32 queue_depth;
u32 acl_index;
u64 num_cmds;
Expand Down Expand Up @@ -632,7 +632,7 @@ struct se_lun_acl {
} ____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;
Expand Down
2 changes: 1 addition & 1 deletion include/target/target_core_fabric_ops.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ struct target_core_fabric_ops {
* 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 *);
Expand Down
4 changes: 4 additions & 0 deletions include/target/target_core_transport.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,8 @@
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);
Expand Down Expand Up @@ -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 *);
/* 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
Expand Down

0 comments on commit 5dd7ed2

Please sign in to comment.