diff options
Diffstat (limited to 'drivers/scsi/scsi_tgt_lib.c')
| -rw-r--r-- | drivers/scsi/scsi_tgt_lib.c | 13 | 
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/scsi/scsi_tgt_lib.c b/drivers/scsi/scsi_tgt_lib.c index c399be97992..e51add05fb8 100644 --- a/drivers/scsi/scsi_tgt_lib.c +++ b/drivers/scsi/scsi_tgt_lib.c @@ -93,7 +93,7 @@ struct scsi_cmnd *scsi_host_get_command(struct Scsi_Host *shost,  	/*  	 * The blk helpers are used to the READ/WRITE requests -	 * transfering data from a initiator point of view. Since +	 * transferring data from a initiator point of view. Since  	 * we are in target mode we want the opposite.  	 */  	rq = blk_get_request(shost->uspace_req_q, !write, gfp_mask); @@ -155,7 +155,8 @@ void scsi_host_put_command(struct Scsi_Host *shost, struct scsi_cmnd *cmd)  	__blk_put_request(q, rq);  	spin_unlock_irqrestore(q->queue_lock, flags); -	__scsi_put_command(shost, cmd, &shost->shost_gendev); +	__scsi_put_command(shost, cmd); +	put_device(&shost->shost_gendev);  }  EXPORT_SYMBOL_GPL(scsi_host_put_command); @@ -275,10 +276,8 @@ void scsi_tgt_free_queue(struct Scsi_Host *shost)  	for (i = 0; i < ARRAY_SIZE(qdata->cmd_hash); i++) {  		list_for_each_entry_safe(tcmd, n, &qdata->cmd_hash[i], -					 hash_list) { -			list_del(&tcmd->hash_list); -			list_add(&tcmd->hash_list, &cmds); -		} +					 hash_list) +			list_move(&tcmd->hash_list, &cmds);  	}  	spin_unlock_irqrestore(&qdata->cmd_hash_lock, flags); @@ -629,7 +628,7 @@ static int __init scsi_tgt_init(void)  	if (!scsi_tgt_cmd_cache)  		return -ENOMEM; -	scsi_tgtd = create_workqueue("scsi_tgtd"); +	scsi_tgtd = alloc_workqueue("scsi_tgtd", 0, 1);  	if (!scsi_tgtd) {  		err = -ENOMEM;  		goto free_kmemcache;  | 
