[SCSI] hpsa: fix handling of protocol error

If a command status of CMD_PROTOCOL_ERR is received, this
information should be conveyed to the SCSI mid layer, not
dropped on the floor. CMD_PROTOCOL_ERR may be received
from the Smart Array for any commands destined for an external
RAID controller such as a P2000, or commands destined for tape
drives or CD/DVD-ROM drives, if for instance a cable is
disconnected. This mostly affects multipath configurations, as
disconnecting a cable on a non-multipath configuration is not
going to do anything good regardless of whether CMD_PROTOCOL_ERR
is handled correctly or not. Not handling CMD_PROTOCOL_ERR
correctly in a multipath configaration involving external RAID
controllers may cause data corruption, so this is quite a serious
bug. This bug should not normally cause a problem for direct
attached disk storage.

Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

authored by Stephen M. Cameron and committed by James Bottomley 256d0eaa 10cce6d8

Changed files
+2 -1
drivers
scsi
+2 -1
drivers/scsi/hpsa.c
··· 1315 1315 } 1316 1316 break; 1317 1317 case CMD_PROTOCOL_ERR: 1318 + cmd->result = DID_ERROR << 16; 1318 1319 dev_warn(&h->pdev->dev, "cp %p has " 1319 - "protocol error \n", cp); 1320 + "protocol error\n", cp); 1320 1321 break; 1321 1322 case CMD_HARDWARE_ERR: 1322 1323 cmd->result = DID_ERROR << 16;