All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.