Re: [PATCH] fscrypt: allow alternative bounce buffers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 19, 2022 at 09:21:25AM -0400, James Simmons wrote:
> Currently fscrypt offers two options. One option is to use the
> internal bounce buffer allocated or perform inline encrpytion.
> Add the option to use an external bounce buffer. This change can
> be used useful for example for a network file systems which can
> pass in a page from the page cache and place the encrypted data
> into a page for a network packet to be sent. Another potential
> use is the use of GPU pages with RDMA being the final destination
> for the encrypted data. Lastly in performance measurements the
> allocation of the bounce page incures a heavy cost. Using a page
> from a predefined memory pool can lower the case. We can replace
> the one off case of inplace encryption with the new general
> functions.
> 
> Signed-Off-By: James Simmons <jsimmons@xxxxxxxxxxxxx>
> ---
>  fs/crypto/crypto.c      | 34 +++++++++++++++++++---------------
>  fs/ubifs/crypto.c       | 16 +++++++++-------
>  include/linux/fscrypt.h | 31 ++++++++++++++++---------------
>  3 files changed, 44 insertions(+), 37 deletions(-)

Can you send a patch with the user of this at the same time?  This patch isn't
useful on its own.  UBIFS doesn't count, since it works fine without this.

>  /**
> - * fscrypt_encrypt_block_inplace() - Encrypt a filesystem block in-place
> + * fscrypt_encrypt_page() - Cache an encrypt filesystem block in a page

fscrypt_encrypt_block() would be a better name, to avoid confusion between
blocks and pages.

Also, "Cache an encrypt filesystem block" => "Encrypt a filesystem block"

>  /**
> - * fscrypt_decrypt_block_inplace() - Decrypt a filesystem block in-place
> + * fscrypt_decrypt_page() - Cache a decrypt a filesystem block in a page

Likewise, fscrypt_decrypt_block().

>   * @inode:     The inode to which this block belongs
> - * @page:      The page containing the block to decrypt
> + * @src:       The page containing the block to decrypt
> + * @dst:       The page which will contain the plain data
>   * @len:       Size of block to decrypt.  This must be a multiple of
>   *		FSCRYPT_CONTENTS_ALIGNMENT.
>   * @offs:      Byte offset within @page at which the block to decrypt begins
> @@ -292,17 +295,18 @@ EXPORT_SYMBOL(fscrypt_decrypt_pagecache_blocks);
>   * Decrypt a possibly-compressed filesystem block that is located in an
>   * arbitrary page, not necessarily in the original pagecache page.  The @inode
>   * and @lblk_num must be specified, as they can't be determined from @page.
> + * The encrypted data will be stored in @dst.
>   *
>   * Return: 0 on success; -errno on failure
>   */
> -int fscrypt_decrypt_block_inplace(const struct inode *inode, struct page *page,
> -				  unsigned int len, unsigned int offs,
> -				  u64 lblk_num)
> +int fscrypt_decrypt_page(const struct inode *inode, struct page *src,
> +			 struct page *dst, unsigned int len, unsigned int offs,
> +			 u64 lblk_num, gfp_t gfp_flags)

The new gfp_flags parameter is not documented in the kerneldoc comment.

- Eric



[Index of Archives]     [linux Cryptography]     [Asterisk App Development]     [PJ SIP]     [Gnu Gatekeeper]     [IETF Sipping]     [Info Cyrus]     [ALSA User]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite News]     [Deep Creek Hot Springs]     [Yosemite Campsites]     [ISDN Cause Codes]

  Powered by Linux