All of lore.kernel.org
 help / color / mirror / Atom feed
From: brace <brace@pmcs.com>
To: Hannes Reinecke <hare@suse.de>, Scott Teel <Scott.Teel@pmcs.com>,
	Kevin Barnett <Kevin.Barnett@pmcs.com>,
	"james.bottomley@parallels.com" <james.bottomley@parallels.com>,
	"hch@infradead.org" <hch@infradead.org>,
	Justin Lindley <Justin.Lindley@pmcs.com>, brace <brace@pmcs.com>
Cc: "linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Subject: RE: [PATCH v4 19/43] hpsa: add ioaccel sg chaining for the ioaccel2 path
Date: Wed, 22 Apr 2015 19:12:03 +0000	[thread overview]
Message-ID: <07F70BBF6832E34FA1C923241E8833AB4869FBD3@BBYEXM01.pmc-sierra.internal> (raw)
In-Reply-To: <55310729.1040304@suse.de>

The last I read about mempools was from:
Linux Device Drivers
 By Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman

https://lwn.net/images/pdf/LDD3/ch08.pdf


If  you  are  considering  using  a  mempool  in  your  driver,  please  keep  one  thing  in
mind: mempools allocate a chunk of memory that sits in a list, idle and unavailable
for any real use. It is easy to consume a great deal of memory with mempools. In
almost every case, the preferred alternative is to do without the mempool and simply
deal with the possibility of allocation failures instead. If there is any way for your
driver to respond to an allocation failure in a way that does not endanger the integ-
rity of the system, do things that way. Use of mempools in driver code should be
rare

But this book is now quite old in Linux terms.

So, I can investigate using mempools. However, I would prefer to continue using the existing methods in this current patchset.

I hope that is ok with you...


