> > > > /** > > + * megasas_complete_r1_command - > > + * completes R1 FP write commands which has valid peer smid > > + * @instance: Adapter soft state > > + * @cmd_fusion: MPT command frame > > + * > > + */ > > +static inline void > > +megasas_complete_r1_command(struct megasas_instance *instance, > > + struct megasas_cmd_fusion *cmd) { > > + u8 *sense, status, ex_status; > > + u32 data_length; > > + u16 peer_smid; > > + struct fusion_context *fusion; > > + struct megasas_cmd_fusion *r1_cmd = NULL; > > + struct scsi_cmnd *scmd_local = NULL; > > + struct RAID_CONTEXT_G35 *rctx_g35; > > + > > + rctx_g35 = &cmd->io_request->RaidContext.raid_context_g35; > > + fusion = instance->ctrl_context; > > + peer_smid = le16_to_cpu(rctx_g35->smid.peer_smid); > > + > > + r1_cmd = fusion->cmd_list[peer_smid - 1]; > > + scmd_local = cmd->scmd; > > + status = rctx_g35->status; > > + ex_status = rctx_g35->ex_status; > > + data_length = cmd->io_request->DataLength; > > + sense = cmd->sense; > > + > > + cmd->cmd_completed = true; > > + > > + /* Check if peer command is completed or not*/ > > + if (r1_cmd->cmd_completed) { > > + if (rctx_g35->status != MFI_STAT_OK) { > > + status = rctx_g35->status; > > + ex_status = rctx_g35->ex_status; > > Both status + ex_status were already set to the same value, why is it > repeated here ? Tomas, This need a fix. Raid context should be switch to r1_cmd, but it that is not done here. We want if r1 cmd is completed with failure, check status and extended status from r1_cmd to send final status to mid layer. We will fix this and resend patch. It will be like this - if (r1_cmd->cmd_completed) { rctx_g35 = &r1_cmd->io_request->RaidContext.raid_context_g35; << -This line should be added. if (rctx_g35->status != MFI_STAT_OK) { status = rctx_g35->status; ex_status = rctx_g35->ex_status; Thanks, Kashyap > > Tomas >