Commit 2d8f7f11 authored by Eric Biggers's avatar Eric Biggers

fscrypt: document gfp_flags for bounce page allocation

Document that fscrypt_encrypt_pagecache_blocks() allocates the bounce
page from a mempool, and document what this means for the @gfp_flags
argument.

Link: https://lore.kernel.org/r/20191231181026.47400-1-ebiggers@kernel.orgReviewed-by: default avatarTheodore Ts'o <tytso@mit.edu>
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent 796f12d7
...@@ -138,7 +138,7 @@ int fscrypt_crypt_block(const struct inode *inode, fscrypt_direction_t rw, ...@@ -138,7 +138,7 @@ int fscrypt_crypt_block(const struct inode *inode, fscrypt_direction_t rw,
* multiple of the filesystem's block size. * multiple of the filesystem's block size.
* @offs: Byte offset within @page of the first block to encrypt. Must be * @offs: Byte offset within @page of the first block to encrypt. Must be
* a multiple of the filesystem's block size. * a multiple of the filesystem's block size.
* @gfp_flags: Memory allocation flags * @gfp_flags: Memory allocation flags. See details below.
* *
* A new bounce page is allocated, and the specified block(s) are encrypted into * A new bounce page is allocated, and the specified block(s) are encrypted into
* it. In the bounce page, the ciphertext block(s) will be located at the same * it. In the bounce page, the ciphertext block(s) will be located at the same
...@@ -148,6 +148,11 @@ int fscrypt_crypt_block(const struct inode *inode, fscrypt_direction_t rw, ...@@ -148,6 +148,11 @@ int fscrypt_crypt_block(const struct inode *inode, fscrypt_direction_t rw,
* *
* This is for use by the filesystem's ->writepages() method. * This is for use by the filesystem's ->writepages() method.
* *
* The bounce page allocation is mempool-backed, so it will always succeed when
* @gfp_flags includes __GFP_DIRECT_RECLAIM, e.g. when it's GFP_NOFS. However,
* only the first page of each bio can be allocated this way. To prevent
* deadlocks, for any additional pages a mask like GFP_NOWAIT must be used.
*
* Return: the new encrypted bounce page on success; an ERR_PTR() on failure * Return: the new encrypted bounce page on success; an ERR_PTR() on failure
*/ */
struct page *fscrypt_encrypt_pagecache_blocks(struct page *page, struct page *fscrypt_encrypt_pagecache_blocks(struct page *page,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment