ide: remove action argument in ide_do_drive_cmd
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Tue, 15 Jul 2008 19:21:51 +0000 (21:21 +0200)
committerBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Tue, 15 Jul 2008 19:21:51 +0000 (21:21 +0200)
ide_do_drive_cmd is called only with ide_preempt action argument. So
we can remove the action argument in ide_do_drive_cmd and ide_action_t
typedef.

This patch also includes two minor cleanups: 1) ide_do_drive_cmd
always succeeds so we don't need the return value; 2) the callers use
blk_rq_init before ide_do_drive_cmd so there is no need to initialize
rq->errors.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Borislav Petkov <petkovbb@gmail.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
drivers/ide/ide-cd.c
drivers/ide/ide-floppy.c
drivers/ide/ide-io.c
drivers/ide/ide-tape.c
drivers/scsi/ide-scsi.c
include/linux/ide.h

index 0fbc2d8d0d53e724d63e3028154cff8d0a3c0aa0..043129c422fe054a7cb1fcdaa4d44ae54576cfd8 100644 (file)
@@ -213,7 +213,7 @@ static void cdrom_queue_request_sense(ide_drive_t *drive, void *sense,
        /* NOTE! Save the failed command in "rq->buffer" */
        rq->buffer = (void *) failed_command;
 
-       (void) ide_do_drive_cmd(drive, rq, ide_preempt);
+       ide_do_drive_cmd(drive, rq);
 }
 
 static void cdrom_end_request(ide_drive_t *drive, int uptodate)
index 1852008d9ee4b6a32662d3f59eb80174da97302b..53209a473937e091be28f3296da2b124113cce1d 100644 (file)
@@ -291,7 +291,7 @@ static void idefloppy_queue_pc_head(ide_drive_t *drive, struct ide_atapi_pc *pc,
        rq->cmd_type = REQ_TYPE_SPECIAL;
        rq->cmd_flags |= REQ_PREEMPT;
        rq->rq_disk = floppy->disk;
-       (void) ide_do_drive_cmd(drive, rq, ide_preempt);
+       ide_do_drive_cmd(drive, rq);
 }
 
 static struct ide_atapi_pc *idefloppy_next_pc_storage(ide_drive_t *drive)
index c28fcdf0ee9e9ee3bd25d8d749fc9feb79739f6e..28057747c1f8fcf91b34dfd2aac2a375c3ab09d9 100644 (file)
@@ -1520,49 +1520,27 @@ irqreturn_t ide_intr (int irq, void *dev_id)
  *     ide_do_drive_cmd        -       issue IDE special command
  *     @drive: device to issue command
  *     @rq: request to issue
- *     @action: action for processing
  *
  *     This function issues a special IDE device request
  *     onto the request queue.
  *
- *     If action is ide_wait, then the rq is queued at the end of the
- *     request queue, and the function sleeps until it has been processed.
- *     This is for use when invoked from an ioctl handler.
- *
- *     If action is ide_preempt, then the rq is queued at the head of
- *     the request queue, displacing the currently-being-processed
- *     request and this function returns immediately without waiting
- *     for the new rq to be completed.  This is VERY DANGEROUS, and is
- *     intended for careful use by the ATAPI tape/cdrom driver code.
- *
- *     If action is ide_end, then the rq is queued at the end of the
- *     request queue, and the function returns immediately without waiting
- *     for the new rq to be completed. This is again intended for careful
- *     use by the ATAPI tape/cdrom driver code.
+ *     the rq is queued at the head of the request queue, displacing
+ *     the currently-being-processed request and this function
+ *     returns immediately without waiting for the new rq to be
+ *     completed.  This is VERY DANGEROUS, and is intended for
+ *     careful use by the ATAPI tape/cdrom driver code.
  */
-int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t action)
+
+void ide_do_drive_cmd(ide_drive_t *drive, struct request *rq)
 {
        unsigned long flags;
        ide_hwgroup_t *hwgroup = HWGROUP(drive);
-       int where = ELEVATOR_INSERT_BACK;
-
-       rq->errors = 0;
-
-       if (action == ide_preempt)
-               where = ELEVATOR_INSERT_FRONT;
 
        spin_lock_irqsave(&ide_lock, flags);
-       if (action == ide_preempt)
-               hwgroup->rq = NULL;
-       __elv_add_request(drive->queue, rq, where, 1);
+       hwgroup->rq = NULL;
+       __elv_add_request(drive->queue, rq, ELEVATOR_INSERT_FRONT, 1);
        __generic_unplug_device(drive->queue);
-       /* the queue is stopped so it won't be plugged+unplugged */
-       if (blk_pm_resume_request(rq))
-               do_ide_request(drive->queue);
        spin_unlock_irqrestore(&ide_lock, flags);
-
-       return 0;
 }
 
 EXPORT_SYMBOL(ide_do_drive_cmd);
index cc7991c7c252695237ec86d5fce5da81ade96b57..a562df820777c66afe2eb6a7667d3ccb4375c1b3 100644 (file)
@@ -691,7 +691,7 @@ static void idetape_queue_pc_head(ide_drive_t *drive, struct ide_atapi_pc *pc,
        rq->cmd_flags |= REQ_PREEMPT;
        rq->buffer = (char *) pc;
        rq->rq_disk = tape->disk;
-       (void) ide_do_drive_cmd(drive, rq, ide_preempt);
+       ide_do_drive_cmd(drive, rq);
 }
 
 /*
index 58e30efe7a74c25e3cbe2fed1b42c6b052933789..569ffde6d04701650cead81af3a02a84c7006794 100644 (file)
@@ -245,7 +245,8 @@ static int idescsi_check_condition(ide_drive_t *drive,
                ide_scsi_hex_dump(pc->c, 6);
        }
        rq->rq_disk = scsi->disk;
-       return ide_do_drive_cmd(drive, rq, ide_preempt);
+       ide_do_drive_cmd(drive, rq);
+       return 0;
 }
 
 static int idescsi_end_request(ide_drive_t *, int, int);
index d8c86f0362c49c662842b4dc0c7cd19b76c08462..04267dc1edf2241a9fbdf1b214baa7cf78a5e35c 100644 (file)
@@ -851,17 +851,7 @@ int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long);
 
 extern ide_startstop_t ide_do_reset (ide_drive_t *);
 
-/*
- * "action" parameter type for ide_do_drive_cmd() below.
- */
-typedef enum {
-       ide_wait,       /* insert rq at end of list, and wait for it */
-       ide_preempt,    /* insert rq in front of current request */
-       ide_head_wait,  /* insert rq in front of current request and wait for it */
-       ide_end         /* insert rq at end of list, but don't wait for it */
-} ide_action_t;
-
-extern int ide_do_drive_cmd(ide_drive_t *, struct request *, ide_action_t);
+extern void ide_do_drive_cmd(ide_drive_t *, struct request *);
 
 extern void ide_end_drive_cmd(ide_drive_t *, u8, u8);