> -----Original Message-----
> From: Hannes Reinecke [mailto:hare@suse.de]
> Sent: Friday, April 17, 2015 8:14 AM
> To: Don Brace; Scott Teel; Kevin Barnett; james.bottomley@parallels.com;
> hch@infradead.org; Justin Lindley; brace
> Cc: linux-scsi@vger.kernel.org
> Subject: Re: [PATCH v4 19/43] hpsa: add ioaccel sg chaining for the ioaccel2
> path
> 
> On 04/16/2015 03:48 PM, Don Brace wrote:
> > From: Webb Scales <webbnh@hp.com>
> >
> > Increase the request size for ioaccel2 path.
> >
> > The error, if any, returned by hpsa_allocate_ioaccel2_sg_chain_blocks
> > to hpsa_alloc_ioaccel2_cmd_and_bft should be returned upstream rather
> > than assumed to be -ENOMEM.
> >
> > This differs slightly from hpsa_alloc_ioaccel1_cmd_and_bft,
> > which does not call another hpsa_allocate function and only
> > has -ENOMEM to return from some kmalloc calls.
> >
> > Reviewed-by: Scott Teel <scott.teel@pmcs.com>
> > Reviewed-by: Kevin Barnett <kevin.barnett@pmcs.com>
> > Signed-off-by: Robert Elliott <elliott@hp.com>
> > Signed-off-by: Don Brace <don.brace@pmcs.com>
> > ---
> >  drivers/scsi/hpsa.c |  125
> +++++++++++++++++++++++++++++++++++++++++++++++----
> >  drivers/scsi/hpsa.h |    1
> >  2 files changed, 116 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
> > index c9c42e9..1839761 100644
> > --- a/drivers/scsi/hpsa.c
> > +++ b/drivers/scsi/hpsa.c
> > @@ -1704,6 +1704,46 @@ static void hpsa_slave_destroy(struct scsi_device
> *sdev)
> >  	/* nothing to do. */
> >  }
> >
> > +static void hpsa_free_ioaccel2_sg_chain_blocks(struct ctlr_info *h)
> > +{
> > +	int i;
> > +
> > +	if (!h->ioaccel2_cmd_sg_list)
> > +		return;
> > +	for (i = 0; i < h->nr_cmds; i++) {
> > +		kfree(h->ioaccel2_cmd_sg_list[i]);
> > +		h->ioaccel2_cmd_sg_list[i] = NULL;
> > +	}
> > +	kfree(h->ioaccel2_cmd_sg_list);
> > +	h->ioaccel2_cmd_sg_list = NULL;
> > +}
> > +
> > +static int hpsa_allocate_ioaccel2_sg_chain_blocks(struct ctlr_info *h)
> > +{
> > +	int i;
> > +
> > +	if (h->chainsize <= 0)
> > +		return 0;
> > +
> > +	h->ioaccel2_cmd_sg_list =
> > +		kzalloc(sizeof(*h->ioaccel2_cmd_sg_list) * h->nr_cmds,
> > +					GFP_KERNEL);
> > +	if (!h->ioaccel2_cmd_sg_list)
> > +		return -ENOMEM;
> > +	for (i = 0; i < h->nr_cmds; i++) {
> > +		h->ioaccel2_cmd_sg_list[i] =
> > +			kmalloc(sizeof(*h->ioaccel2_cmd_sg_list[i]) *
> > +					h->maxsgentries, GFP_KERNEL);
> > +		if (!h->ioaccel2_cmd_sg_list[i])
> > +			goto clean;
> > +	}
> > +	return 0;
> > +
> > +clean:
> > +	hpsa_free_ioaccel2_sg_chain_blocks(h);
> > +	return -ENOMEM;
> > +}
> > +
> >  static void hpsa_free_sg_chain_blocks(struct ctlr_info *h)
> >  {
> >  	int i;
> Any reason why you didn't use mempools here?
> 
> Cheers,
> 
> Hannes
> --
> Dr. Hannes Reinecke		               zSeries & Storage
> hare@suse.de			               +49 911 74053 688
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)

  reply	other threads:[~2015-04-22 19:12 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-16 13:46 [PATCH v4 00/43] hpsa update Don Brace
2015-04-16 13:46 ` [PATCH v4 01/43] hpsa: add masked physical devices into h->dev[] array Don Brace
2015-04-17 12:52   ` Hannes Reinecke
2015-04-17 13:15   ` Tomas Henzl
2015-04-16 13:46 ` [PATCH v4 02/43] hpsa: clean up host, channel, target, lun prints Don Brace
2015-04-17 12:53   ` Hannes Reinecke
2015-04-17 13:15   ` Tomas Henzl
2015-04-16 13:46 ` [PATCH v4 03/43] hpsa: rework controller command submission Don Brace
2015-04-17 12:57   ` Hannes Reinecke
2015-04-16 13:47 ` [PATCH v4 04/43] hpsa: clean up aborts Don Brace
2015-04-17 12:59   ` Hannes Reinecke
2015-04-17 13:19   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 05/43] hpsa: decrement h->commands_outstanding in fail_all_outstanding_cmds Don Brace
2015-04-17 13:00   ` Hannes Reinecke
2015-04-17 13:20   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 06/43] hpsa: hpsa decode sense data for io and tmf Don Brace
2015-04-17 13:03   ` Hannes Reinecke
2015-04-17 13:23   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 07/43] hpsa: allow lockup detected to be viewed via sysfs Don Brace
2015-04-17 13:04   ` Hannes Reinecke
2015-04-17 13:23   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 08/43] hpsa: make function names consistent Don Brace
2015-04-17 13:04   ` Hannes Reinecke
2015-04-17 13:24   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 09/43] hpsa: factor out hpsa_init_cmd function Don Brace
2015-04-17 13:05   ` Hannes Reinecke
2015-04-17 13:26   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 10/43] hpsa: do not ignore return value of hpsa_register_scsi Don Brace
2015-04-17 13:05   ` Hannes Reinecke
2015-04-17 13:26   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 11/43] hpsa: try resubmitting down raid path on task set full Don Brace
2015-04-17 13:06   ` Hannes Reinecke
2015-04-17 13:26   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 12/43] hpsa: factor out hpsa_ioaccel_submit function Don Brace
2015-04-17 13:07   ` Hannes Reinecke
2015-04-17 13:27   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 13/43] hpsa: print accurate SSD Smart Path Enabled status Don Brace
2015-04-17 13:07   ` Hannes Reinecke
2015-04-17 13:27   ` Tomas Henzl
2015-04-16 13:47 ` [PATCH v4 14/43] hpsa: use ioaccel2 path to submit IOs to physical drives in HBA mode Don Brace
2015-04-17 13:08   ` Hannes Reinecke
2015-04-17 13:28   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 15/43] hpsa: Get queue depth from identify physical bmic for physical disks Don Brace
2015-04-17 13:09   ` Hannes Reinecke
2015-04-17 13:28   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 16/43] hpsa: break hpsa_free_irqs_and_disable_msix into two functions Don Brace
2015-04-17 13:10   ` Hannes Reinecke
2015-04-17 13:28   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 17/43] hpsa: clean up error handling Don Brace
2015-04-17 13:11   ` Hannes Reinecke
2015-04-17 13:29   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 18/43] hpsa: refactor freeing of resources into more logical functions Don Brace
2015-04-17 13:12   ` Hannes Reinecke
2015-04-17 13:29   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 19/43] hpsa: add ioaccel sg chaining for the ioaccel2 path Don Brace
2015-04-17 13:14   ` Hannes Reinecke
2015-04-22 19:12     ` brace [this message]
2015-04-23  5:50       ` Hannes Reinecke
2015-04-23  7:39         ` hch
2015-04-16 13:48 ` [PATCH v4 20/43] hpsa: add more ioaccel2 error handling, including underrun statuses Don Brace
2015-04-17 13:15   ` Hannes Reinecke
2015-04-16 13:48 ` [PATCH v4 21/43] hpsa: do not check cmd_alloc return value - it cannnot return NULL Don Brace
2015-04-17 13:16   ` Hannes Reinecke
2015-04-17 13:32   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 22/43] hpsa: correct return values from driver functions Don Brace
2015-04-17 13:17   ` Hannes Reinecke
2015-04-17 13:33   ` Tomas Henzl
2015-04-17 13:39   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 23/43] hpsa: clean up driver init Don Brace
2015-04-17 13:19   ` Hannes Reinecke
2015-04-17 13:39   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 24/43] hpsa: clean up some error reporting output in abort handler Don Brace
2015-04-17 13:20   ` Hannes Reinecke
2015-04-17 13:39   ` Tomas Henzl
2015-04-16 13:48 ` [PATCH v4 25/43] hpsa: do not print ioaccel2 warning messages about unusual completions Don Brace
2015-04-17 13:21   ` Hannes Reinecke
2015-04-17 13:40   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 26/43] hpsa: add support sending aborts to physical devices via the ioaccel2 path Don Brace
2015-04-17 13:22   ` Hannes Reinecke
2015-04-17 13:40   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 27/43] hpsa: use helper routines for finishing commands Don Brace
2015-04-17 13:23   ` Hannes Reinecke
2015-04-17 13:42   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 28/43] hpsa: don't return abort request until target is complete Don Brace
2015-04-17 13:24   ` Hannes Reinecke
2015-04-17 13:43   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 29/43] hpsa: refactor and rework support for sending TEST_UNIT_READY Don Brace
2015-04-17 13:25   ` Hannes Reinecke
2015-04-17 13:43   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 30/43] hpsa: performance tweak for hpsa_scatter_gather() Don Brace
2015-04-17 13:26   ` Hannes Reinecke
2015-04-17 13:43   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 31/43] hpsa: call pci_release_regions after pci_disable_device Don Brace
2015-04-17 13:27   ` Hannes Reinecke
2015-04-17 13:44   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 32/43] hpsa: skip free_irq calls if irqs are not allocated Don Brace
2015-04-17 13:29   ` Hannes Reinecke
2015-04-17 13:44   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 33/43] hpsa: cleanup for init_one step 2 in kdump Don Brace
2015-04-17 13:29   ` Hannes Reinecke
2015-04-17 13:45   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 34/43] hpsa: fix try_soft_reset error handling Don Brace
2015-04-17 13:29   ` Hannes Reinecke
2015-04-17 13:45   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 35/43] hpsa: create workqueue after the driver is ready for use Don Brace
2015-04-17 13:30   ` Hannes Reinecke
2015-04-17 13:46   ` Tomas Henzl
2015-04-16 13:49 ` [PATCH v4 36/43] hpsa: add interrupt number to /proc/interrupts interrupt name Don Brace
2015-04-17 13:31   ` Hannes Reinecke
2015-04-17 13:47   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 37/43] hpsa: use block layer tag for command allocation Don Brace
2015-04-17 13:33   ` Hannes Reinecke
2015-04-17 13:50   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 38/43] hpsa: use scsi host_no as hpsa controller number Don Brace
2015-04-17 13:34   ` Hannes Reinecke
2015-04-17 13:50   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 39/43] hpsa: propagate the error code in hpsa_kdump_soft_reset Don Brace
2015-04-17 13:34   ` Hannes Reinecke
2015-04-17 13:51   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 40/43] hpsa: cleanup reset Don Brace
2015-04-17 13:36   ` Hannes Reinecke
2015-04-17 13:51   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 41/43] hpsa: change driver version Don Brace
2015-04-17 13:36   ` Hannes Reinecke
2015-04-17 13:52   ` Tomas Henzl
2015-04-16 13:50 ` [PATCH v4 42/43] hpsa: add PMC to copyright Don Brace
2015-04-17  1:00   ` Elliott, Robert (Server Storage)
2015-04-17 13:36   ` Hannes Reinecke
2015-04-16 13:50 ` [PATCH v4 43/43] hpsa: add in new controller id Don Brace
2015-04-17 13:37   ` Hannes Reinecke
2015-04-17 13:52   ` Tomas Henzl

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=07F70BBF6832E34FA1C923241E8833AB4869FBD3@BBYEXM01.pmc-sierra.internal \
    --to=brace@pmcs.com \
    --cc=Justin.Lindley@pmcs.com \
    --cc=Kevin.Barnett@pmcs.com \
    --cc=Scott.Teel@pmcs.com \
    --cc=hare@suse.de \
    --cc=hch@infradead.org \
    --cc=james.bottomley@parallels.com \
    --cc=linux-scsi@vger.kernel.org \
    /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.