]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/scsi_tgt_lib.c
Merge branches 'pxa' and 'orion-fixes1'
[linux-2.6-omap-h63xx.git] / drivers / scsi / scsi_tgt_lib.c
index 91630baea532e0656883ee2c427b21467a9bf629..ee8496aa0336682eedc40879dfca871d6551ff3c 100644 (file)
@@ -103,7 +103,6 @@ struct scsi_cmnd *scsi_host_get_command(struct Scsi_Host *shost,
        if (!cmd)
                goto release_rq;
 
-       memset(cmd, 0, sizeof(*cmd));
        cmd->sc_data_direction = data_dir;
        cmd->jiffies_at_alloc = jiffies;
        cmd->request = rq;
@@ -320,7 +319,7 @@ int scsi_tgt_queue_command(struct scsi_cmnd *cmd, u64 itn_id,
 EXPORT_SYMBOL_GPL(scsi_tgt_queue_command);
 
 /*
- * This is run from a interrpt handler normally and the unmap
+ * This is run from a interrupt handler normally and the unmap
  * needs process context so we must queue
  */
 static void scsi_tgt_cmd_done(struct scsi_cmnd *cmd)
@@ -382,6 +381,11 @@ static int scsi_map_user_pages(struct scsi_tgt_cmd *tcmd, struct scsi_cmnd *cmd,
                scsi_release_buffers(cmd);
                goto unmap_rq;
        }
+       /*
+        * we use REQ_TYPE_BLOCK_PC so scsi_init_io doesn't set the
+        * length for us.
+        */
+       cmd->sdb.length = rq->data_len;
 
        return 0;
 
@@ -617,9 +621,7 @@ static int __init scsi_tgt_init(void)
 {
        int err;
 
-       scsi_tgt_cmd_cache = kmem_cache_create("scsi_tgt_cmd",
-                                              sizeof(struct scsi_tgt_cmd),
-                                              0, 0, NULL);
+       scsi_tgt_cmd_cache =  KMEM_CACHE(scsi_tgt_cmd, 0);
        if (!scsi_tgt_cmd_cache)
                return -ENOMEM;