Subject: scsi_dh: add REQ_LB_OP_TRANSITION and errors From: Mike Christie <michaelc@xxxxxxxxxxx> This patch adds REQ_LB_OP_TRANSITION which is a REQ_TYPE_LINUX_BLOCK type of command. It also adds the error codes which are used by REQ_LB_OP_TRANSITION to blkdev.h. Signed-off-by: Mike Christie <michaelc@xxxxxxxxxxx> Signed-off-by: Chandra Seetharaman <sekharan@xxxxxxxxxx> --- block/ll_rw_blk.c | 2 1 + 1 - 0 ! include/linux/blkdev.h | 41 41 + 0 - 0 ! 2 files changed, 42 insertions(+), 1 deletion(-) Index: linux-2.6.24-rc8/block/ll_rw_blk.c =================================================================== --- linux-2.6.24-rc8.orig/block/ll_rw_blk.c +++ linux-2.6.24-rc8/block/ll_rw_blk.c @@ -3456,7 +3456,7 @@ static int __end_that_request_first(stru * for a REQ_BLOCK_PC request, we want to carry any eventual * sense key with us all the way through */ - if (!blk_pc_request(req)) + if (!blk_pc_request(req) && !blk_linux_request(req)) req->errors = 0; if (!uptodate) { Index: linux-2.6.24-rc8/include/linux/blkdev.h =================================================================== --- linux-2.6.24-rc8.orig/include/linux/blkdev.h +++ linux-2.6.24-rc8/include/linux/blkdev.h @@ -162,8 +162,48 @@ enum { */ REQ_LB_OP_EJECT = 0x40, /* eject request */ REQ_LB_OP_FLUSH = 0x41, /* flush device */ + REQ_LB_OP_TRANSITION = 0x42, /* failover/failback a device */ }; +enum { + BLKERR_OK = 0, + /* + * device errors + */ + BLKERR_DEV_FAILED, /* generic device error */ + BLKERR_DEV_TEMP_BUSY, + BLKERR_DEVICE_MAX, /* max device blkerr definition */ + + /* + * transport errors + */ + BLKERR_NOTCONN = BLKERR_DEVICE_MAX + 1, + BLKERR_CONN_FAILURE, + BLKERR_TRANSPORT_MAX, /* max transport blkerr definition */ + + /* + * driver and generic errors + */ + BLKERR_IO = BLKERR_TRANSPORT_MAX + 1, /* generic error */ + BLKERR_INVALID_IO, + BLKERR_RETRY, /* retry the req, but not immediately */ + BLKERR_IMM_RETRY, /* immediately retry the req */ + BLKERR_TIMED_OUT, + BLKERR_RES_TEMP_UNAVAIL, + BLKERR_DEV_OFFLINED, + BLKERR_NOSYS, + BLKERR_DRIVER_MAX, +}; + +#define blk_dev_err(_err) \ + (_err > BLKERR_OK && _err < BLKERR_DEVICE_MAX) + + #define blkerr_transport_err(_err) \ + (_err > BLKERR_DEVICE_MAX && _err < BLKERR_TRANSPORT_MAX) + +#define blkerr_driver_err(_err) \ + (_err > BLKERR_TRANSPORT_MAX) + /* * request type modified bits. first three bits match BIO_RW* bits, important */ @@ -521,6 +561,7 @@ enum { #define blk_pc_request(rq) ((rq)->cmd_type == REQ_TYPE_BLOCK_PC) #define blk_special_request(rq) ((rq)->cmd_type == REQ_TYPE_SPECIAL) #define blk_sense_request(rq) ((rq)->cmd_type == REQ_TYPE_SENSE) +#define blk_linux_request(rq) ((rq)->cmd_type == REQ_TYPE_LINUX_BLOCK) #define blk_noretry_request(rq) ((rq)->cmd_flags & REQ_FAILFAST) #define blk_rq_started(rq) ((rq)->cmd_flags & REQ_STARTED) -- ---------------------------------------------------------------------- Chandra Seetharaman | Be careful what you choose.... - sekharan@xxxxxxxxxx | .......you may get it. ---------------------------------------------------------------------- - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html