On Mon, 2013-03-18 at 18:30 -0400, Jörn Engel wrote: > As the comment sais, this allows Solaris initiators to survive > intermittent errors. The comment from someone reading the Solaris > sources seem to imply that multipathing would be broken without this > patch as well. > > Signed-off-by: Joern Engel <joern@xxxxxxxxx> > Cc: Brian Bunker <brian@xxxxxxxxxxxxxxx> > --- > drivers/target/target_core_transport.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c > index bd587b7..04ec9cb 100644 > --- a/drivers/target/target_core_transport.c > +++ b/drivers/target/target_core_transport.c > @@ -2750,8 +2750,13 @@ transport_send_check_condition_and_sense(struct se_cmd *cmd, > /* CURRENT ERROR */ > buffer[0] = 0x70; > buffer[SPC_ADD_SENSE_LEN_OFFSET] = 10; > - /* ILLEGAL REQUEST */ > - buffer[SPC_SENSE_KEY_OFFSET] = ILLEGAL_REQUEST; > + /* > + * Returning ILLEGAL REQUEST would cause immediate IO errors on > + * Solaris initiators. Returning NOT READY instead means the > + * operations will be retried a finite number of times and we > + * can survive intermittent errors. > + */ > + buffer[SPC_SENSE_KEY_OFFSET] = NOT_READY; > /* LOGICAL UNIT COMMUNICATION FAILURE */ > buffer[SPC_ASC_KEY_OFFSET] = 0x08; > break; The TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE case here is intended to return an non-recoverable failure. Is there a specific invocation of this where NOT_READY needs to be returned here, instead of changing this for all cases..? --nab -- To unsubscribe from this list: send the line "unsubscribe target-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html