On Mon, 2015-06-29 at 18:32 +0300, Sagi Grimberg wrote: > LIO supports protection types 1,3 so setting a had-coded SPT=3 > is fine for now. > > Signed-off-by: Sagi Grimberg <sagig@xxxxxxxxxxxx> > --- > drivers/target/target_core_spc.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c > index 08114bf..aaf1964 100644 > --- a/drivers/target/target_core_spc.c > +++ b/drivers/target/target_core_spc.c > @@ -457,6 +457,9 @@ spc_emulate_evpd_86(struct se_cmd *cmd, unsigned char *buf) > buf[4] = 0x4; > } > > + /* logical unit supports type 1 and type 3 protection */ > + buf[4] |= (0x3 << 3); > + > /* Set HEADSUP, ORDSUP, SIMPSUP */ > buf[5] = 0x07; > AFAICT this field is supposed to be reserved if INQUIRY PROTECT=0. How about the following to match what spc_emulate_inquiry_std() does for checking when PROTECT should be set, along with an extra TYPE_DISK check..? diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c index 5df4d9b..b5ba1ec 100644 --- a/drivers/target/target_core_spc.c +++ b/drivers/target/target_core_spc.c @@ -454,12 +454,16 @@ spc_emulate_evpd_86(struct se_cmd *cmd, unsigned char *buf) cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE1_PROT) buf[4] = 0x5; else if (dev->dev_attrib.pi_prot_type == TARGET_DIF_TYPE3_PROT || - cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE3_PROT) + cmd->se_sess->sess_prot_type == TARGET_DIF_TYPE3_PROT) buf[4] = 0x4; } /* logical unit supports type 1 and type 3 protection */ - buf[4] |= (0x3 << 3); + if ((dev->transport->get_device_type(dev) == TYPE_DISK) && + (sess->sup_prot_ops & (TARGET_PROT_DIN_PASS | TARGET_PROT_DOUT_PASS)) && + (dev->dev_attrib.pi_prot_type || cmd->se_sess->sess_prot_type)) { + buf[4] |= (0x3 << 3); + } /* Set HEADSUP, ORDSUP, SIMPSUP */ buf[5] = 0x07; -- 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