public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Kashyap Desai <kashyap.desai@broadcom.com>
To: Tomas Henzl <thenzl@redhat.com>,
	Shivasharan Srikanteshwara
	<shivasharan.srikanteshwara@broadcom.com>,
	linux-scsi@vger.kernel.org
Cc: martin.petersen@oracle.com, jejb@linux.vnet.ibm.com,
	Sumit Saxena <sumit.saxena@broadcom.com>,
	hare@suse.com
Subject: RE: [PATCH v2 03/39] megaraid_sas: raid 1 fast path code optimize
Date: Thu, 9 Feb 2017 00:21:33 +0530	[thread overview]
Message-ID: <339b3daf3916e0ac6a1bb44f5040e172@mail.gmail.com> (raw)
In-Reply-To: <e37a18bc-34f9-d627-5440-1f787d21e4e9@redhat.com>

> > +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;
>
> Please help me understand how this works
> - there are two peer commands sent to the controller
> - both are completed and the later calls scsi_done and returns both
r1_cmd
> + cmd
> - if both commands can be completed at the same time, is it possible
that
> the
>   above line is executed at the same moment for both completions ?
> How is the code  protected against a double completion when both
> completed commands see the peer cmd_completed as set ?


Tomas,  cmd and r1_cmd (part of  same Raid 1 FP) will be always completed
on same reply queue by firmware. That is one of the key requirement here
for raid 1 fast path.
What you ask is possible if FW completes cmd and r1_cmd on different reply
queue. If you notice when we clone r1_cmd, we also clone MSI-x index from
parent command.
So eventually, FW is aware of binding of both cmd and r1_cmd w.r.t reply
queue index.

