Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

target: Use LIST_HEAD()/DEFINE_MUTEX() for static objects

Instead of

static struct list_head foo;
static struct mutex bar;

...

INIT_LIST_HEAD(&foo);
mutex_init(&bar);

just do

static LIST_HEAD(foo);
static DEFINE_MUTEX(bar);

Also remove some superfluous struct list_head and spinlock_t
initialization calls where the variables are already defined using
macros that initialize them.

This saves a decent amount of compiled code too:

add/remove: 0/0 grow/shrink: 0/3 up/down: 0/-178 (-178)
function old new delta
target_core_init_configfs 898 850 -48
core_scsi3_emulate_pro_preempt 1742 1683 -59
iscsi_thread_set_init 159 88 -71

Signed-off-by: Roland Dreier <roland@purestorage.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

authored by

Roland Dreier and committed by
Nicholas Bellinger
d0f474e5 d5b4a21b

+4 -14
-6
drivers/target/iscsi/iscsi_target_tq.c
··· 536 536 return -ENOMEM; 537 537 } 538 538 539 - spin_lock_init(&active_ts_lock); 540 - spin_lock_init(&inactive_ts_lock); 541 - spin_lock_init(&ts_bitmap_lock); 542 - INIT_LIST_HEAD(&active_ts_list); 543 - INIT_LIST_HEAD(&inactive_ts_list); 544 - 545 539 return 0; 546 540 } 547 541
+2 -4
drivers/target/target_core_configfs.c
··· 52 52 53 53 extern struct t10_alua_lu_gp *default_lu_gp; 54 54 55 - static struct list_head g_tf_list; 56 - static struct mutex g_tf_lock; 55 + static LIST_HEAD(g_tf_list); 56 + static DEFINE_MUTEX(g_tf_lock); 57 57 58 58 struct target_core_configfs_attribute { 59 59 struct configfs_attribute attr; ··· 3117 3117 config_group_init(&subsys->su_group); 3118 3118 mutex_init(&subsys->su_mutex); 3119 3119 3120 - INIT_LIST_HEAD(&g_tf_list); 3121 - mutex_init(&g_tf_lock); 3122 3120 ret = init_se_kmem_caches(); 3123 3121 if (ret < 0) 3124 3122 return ret;
+2 -4
drivers/target/target_core_pr.c
··· 1487 1487 struct se_dev_entry *dest_se_deve = NULL, *local_se_deve; 1488 1488 struct t10_pr_registration *dest_pr_reg, *local_pr_reg, *pr_reg_e; 1489 1489 struct t10_pr_registration *pr_reg_tmp, *pr_reg_tmp_safe; 1490 - struct list_head tid_dest_list; 1490 + LIST_HEAD(tid_dest_list); 1491 1491 struct pr_transport_id_holder *tidh_new, *tidh, *tidh_tmp; 1492 1492 struct target_core_fabric_ops *tmp_tf_ops; 1493 1493 unsigned char *buf; ··· 1498 1498 u32 dest_rtpi = 0; 1499 1499 1500 1500 memset(dest_iport, 0, 64); 1501 - INIT_LIST_HEAD(&tid_dest_list); 1502 1501 1503 1502 local_se_deve = &se_sess->se_node_acl->device_list[cmd->orig_fe_lun]; 1504 1503 /* ··· 2993 2994 struct se_dev_entry *se_deve; 2994 2995 struct se_node_acl *pr_reg_nacl; 2995 2996 struct se_session *se_sess = cmd->se_sess; 2996 - struct list_head preempt_and_abort_list; 2997 + LIST_HEAD(preempt_and_abort_list); 2997 2998 struct t10_pr_registration *pr_reg, *pr_reg_tmp, *pr_reg_n, *pr_res_holder; 2998 2999 struct t10_reservation *pr_tmpl = &dev->se_sub_dev->t10_pr; 2999 3000 u32 pr_res_mapped_lun = 0; ··· 3026 3027 cmd->scsi_sense_reason = TCM_INVALID_PARAMETER_LIST; 3027 3028 return -EINVAL; 3028 3029 } 3029 - INIT_LIST_HEAD(&preempt_and_abort_list); 3030 3030 3031 3031 spin_lock(&dev->dev_reservation_lock); 3032 3032 pr_res_holder = dev->dev_pr_res_holder;