All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@lst.de>
To: Ming Lin <mlin@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org,
	Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH RFC 1/2] scatterlist: add mempool based chained SG alloc/free api
Date: Wed, 16 Mar 2016 09:23:39 +0100	[thread overview]
Message-ID: <20160316082339.GA6203@lst.de> (raw)
In-Reply-To: <1458081569-30953-2-git-send-email-mlin@kernel.org>

>  /*
> + * The maximum number of SG segments that we will put inside a
> + * scatterlist.
> + *
> + * XXX: what's the best number?
> + */
> +#define SG_MAX_SEGMENTS			128

The important part here is that it's the amount we fit into a single
scatterlist chunk.  So I think naming it SG_CHUNK_SIZE  or similar
would be a better idea (the name in SCSI is from the days before
we supported chained S/G lists).

It would also be good to ⅺring over the comments from
SCSI_MAX_SG_SEGMENTS.

We'll also need a symbol like SCSI_MAX_SG_CHAIN_SEGMENTS that contains
the absolute limit, and we need the CONFIG_ARCH_HAS_SG_CHAIN magic
around it for now as we still have architetures that do not support
S/G chanining in their dma_map_sg implementation.  I plan to fix that
up in a merge window or two, though.  My name suggestion for that
would be SG_MAX_SEGMENTS.

> +#define SG_MEMPOOL_NR		ARRAY_SIZE(sg_pools)

We can defintively kill this one.

> +#define SG_MEMPOOL_SIZE		2
> +
> +struct sg_mempool {

I'd keep this as struct sg_pool, similar to SCSI.

> +/**
> + * sg_free_chained - Free a previously mapped sg table
> + * @table:	The sg table header to use
> + * @first_chunk: was first_chunk not NULL in sg_alloc_chained?
> + *
> + *  Description:
> + *    Free an sg table previously allocated and setup with
> + *    sg_alloc_chained().
> + *
> + **/
> +void sg_free_chained(struct sg_table *table, bool first_chunk)

Can we call this sg_free_table_chained to be similar to sg_table_free?
Same for the alloc side.

> +static __init int sg_mempool_init(void)
> +{
> +	int i;
> +
> +	for (i = 0; i < SG_MEMPOOL_NR; i++) {
> +		struct sg_mempool *sgp = sg_pools + i;
> +		int size = sgp->size * sizeof(struct scatterlist);
> +
> +		sgp->slab = kmem_cache_create(sgp->name, size, 0,
> +				SLAB_HWCACHE_ALIGN, NULL);

Having these mempoools around in every kernel will make some embedded
developers rather unhappy.  We could either not create them at
runtime, which would require either a check in the fast path, or
an init call in every driver, or just move the functions you
added into a separe file, which will be compiled only based on a Kconfig
symbol, and could even be potentially modular.  I think that
second option might be easier.

  reply	other threads:[~2016-03-16  8:23 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-15 22:39 [PATCH RFC 0/2] mempool based chained scatterlist alloc/free api api Ming Lin
2016-03-15 22:39 ` [PATCH RFC 1/2] scatterlist: add mempool based chained SG alloc/free api Ming Lin
2016-03-16  8:23   ` Christoph Hellwig [this message]
2016-03-21  6:55     ` Ming Lin
2016-03-21  6:55       ` Ming Lin
2016-03-21 14:48       ` Christoph Hellwig
2016-03-21 14:48         ` Christoph Hellwig
2016-04-07 14:56   ` Bart Van Assche
2016-04-07 14:56     ` Bart Van Assche
2016-04-07 16:43     ` Ming Lin
2016-04-08  5:41       ` Ming Lin
2016-03-15 22:39 ` [PATCH RFC 2/2] scsi: use the new chained SG api Ming Lin
2016-03-15 23:12 ` [PATCH RFC 0/2] mempool based chained scatterlist alloc/free api api James Bottomley
2016-03-16  5:18   ` Ming Lin
2016-03-16  8:26   ` Christoph Hellwig

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=20160316082339.GA6203@lst.de \
    --to=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=mlin@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.