Commit 5dd7ed2e811d5cd12f31fb7f0c5ad0107d494a12

Authored by Dan Carpenter
Committed by James Bottomley
1 parent 05aea6e7e4

[SCSI] target: Minor sparse warning fixes and annotations

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>

Showing 8 changed files with 18 additions and 13 deletions Side-by-side Diff

drivers/target/target_core_device.c
... ... @@ -589,6 +589,7 @@
589 589 * Called with struct se_device->se_port_lock spinlock held.
590 590 */
591 591 static void core_release_port(struct se_device *dev, struct se_port *port)
  592 + __releases(&dev->se_port_lock) __acquires(&dev->se_port_lock)
592 593 {
593 594 /*
594 595 * Wait for any port reference for PR ALL_TG_PT=1 operation
drivers/target/target_core_fabric_lib.c
... ... @@ -34,6 +34,7 @@
34 34 #include <target/target_core_base.h>
35 35 #include <target/target_core_device.h>
36 36 #include <target/target_core_transport.h>
  37 +#include <target/target_core_fabric_lib.h>
37 38 #include <target/target_core_fabric_ops.h>
38 39 #include <target/target_core_configfs.h>
39 40  
drivers/target/target_core_pscsi.c
... ... @@ -441,6 +441,7 @@
441 441 struct pscsi_dev_virt *pdv,
442 442 struct se_subsystem_dev *se_dev,
443 443 struct se_hba *hba)
  444 + __releases(sh->host_lock)
444 445 {
445 446 struct se_device *dev;
446 447 struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
... ... @@ -488,6 +489,7 @@
488 489 struct pscsi_dev_virt *pdv,
489 490 struct se_subsystem_dev *se_dev,
490 491 struct se_hba *hba)
  492 + __releases(sh->host_lock)
491 493 {
492 494 struct se_device *dev;
493 495 struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
... ... @@ -522,6 +524,7 @@
522 524 struct pscsi_dev_virt *pdv,
523 525 struct se_subsystem_dev *se_dev,
524 526 struct se_hba *hba)
  527 + __releases(sh->host_lock)
525 528 {
526 529 struct se_device *dev;
527 530 struct pscsi_hba_virt *phv = (struct pscsi_hba_virt *)pdv->pdv_se_hba->hba_ptr;
drivers/target/target_core_rd.h
... ... @@ -14,8 +14,6 @@
14 14 #define RD_BLOCKSIZE 512
15 15 #define RD_MAX_SECTORS 1024
16 16  
17   -extern struct kmem_cache *se_mem_cache;
18   -
19 17 /* Used in target_core_init_configfs() for virtual LUN 0 access */
20 18 int __init rd_module_init(void);
21 19 void rd_module_exit(void);
drivers/target/target_core_transport.c
... ... @@ -227,8 +227,6 @@
227 227 static int transport_set_sense_codes(struct se_cmd *cmd, u8 asc, u8 ascq);
228 228 static void transport_stop_all_task_timers(struct se_cmd *cmd);
229 229  
230   -int transport_emulate_control_cdb(struct se_task *task);
231   -
232 230 int init_se_global(void)
233 231 {
234 232 struct se_global *global;
... ... @@ -4395,7 +4393,7 @@
4395 4393 return -1;
4396 4394 }
4397 4395  
4398   -extern u32 transport_calc_sg_num(
  4396 +u32 transport_calc_sg_num(
4399 4397 struct se_task *task,
4400 4398 struct se_mem *in_se_mem,
4401 4399 u32 task_offset)
include/target/target_core_base.h
... ... @@ -239,7 +239,7 @@
239 239 } ____cacheline_aligned;
240 240  
241 241 struct t10_alua_lu_gp_member {
242   - int lu_gp_assoc:1;
  242 + bool lu_gp_assoc;
243 243 atomic_t lu_gp_mem_ref_cnt;
244 244 spinlock_t lu_gp_mem_lock;
245 245 struct t10_alua_lu_gp *lu_gp;
... ... @@ -271,7 +271,7 @@
271 271 } ____cacheline_aligned;
272 272  
273 273 struct t10_alua_tg_pt_gp_member {
274   - int tg_pt_gp_assoc:1;
  274 + bool tg_pt_gp_assoc;
275 275 atomic_t tg_pt_gp_mem_ref_cnt;
276 276 spinlock_t tg_pt_gp_mem_lock;
277 277 struct t10_alua_tg_pt_gp *tg_pt_gp;
... ... @@ -336,7 +336,7 @@
336 336 int pr_res_type;
337 337 int pr_res_scope;
338 338 /* Used for fabric initiator WWPNs using a ISID */
339   - int isid_present_at_reg:1;
  339 + bool isid_present_at_reg;
340 340 u32 pr_res_mapped_lun;
341 341 u32 pr_aptpl_target_lun;
342 342 u32 pr_res_generation;
... ... @@ -418,7 +418,7 @@
418 418 unsigned long long t_task_lba;
419 419 int t_tasks_failed;
420 420 int t_tasks_fua;
421   - int t_tasks_bidi:1;
  421 + bool t_tasks_bidi;
422 422 u32 t_task_cdbs;
423 423 u32 t_tasks_check;
424 424 u32 t_tasks_no;
... ... @@ -470,7 +470,7 @@
470 470 u8 task_flags;
471 471 int task_error_status;
472 472 int task_state_flags;
473   - int task_padded_sg:1;
  473 + bool task_padded_sg;
474 474 unsigned long long task_lba;
475 475 u32 task_no;
476 476 u32 task_sectors;
... ... @@ -583,7 +583,7 @@
583 583 struct se_node_acl {
584 584 char initiatorname[TRANSPORT_IQN_LEN];
585 585 /* Used to signal demo mode created ACL, disabled by default */
586   - int dynamic_node_acl:1;
  586 + bool dynamic_node_acl;
587 587 u32 queue_depth;
588 588 u32 acl_index;
589 589 u64 num_cmds;
... ... @@ -632,7 +632,7 @@
632 632 } ____cacheline_aligned;
633 633  
634 634 struct se_dev_entry {
635   - int def_pr_registered:1;
  635 + bool def_pr_registered;
636 636 /* See transport_lunflags_table */
637 637 u32 lun_flags;
638 638 u32 deve_cmds;
include/target/target_core_fabric_ops.h
... ... @@ -8,7 +8,7 @@
8 8 * for scatterlist chaining using transport_do_task_sg_link(),
9 9 * disabled by default
10 10 */
11   - int task_sg_chaining:1;
  11 + bool task_sg_chaining;
12 12 char *(*get_fabric_name)(void);
13 13 u8 (*get_fabric_proto_ident)(struct se_portal_group *);
14 14 char *(*tpg_get_wwn)(struct se_portal_group *);
include/target/target_core_transport.h
... ... @@ -109,6 +109,8 @@
109 109 struct se_mem;
110 110 struct se_subsystem_api;
111 111  
  112 +extern struct kmem_cache *se_mem_cache;
  113 +
112 114 extern int init_se_global(void);
113 115 extern void release_se_global(void);
114 116 extern void init_scsi_index_table(void);
... ... @@ -190,6 +192,8 @@
190 192 extern int transport_generic_do_tmr(struct se_cmd *);
191 193 /* From target_core_alua.c */
192 194 extern int core_alua_check_nonop_delay(struct se_cmd *);
  195 +/* From target_core_cdb.c */
  196 +extern int transport_emulate_control_cdb(struct se_task *);
193 197  
194 198 /*
195 199 * Each se_transport_task_t can have N number of possible struct se_task's