]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
1 | From: Hannes Reinecke <hare@suse.de> |
2 | Subject: DM-MPIO fails to tresspass LUNs on CLARiiON arrays | |
3 | References: bnc#484529 | |
4 | ||
5 | When failing active paths on Clariion arrays, the trespass | |
6 | command is sent but not process correctly. Reason is that | |
7 | we're not formatting the command correctly, and the array | |
8 | just silently ignores the error. | |
9 | ||
10 | Signed-off-by: Hannes Reinecke <hare@suse.de> | |
11 | ||
12 | diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c | |
13 | index 2505237..822680e 100644 | |
14 | --- a/drivers/scsi/device_handler/scsi_dh_emc.c | |
15 | +++ b/drivers/scsi/device_handler/scsi_dh_emc.c | |
16 | @@ -286,14 +286,17 @@ static struct request *get_req(struct scsi_device *sdev, int cmd, | |
17 | len = sizeof(short_trespass); | |
18 | rq->cmd_flags |= REQ_RW; | |
19 | rq->cmd[1] = 0x10; | |
20 | + rq->cmd[4] = len; | |
21 | break; | |
22 | case MODE_SELECT_10: | |
23 | len = sizeof(long_trespass); | |
24 | rq->cmd_flags |= REQ_RW; | |
25 | rq->cmd[1] = 0x10; | |
26 | + rq->cmd[8] = len; | |
27 | break; | |
28 | case INQUIRY: | |
29 | len = CLARIION_BUFFER_SIZE; | |
30 | + rq->cmd[4] = len; | |
31 | memset(buffer, 0, len); | |
32 | break; | |
33 | default: | |
34 | @@ -301,7 +304,6 @@ static struct request *get_req(struct scsi_device *sdev, int cmd, | |
35 | break; | |
36 | } | |
37 | ||
38 | - rq->cmd[4] = len; | |
39 | rq->cmd_type = REQ_TYPE_BLOCK_PC; | |
40 | rq->cmd_flags |= REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | | |
41 | REQ_FAILFAST_DRIVER; |