From: Tomas Henzl <thenzl@redhat.com> To: Sumit Saxena <sumit.saxena@avagotech.com>, jbottomley@parallels.com, hch@infradead.org, martin.petersen@oracle.com Cc: linux-scsi@vger.kernel.org, kashyap.desai@avagotech.com Subject: Re: [PATCH 10/15] megaraid_sas: IO throttling support Date: Tue, 19 Jan 2016 14:38:04 +0100 [thread overview] Message-ID: <569E3C3C.6040507@redhat.com> (raw) In-Reply-To: <1450445228-26571-11-git-send-email-Sumit.Saxena@avagotech.com> On 18.12.2015 14:27, Sumit Saxena wrote: > This patch will add capability in driver to tell firmware that it can throttle IOs in case Controller's Queue depth is downgraded post OFU > (Online firmware upgrade). This feature will ensure firmware can be downgraded from higher queue depth to lower queue depth without needing system reboot. > Added throttling code in IO path of driver, in case OS tries to send more IOs than post OFU firmware's queue depth. > > Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com> > Signed-off-by: Kashyap Desai <kashyap.desai@avagotech.com> > --- > drivers/scsi/megaraid/megaraid_sas.h | 6 ++++-- > drivers/scsi/megaraid/megaraid_sas_fusion.c | 7 +++++++ > 2 files changed, 11 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h > index 4595ef4..9d2b3da 100644 > --- a/drivers/scsi/megaraid/megaraid_sas.h > +++ b/drivers/scsi/megaraid/megaraid_sas.h > @@ -1537,7 +1537,8 @@ union megasas_sgl_frame { > typedef union _MFI_CAPABILITIES { > struct { > #if defined(__BIG_ENDIAN_BITFIELD) > - u32 reserved:21; > + u32 reserved:20; > + u32 support_qd_throttling:1; > u32 support_fp_rlbypass:1; > u32 support_vfid_in_ioframe:1; > u32 support_ext_io_size:1; > @@ -1561,7 +1562,8 @@ typedef union _MFI_CAPABILITIES { > u32 support_ext_io_size:1; > u32 support_vfid_in_ioframe:1; > u32 support_fp_rlbypass:1; > - u32 reserved:21; > + u32 support_qd_throttling:1; > + u32 reserved:20; > #endif > } mfi_capabilities; > __le32 reg; > diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c > index 7cc7806..1248c7a 100644 > --- a/drivers/scsi/megaraid/megaraid_sas_fusion.c > +++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c > @@ -801,6 +801,7 @@ megasas_ioc_init_fusion(struct megasas_instance *instance) > if (!dual_qdepth_disable) > drv_ops->mfi_capabilities.support_ext_queue_depth = 1; > > + drv_ops->mfi_capabilities.support_qd_throttling = 1; > /* Convert capability to LE32 */ > cpu_to_le32s((u32 *)&init_frame->driver_operations.mfi_capabilities); > > @@ -2182,6 +2183,12 @@ megasas_build_and_issue_cmd_fusion(struct megasas_instance *instance, > atomic_inc(&instance->ldio_outstanding); > } > > + if (atomic_read(&instance->fw_outstanding) >= > + instance->host->can_queue) { > + dev_err(&instance->pdev->dev, "Throttle IOs beyond Controller queue depth\n"); > + return SCSI_MLQUEUE_HOST_BUSY; > + } Same as in the previous patch, this this test above won't you protect when several processes read the same value in parallel. In addition to that, when the scsi layer knows the new smaller can_queue value it will not queue new commands above the limit. > + > cmd = megasas_get_cmd_fusion(instance, scmd->request->tag); > > index = cmd->index;
next prev parent reply other threads:[~2016-01-19 13:38 UTC|newest] Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-12-18 13:26 [PATCH 00/15] megaraid_sas: Updates for scsi-next Sumit Saxena 2015-12-18 13:26 ` [PATCH 01/15] megaraid_sas: Do not allow PCI access during OCR Sumit Saxena 2016-01-11 17:02 ` Tomas Henzl 2015-12-18 13:26 ` [PATCH 02/15] megaraid_sas: MFI IO timeout handling Sumit Saxena 2016-01-11 17:02 ` Tomas Henzl 2015-12-18 13:26 ` [PATCH 03/15] megaraid_sas: Syncing request flags macro names with firmware Sumit Saxena 2016-01-11 17:03 ` Tomas Henzl 2015-12-18 13:26 ` [PATCH 04/15] megaraid_sas: Task management support Sumit Saxena 2016-01-11 17:03 ` Tomas Henzl 2016-01-14 12:04 ` Sumit Saxena 2015-12-18 13:26 ` [PATCH 05/15] megaraid_sas: Update device Queue depth based on interface type Sumit Saxena 2016-01-12 14:16 ` Tomas Henzl 2016-01-14 11:48 ` Sumit Saxena 2015-12-18 13:26 ` [PATCH 06/15] megaraid_sas: Fastpath region lock bypass Sumit Saxena 2016-01-12 14:44 ` Tomas Henzl 2015-12-18 13:27 ` [PATCH 07/15] megaraid_sas: Reply Descriptor Post Queue(RDPQ) support Sumit Saxena 2015-12-18 14:49 ` [PATCH] megaraid_sas: fix kzalloc-simple.cocci warnings kbuild test robot 2015-12-18 14:49 ` [PATCH 07/15] megaraid_sas: Reply Descriptor Post Queue(RDPQ) support kbuild test robot 2016-01-14 17:38 ` Tomas Henzl 2016-01-27 18:15 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 08/15] megaraid_sas: Code optimization build_and_issue_cmd return-type Sumit Saxena 2016-01-14 18:05 ` Tomas Henzl 2015-12-18 13:27 ` [PATCH 09/15] megaraid_sas: Dual Queue depth support Sumit Saxena 2016-01-19 13:34 ` Tomas Henzl 2016-01-19 13:44 ` Sumit Saxena 2016-01-20 13:55 ` Tomas Henzl 2016-01-20 14:09 ` Sumit Saxena 2016-01-20 14:16 ` Tomas Henzl 2016-01-20 15:08 ` Sumit Saxena 2016-01-20 16:00 ` Tomas Henzl 2016-01-27 2:02 ` Martin K. Petersen 2016-01-27 7:09 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 10/15] megaraid_sas: IO throttling support Sumit Saxena 2016-01-19 13:38 ` Tomas Henzl [this message] 2016-01-28 7:18 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 11/15] megaraid_sas: Make adprecovery variable atomic Sumit Saxena 2016-01-19 13:52 ` Tomas Henzl 2016-01-28 8:30 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 12/15] megaraid_sas: MFI adapter's OCR changes Sumit Saxena 2016-01-19 14:22 ` Tomas Henzl 2016-01-28 11:12 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 13/15] megaraid_sas: Introduce module parameter for SCSI command-timeout Sumit Saxena 2016-01-19 14:57 ` Tomas Henzl 2016-01-28 11:17 ` Sumit Saxena 2015-12-18 13:27 ` [PATCH 14/15] megaraid_sas: SPERC OCR changes Sumit Saxena 2016-01-19 15:14 ` Tomas Henzl 2015-12-18 13:27 ` [PATCH 15/15] megaraid_sas: SPERC boot driver reorder Sumit Saxena 2015-12-18 14:05 ` Christoph Hellwig 2016-01-08 7:07 ` Sumit Saxena 2016-01-12 5:26 ` Sumit Saxena
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=569E3C3C.6040507@redhat.com \ --to=thenzl@redhat.com \ --cc=hch@infradead.org \ --cc=jbottomley@parallels.com \ --cc=kashyap.desai@avagotech.com \ --cc=linux-scsi@vger.kernel.org \ --cc=martin.petersen@oracle.com \ --cc=sumit.saxena@avagotech.com \ --subject='Re: [PATCH 10/15] megaraid_sas: IO throttling support' \ /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
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.