From: Herbert Xu Subject: Re: [RFC v2 2/3] crypto: Introduce CRYPTO_ALG_BULK flag Date: Fri, 3 Jun 2016 16:21:52 +0800 Message-ID: <20160603082152.GA30551@gondor.apana.org.au> References: <47e9ddd8c9ea9ad9e29c8cb027d19d8459ea1479.1464346333.git.baolin.wang@linaro.org> <20160602082606.GA15226@gondor.apana.org.au> <20160603065146.GA29953@gondor.apana.org.au> <20160603075435.GA30149@gondor.apana.org.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jens Axboe , Alasdair G Kergon , Mike Snitzer , "open list:DEVICE-MAPPER (LVM)" , David Miller , Eric Biggers , Joonsoo Kim , tadeusz.struk@intel.com, smueller@chronox.de, Masanari Iida , Shaohua Li , Dan Williams , "Martin K. Petersen" , Sagi Grimberg , Kent Overstreet , Keith Busch , Tejun Heo , Ming Lei , Mark Brown , Arnd Bergmann , linux-crypto@vger.kernel.org, linux-block@vger.kernel.org, "open list:SOFTWARE RAID (Multiple Disks) SUPPORT" , LKML Return-path: Received: from helcar.hengli.com.au ([209.40.204.226]:56984 "EHLO helcar.hengli.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932066AbcFCIWc (ORCPT ); Fri, 3 Jun 2016 04:22:32 -0400 Content-Disposition: inline In-Reply-To: Sender: linux-crypto-owner@vger.kernel.org List-ID: On Fri, Jun 03, 2016 at 04:15:28PM +0800, Baolin Wang wrote: > > Suppose the cbc(aes) algorithm, which can not be handled through bulk > interface, it need to map the data sector by sector. > If we also handle the cbc(aes) algorithm with bulk interface, we need > to divide the sg table into sectors and need to allocate request > memory for each divided sectors (As Mike pointed out this is in the > IO mapping > path and we try to avoid memory allocations at all costs -- due to the > risk of deadlock when issuing IO to stacked block devices (dm-crypt > could be part of a much more elaborate IO stack). ), that will > introduce more messy things I think. Perhaps I'm not making myself very clear. If you move the IV generation into the crypto API, those crypto API algorithms will be operating at the sector level. For example, assuming you're doing lmk, then the algorithm would be called lmk(cbc(aes)) and it will take as its input one or more sectors and for each sector it should generate an IV and operate on it. Cheers, -- Email: Herbert Xu Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt