INIT_WORK(&target->work, tgt_worker, target);
struct tgt_target *tgt_target_create(char *target_type, int queued_cmnds){	char name[16];	static int target_id;	struct tgt_target *target;	struct target_type_internal *ti;	if (!daemon_pid) {		eprintk("%s\n", "Run the user-space daemon first!");		return NULL;	}	target = kmalloc(sizeof(*target), GFP_KERNEL);	if (!target)		return NULL;	memset(target, 0, sizeof(*target));	ti = target_template_get(target_type);	if (!ti)		goto free_target;	target->tt = ti->tt;	target->proto = ti->proto;	target->tid = target_id++;	spin_lock_init(&target->lock);	INIT_LIST_HEAD(&target->session_list);	INIT_LIST_HEAD(&target->device_list);	INIT_LIST_HEAD(&target->work_list);	INIT_WORK(&target->work, tgt_worker, target);	target->queued_cmnds = queued_cmnds;	snprintf(name, sizeof(name), "tgtd%d", target->tid);	target->twq = create_workqueue(name);	if (!target->twq)		goto put_template;	target->tt_data = kmalloc(target->tt->priv_data_size, GFP_KERNEL);	if (!target->tt_data)		goto free_workqueue;	if (target->tt->target_create)		if (target->tt->target_create(target))			goto free_priv_tt_data;	if (tgt_sysfs_register_target(target))		goto tt_destroy;	spin_lock(&all_targets_lock);	list_add(&target->tlist, &all_targets);	spin_unlock(&all_targets_lock);	return target;tt_destroy:	if (target->tt->target_destroy)		target->tt->target_destroy(target);free_priv_tt_data:	kfree(target->tt_data);free_workqueue:	destroy_workqueue(target->twq);put_template:	target_template_put(target->tt);free_target:	kfree(target);	return NULL;}