All of lore.kernel.org
 help / color / mirror / Atom feed
From: Herbert Xu <herbert@gondor.apana.org.au>
To: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: "'Li, Weigang'" <weigang.li@intel.com>,
	linux-crypto@vger.kernel.org, "'Struk,
	Tadeusz'" <tadeusz.struk@intel.com>,
	'Sergey Senozhatsky' <sergey.senozhatsky.work@gmail.com>,
	minchan@kernel.org
Subject: Re: [PATCH] crypto: add asynchronous compression support
Date: Fri, 20 Nov 2015 14:19:45 +0800	[thread overview]
Message-ID: <20151120061945.GA15262@gondor.apana.org.au> (raw)
In-Reply-To: <003101d12359$5c1f9450$145ebcf0$@lge.com>

On Fri, Nov 20, 2015 at 03:04:47PM +0900, Joonsoo Kim wrote:
>
> Linearization would be enough to use sg-list but it has a problem.
> Linearization needs sleepable function such as vmap() and it makes
> sync (de)compression in atomic context impossible. Currently, zram
> did sync (de)compression in atomic context. It uses map_vm_area() which
> isn't sleepable function to linearize two separate pages. This is possible
> because zram already knows that maximum number of spread pages is just two
> and have allocated vm area in advance. But, if we implement linearization
> in general API, we can't be sure of request input size so we need
> sleepable function, vmap().
> 
> And, this sleep could degrade performance.

Obviously you would only perform linearisation where it's needed.
And if you are in an atomic context, then clearly linearisation
can only be attempted using kmalloc/alloc_pages with GFP_ATOMIC.

I don't understand your concern with zram because either zram is
already feeding us linear buffers in which case linearisation is
never needed.  Or it can only be used with algorithms that support
SG lists or partial updates, which we can easily mark using a flag.

> Intermediate buffer size could vary greatly so it would be allocated and
> Freed whenever requested. This could affect performance.

That's for the crypto user to figure out.  Either they should
supply a completely linear buffer if they want to be able to
support every algorithm in an efficient manner, or they will
either have to eat the cost of linearisation or only use algorithms
that can deal with SG lists efficiently.

We have the same problem with network drivers and it's dealt with
in exactly the same way.  An skb can be an SG list and will be
linearised when necessary.

> I think that supporting unified API has more loss than gain.

I disagree.  I have seen no valid reason so far for adding two
compression interfaces.

Cheers,
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

  reply	other threads:[~2015-11-20  6:19 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-16 15:11 [PATCH] crypto: add asynchronous compression support Weigang Li
2015-10-16 15:13 ` Herbert Xu
     [not found]   ` <929511EA6367314D8E32364A24D45FA612FE85D3@shsmsx102.ccr.corp.intel.com>
     [not found]     ` <000e01d10a12$9e381660$daa84320$@lge.com>
     [not found]       ` <20151019084905.GE963@bbox>
     [not found]         ` <20151021073322.GA31901@swordfish>
     [not found]           ` <20151021073418.GA14479@gondor.apana.org.au>
2015-10-21  7:59             ` Li, Weigang
2015-10-28 23:13               ` Dan Streetman
2015-11-06  1:55   ` Li, Weigang
2015-11-19  5:52   ` Li, Weigang
2015-11-19  9:42     ` Herbert Xu
2015-11-20  6:04       ` Joonsoo Kim
2015-11-20  6:19         ` Herbert Xu [this message]
2015-11-20  7:25           ` Li, Weigang

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=20151120061945.GA15262@gondor.apana.org.au \
    --to=herbert@gondor.apana.org.au \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-crypto@vger.kernel.org \
    --cc=minchan@kernel.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    --cc=tadeusz.struk@intel.com \
    --cc=weigang.li@intel.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.