fscrypt: change fscrypt_dio_supported() to prepare for STATX_DIOALIGN
authorEric Biggers <ebiggers@google.com>
Sat, 27 Aug 2022 06:58:46 +0000 (23:58 -0700)
committerEric Biggers <ebiggers@google.com>
Mon, 12 Sep 2022 00:47:12 +0000 (19:47 -0500)
commit53dd3f802a6e269868cb599609287a841e65a996
tree78c146e44cc1b8328579a1d939fb3053ebb4d510
parent2d985f8c6b91b5007a16e640bb9c038c5fb2839b
fscrypt: change fscrypt_dio_supported() to prepare for STATX_DIOALIGN

To prepare for STATX_DIOALIGN support, make two changes to
fscrypt_dio_supported().

First, remove the filesystem-block-alignment check and make the
filesystems handle it instead.  It previously made sense to have it in
fs/crypto/; however, to support STATX_DIOALIGN the alignment restriction
would have to be returned to filesystems.  It ends up being simpler if
filesystems handle this part themselves, especially for f2fs which only
allows fs-block-aligned DIO in the first place.

Second, make fscrypt_dio_supported() work on inodes whose encryption key
hasn't been set up yet, by making it set up the key if needed.  This is
required for statx(), since statx() doesn't require a file descriptor.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Link: https://lore.kernel.org/r/20220827065851.135710-4-ebiggers@kernel.org
fs/crypto/inline_crypt.c
fs/ext4/file.c
fs/f2fs/f2fs.h
include/linux/fscrypt.h