` Kashyap

>
> > +

  reply	other threads:[~2017-02-08 19:19 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-08  9:28 [PATCH v2 00/39] megaraid_sas: Updates for scsi-next Shivasharan S
2017-02-08  9:28 ` [PATCH v2 01/39] Revert "scsi: megaraid_sas: Enable or Disable Fast path based on the PCI Threshold Bandwidth" Shivasharan S
2017-02-08  9:28 ` [PATCH v2 02/39] megaraid_sas: cpu select rework Shivasharan S
2017-02-08  9:28 ` [PATCH v2 03/39] megaraid_sas: raid 1 fast path code optimize Shivasharan S
2017-02-08 14:34   ` Tomas Henzl
2017-02-08 18:51     ` Kashyap Desai [this message]
2017-02-09 13:15       ` Tomas Henzl
2017-02-09 13:16   ` Tomas Henzl
2017-02-08  9:28 ` [PATCH v2 04/39] megaraid_sas: 32 bit descriptor fire cmd optimization Shivasharan S
2017-02-08 11:15   ` Hannes Reinecke
2017-02-08  9:28 ` [PATCH v2 05/39] megaraid_sas: Refactor MEGASAS_IS_LOGICAL macro using sdev Shivasharan S
2017-02-08  9:29 ` [PATCH v2 06/39] megaraid_sas: RAID map is accessed for SYS PDs when use_seqnum_jbod_fp is not set Shivasharan S
2017-02-08 11:16   ` Hannes Reinecke
2017-02-08 14:37   ` Tomas Henzl
2017-02-08  9:29 ` [PATCH v2 07/39] megaraid_sas: Use DID_REQUEUE Shivasharan S
2017-02-08  9:29 ` [PATCH v2 08/39] megaraid_sas: megasas_get_request_descriptor always return valid desc Shivasharan S
2017-02-08 11:17   ` Hannes Reinecke
2017-02-08 14:40   ` Tomas Henzl
2017-02-09 23:39   ` Martin K. Petersen
2017-02-08  9:29 ` [PATCH v2 09/39] megaraid_sas: change issue_dcmd to return void from int Shivasharan S
2017-02-08 11:17   ` Hannes Reinecke
2017-02-08 14:40   ` Tomas Henzl
2017-02-08  9:29 ` [PATCH v2 10/39] megaraid_sas: NVME Interface detection and prop settings Shivasharan S
2017-02-08 11:59   ` Hannes Reinecke
2017-02-08 14:48   ` Tomas Henzl
2017-02-08  9:29 ` [PATCH v2 11/39] megaraid_sas: NVME interface target prop added Shivasharan S
2017-02-08  9:29 ` [PATCH v2 12/39] megaraid_sas: NVME fast path io support Shivasharan S
2017-02-08  9:29 ` [PATCH v2 13/39] megaraid_sas: raid 1 write performance for large io Shivasharan S
2017-02-08  9:29 ` [PATCH v2 14/39] megaraid_sas: set residual bytes count during IO completion Shivasharan S
2017-02-08  9:29 ` [PATCH v2 15/39] megaraid_sas: enhance debug logs in OCR context Shivasharan S
2017-02-08  9:29 ` [PATCH v2 16/39] megaraid_sas: add print in device removal path Shivasharan S
2017-02-08  9:29 ` [PATCH v2 17/39] megaraid_sas: reduce size of fusion_context and use vmalloc if kmalloc fails Shivasharan S
2017-02-08  9:29 ` [PATCH v2 18/39] megaraid_sas: In validate raid map, raid capability is not converted to cpu format for all lds Shivasharan S
2017-02-08  9:29 ` [PATCH v2 19/39] megaraid_sas: MR_TargetIdToLdGet u8 to u16 and avoid invalid raid-map access Shivasharan S
2017-02-09 14:31   ` Kashyap Desai
2017-02-08  9:29 ` [PATCH v2 20/39] megaraid_sas: Big endian RDPQ mode fix Shivasharan S
2017-02-08  9:29 ` [PATCH v2 21/39] megaraid_sas: big endian support changes Shivasharan S
2017-02-09 18:04   ` Kashyap Desai
2017-02-09 23:44     ` Martin K. Petersen
2017-02-08  9:29 ` [PATCH v2 22/39] megaraid_sas: avoid unaligned access in ioctl path Shivasharan S
2017-02-08  9:29 ` [PATCH v2 23/39] megaraid_sas: latest controller OCR capability from FW before sending shutdown DCMD Shivasharan S
2017-02-08  9:29 ` [PATCH v2 24/39] megaraid_sas: set pd_after_lb from MR_BuildRaidContext and initialize pDevHandle to MR_DEVHANDLE_INVALID Shivasharan S
2017-02-08  9:29 ` [PATCH v2 25/39] megaraid_sas: Change max_cmd from u32 to u16 in all functions Shivasharan S
2017-02-08  9:29 ` [PATCH v2 26/39] megaraid_sas: update can_queue only if the new value is less Shivasharan S
2017-02-08  9:29 ` [PATCH v2 27/39] megaraid_sas: max_fw_cmds are decremented twice, remove duplicate Shivasharan S
2017-02-08  9:29 ` [PATCH v2 28/39] megaraid_sas: megasas_return_cmd does not memset IO frame to zero Shivasharan S
2017-02-08  9:29 ` [PATCH v2 29/39] megaraid_sas: Remove unused pd_index from megasas_build_ld_nonrw_fusion Shivasharan S
2017-02-08  9:29 ` [PATCH v2 30/39] megaraid_sas: Do not set fp_possible if TM capable for non-RW syspdIO, change fp_possible to bool Shivasharan S
2017-02-08  9:29 ` [PATCH v2 31/39] megaraid_sas: During OCR, if get_ctrl_info fails do not continue with OCR Shivasharan S
2017-02-08  9:29 ` [PATCH v2 32/39] megaraid_sas: Change build_mpt_mfi_pass_thru to return void Shivasharan S
2017-02-08  9:29 ` [PATCH v2 33/39] megaraid_sas: Bail out the driver load if ld_list_query fails Shivasharan S
2017-02-08  9:29 ` [PATCH v2 34/39] megaraid_sas: Use synchronize_irq to wait for IRQs to complete Shivasharan S
2017-02-08  9:29 ` [PATCH v2 35/39] megaraid_sas: Increase internal command pool Shivasharan S
2017-02-08  9:29 ` [PATCH v2 36/39] megaraid_sas: Cleanup VD_EXT_DEBUG and SPAN_DEBUG related debug prints Shivasharan S
2017-02-08  9:29 ` [PATCH v2 37/39] megaraid_sas: Indentation and smatch warning fixes Shivasharan S
2017-02-08  9:29 ` [PATCH v2 38/39] megaraid_sas: Change RAID_1_10_RMW_CMDS to RAID_1_PEER_CMDS and set value to 2 Shivasharan S
2017-02-08  9:29 ` [PATCH v2 39/39] megaraid_sas: driver version upgrade Shivasharan S

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=339b3daf3916e0ac6a1bb44f5040e172@mail.gmail.com \
    --to=kashyap.desai@broadcom.com \
    --cc=hare@suse.com \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=shivasharan.srikanteshwara@broadcom.com \
    --cc=sumit.saxena@broadcom.com \
    --cc=thenzl@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox