Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d1985ad1da28eac507d855af8099f6010c51b167
Commit:     d1985ad1da28eac507d855af8099f6010c51b167
Parent:     88f45005ce8ec97fc3a2aac3c0e9e645ed83a64a
Author:     Vasily Averin <[EMAIL PROTECTED]>
AuthorDate: Mon Mar 26 21:32:30 2007 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Tue Mar 27 09:05:16 2007 -0700

    [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 <[EMAIL PROTECTED]>
    Acked-by: Markus Lidel <[EMAIL PROTECTED]>
    Cc: Jens Axboe <[EMAIL PROTECTED]>
    Cc: <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 drivers/message/i2o/i2o_block.c |   12 +-----------
 1 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index da9859f..b17c4b2 100644
--- 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 request_queue *q, 
struct request *req)
                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 request_queue *q, 
struct request *req)
                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 git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to