lkml.org 
[lkml]   [2008]   [Dec]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH 1/9] ide-atapi: remove PC_FLAG_WRITING atapi flag
    Date
    From
    There should be no functionality change resulting from this patch.

    Signed-off-by: Borislav Petkov <petkovbb@gmail.com>
    ---
    drivers/ide/ide-atapi.c | 12 +++++++-----
    drivers/ide/ide-floppy.c | 4 ----
    drivers/ide/ide-floppy_ioctl.c | 1 -
    drivers/ide/ide-tape.c | 4 ++--
    include/linux/ide.h | 3 +--
    5 files changed, 10 insertions(+), 14 deletions(-)

    diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
    index d412bd2..2f0d5e7 100644
    --- a/drivers/ide/ide-atapi.c
    +++ b/drivers/ide/ide-atapi.c
    @@ -296,11 +296,15 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
    const struct ide_tp_ops *tp_ops = hwif->tp_ops;
    xfer_func_t *xferfunc;
    unsigned int timeout, temp;
    + int write = 0;
    u16 bcount;
    u8 stat, ireason, dsc = 0;

    debug_log("Enter %s - interrupt handler\n", __func__);

    + if (rq)
    + write = (rq_data_dir(rq) == WRITE) ? 1 : 0;
    +
    timeout = (drive->media == ide_floppy) ? WAIT_FLOPPY_CMD
    : WAIT_TAPE_CMD;

    @@ -389,8 +393,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
    return ide_do_reset(drive);
    }

    - if (((ireason & ATAPI_IO) == ATAPI_IO) ==
    - !!(pc->flags & PC_FLAG_WRITING)) {
    + if (((ireason & ATAPI_IO) == ATAPI_IO) == write) {
    /* Hopefully, we will never get here */
    printk(KERN_ERR "%s: We wanted to %s, but the device wants us "
    "to %s!\n", drive->name,
    @@ -399,7 +402,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
    return ide_do_reset(drive);
    }

    - if (!(pc->flags & PC_FLAG_WRITING)) {
    + if (!write) {
    /* Reading - Check that we have enough space */
    temp = pc->xferred + bcount;
    if (temp > pc->req_xfer) {
    @@ -421,8 +424,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)

    if ((drive->media == ide_floppy && !pc->buf) ||
    (drive->media == ide_tape && pc->bh)) {
    - int done = drive->pc_io_buffers(drive, pc, bcount,
    - !!(pc->flags & PC_FLAG_WRITING));
    + int done = drive->pc_io_buffers(drive, pc, bcount, write);

    /* FIXME: don't do partial completions */
    if (drive->media == ide_floppy)
    diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c
    index fdec729..3ebe75a 100644
    --- a/drivers/ide/ide-floppy.c
    +++ b/drivers/ide/ide-floppy.c
    @@ -254,8 +254,6 @@ static void idefloppy_create_rw_cmd(ide_drive_t *drive,

    pc->rq = rq;
    pc->b_count = 0;
    - if (rq->cmd_flags & REQ_RW)
    - pc->flags |= PC_FLAG_WRITING;
    pc->buf = NULL;
    pc->req_xfer = pc->buf_size = blocks * floppy->block_size;
    pc->flags |= PC_FLAG_DMA_OK;
    @@ -268,8 +266,6 @@ static void idefloppy_blockpc_cmd(struct ide_disk_obj *floppy,
    memcpy(pc->c, rq->cmd, sizeof(pc->c));
    pc->rq = rq;
    pc->b_count = 0;
    - if (rq->data_len && rq_data_dir(rq) == WRITE)
    - pc->flags |= PC_FLAG_WRITING;
    pc->buf = rq->data;
    if (rq->bio)
    pc->flags |= PC_FLAG_DMA_OK;
    diff --git a/drivers/ide/ide-floppy_ioctl.c b/drivers/ide/ide-floppy_ioctl.c
    index 8f8be85..513f651 100644
    --- a/drivers/ide/ide-floppy_ioctl.c
    +++ b/drivers/ide/ide-floppy_ioctl.c
    @@ -109,7 +109,6 @@ static void ide_floppy_create_format_unit_cmd(struct ide_atapi_pc *pc, int b,
    put_unaligned(cpu_to_be32(b), (unsigned int *)(&pc->buf[4]));
    put_unaligned(cpu_to_be32(l), (unsigned int *)(&pc->buf[8]));
    pc->buf_size = 12;
    - pc->flags |= PC_FLAG_WRITING;
    }

    static int ide_floppy_get_sfrp_bit(ide_drive_t *drive, struct ide_atapi_pc *pc)
    diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c
    index ac9e29a..ba89d6a 100644
    --- a/drivers/ide/ide-tape.c
    +++ b/drivers/ide/ide-tape.c
    @@ -373,10 +373,11 @@ static void idetape_output_buffers(ide_drive_t *drive, struct ide_atapi_pc *pc,
    static void idetape_update_buffers(ide_drive_t *drive, struct ide_atapi_pc *pc)
    {
    struct idetape_bh *bh = pc->bh;
    + struct request *rq = drive->hwif->hwgroup->rq;
    int count;
    unsigned int bcount = pc->xferred;

    - if (pc->flags & PC_FLAG_WRITING)
    + if (rq_data_dir(rq) == WRITE)
    return;
    while (bcount) {
    if (bh == NULL) {
    @@ -774,7 +775,6 @@ static void ide_tape_create_rw_cmd(idetape_tape_t *tape,
    atomic_set(&bh->b_count, 0);
    } else if (opcode == WRITE_6) {
    pc->c[0] = WRITE_6;
    - pc->flags |= PC_FLAG_WRITING;
    pc->b_data = bh->b_data;
    pc->b_count = atomic_read(&bh->b_count);
    }
    diff --git a/include/linux/ide.h b/include/linux/ide.h
    index ad57a44..2041073 100644
    --- a/include/linux/ide.h
    +++ b/include/linux/ide.h
    @@ -386,9 +386,8 @@ enum {
    PC_FLAG_DMA_OK = (1 << 3),
    PC_FLAG_DMA_IN_PROGRESS = (1 << 4),
    PC_FLAG_DMA_ERROR = (1 << 5),
    - PC_FLAG_WRITING = (1 << 6),
    /* command timed out */
    - PC_FLAG_TIMEDOUT = (1 << 7),
    + PC_FLAG_TIMEDOUT = (1 << 6),
    };

    /*
    --
    1.6.0.4


    \
     
     \ /
      Last update: 2008-12-16 08:39    [W:0.032 / U:32.932 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site