set_bit(SHOST_ADD, &shost->shost_state); 
scsi_host_set_state(shost, SHOST_RUNNING); 
int scsi_add_host(struct Scsi_Host *shost, struct device *dev){	struct scsi_host_template *sht = shost->hostt;	int error = -EINVAL;	printk(KERN_INFO "scsi%d : %s\n", shost->host_no,			sht->info ? sht->info(shost) : sht->name);	if (!shost->can_queue) {		printk(KERN_ERR "%s: can_queue = 0 no longer supported\n",				sht->name);		goto out;	}	if (!shost->shost_gendev.parent)		shost->shost_gendev.parent = dev ? dev : &platform_bus;	error = device_add(&shost->shost_gendev);	if (error)		goto out;	set_bit(SHOST_ADD, &shost->shost_state);	get_device(shost->shost_gendev.parent);	error = class_device_add(&shost->shost_classdev);	if (error)		goto out_del_gendev;	get_device(&shost->shost_gendev);	if (shost->transportt->host_size &&	    (shost->shost_data = kmalloc(shost->transportt->host_size,					 GFP_KERNEL)) == NULL)		goto out_del_classdev;	if (shost->transportt->create_work_queue) {		snprintf(shost->work_q_name, KOBJ_NAME_LEN, "scsi_wq_%d",			shost->host_no);		shost->work_q = create_singlethread_workqueue(					shost->work_q_name);		if (!shost->work_q)			goto out_free_shost_data;	}	error = scsi_sysfs_add_host(shost);	if (error)		goto out_destroy_host;	scsi_proc_host_add(shost);	return error; out_destroy_host:	if (shost->work_q)		destroy_workqueue(shost->work_q); out_free_shost_data:	kfree(shost->shost_data); out_del_classdev:	class_device_del(&shost->shost_classdev); out_del_gendev:	device_del(&shost->shost_gendev); out:	return error;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d3301874083874f8a0ac88aa1bb7da6b62df34d2/hosts.c/clean/drivers/scsi/hosts.c