[SCSI] st: convert do_load_unload to use st_scsi_kern_execute
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Fri, 5 Dec 2008 06:25:24 +0000 (15:25 +0900)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 29 Dec 2008 17:24:29 +0000 (11:24 -0600)
This replaces st_do_scsi in do_load_unload (START STOP) with
st_scsi_kern_execute.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Kai Makisara <Kai.Makisara@kolumbus.fi>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/st.c

index c60972ffcfc3c8b1826a34aab772a8293daf92f2..2cfa17a2eacb63743ee7d9bf4e11e172242df897 100644 (file)
@@ -2515,13 +2515,16 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod
                printk(ST_DEB_MSG "%s: Loading tape.\n", name);
                );
 
-       SRpnt = st_do_scsi(NULL, STp, cmd, 0, DMA_NONE,
-                          timeout, MAX_RETRIES, 1);
+       SRpnt = st_allocate_request(STp);
        if (!SRpnt)
-               return (STp->buffer)->syscall_result;
+               return STp->buffer->syscall_result;
+
+       retval = st_scsi_kern_execute(SRpnt, cmd, DMA_NONE, NULL, 0, timeout,
+                                     MAX_RETRIES);
+       if (retval)
+               goto out;
 
        retval = (STp->buffer)->syscall_result;
-       st_release_request(SRpnt);
 
        if (!retval) {  /* SCSI command successful */
 
@@ -2540,6 +2543,8 @@ static int do_load_unload(struct scsi_tape *STp, struct file *filp, int load_cod
                STps = &(STp->ps[STp->partition]);
                STps->drv_file = STps->drv_block = (-1);
        }
+out:
+       st_release_request(SRpnt);
 
        return retval;
 }