lkml.org 
[lkml]   [2007]   [Mar]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 28/37] i2o: block IO errors on i2o disk
    -stable review patch.  If anyone has any objections, please let us know.

    ------------------
    From: Vasily Averin <vvs@sw.ru>

    [PATCH] i2o: block IO errors on i2o disk

    I2O subsystem has been broken in mainstream several months ago (after
    2.6.18). Commit 4aff5e2333c9a1609662f2091f55c3f6fffdad36 from Jens
    Axboe split struct request ->flags into two parts: cmd_type and
    cmd_flags.

    In i2o layer this patch has replaced flag REQ_SPECIAL by the according
    cmd_type. However i2o has used REQ_SPECIAL not as command type but as
    driver-specific flag for the debug purposes. As result all i2o requests
    have type "special" now, are not processed to the hardware and fail with
    I/O error:

    i2o/hda:<3>Buffer I/O error on device i2o/hda, logical block 0
    Buffer I/O error on device i2o/hda, logical block 0
    Buffer I/O error on device i2o/hda, logical block 0
    unable to read partition table
    block-osm: device added (TID: 207): i2o/hda

    The following patch removes the extra debug checks without any drawbacks and
    restores the normal driver's work.

    Signed-off-by: Vasily Averin <vvs@sw.ru>
    Acked-by: Markus Lidel <Markus.Lidel@shadowconnect.com>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    From: Chuck Ebbert <cebbert@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/message/i2o/i2o_block.c | 12 +-----------
    1 file changed, 1 insertion(+), 11 deletions(-)

    --- a/drivers/message/i2o/i2o_block.c
    +++ b/drivers/message/i2o/i2o_block.c
    @@ -390,13 +390,6 @@ static int i2o_block_prep_req_fn(struct
    return BLKPREP_KILL;
    }

    - /* request is already processed by us, so return */
    - if (blk_special_request(req)) {
    - osm_debug("REQ_SPECIAL already set!\n");
    - req->cmd_flags |= REQ_DONTPREP;
    - return BLKPREP_OK;
    - }
    -
    /* connect the i2o_block_request to the request */
    if (!req->special) {
    ireq = i2o_block_request_alloc();
    @@ -408,11 +401,8 @@ static int i2o_block_prep_req_fn(struct
    ireq->i2o_blk_dev = i2o_blk_dev;
    req->special = ireq;
    ireq->req = req;
    - } else
    - ireq = req->special;
    -
    + }
    /* do not come back here */
    - req->cmd_type = REQ_TYPE_SPECIAL;
    req->cmd_flags |= REQ_DONTPREP;

    return BLKPREP_OK;
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-03-30 23:21    [W:0.021 / U:29.508 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site