From: Satya Tangirala <satyat@google.com>
To: "Theodore Y . Ts'o" <tytso@mit.edu>,
Jaegeuk Kim <jaegeuk@kernel.org>,
Eric Biggers <ebiggers@kernel.org>, Chao Yu <chao@kernel.org>,
Jens Axboe <axboe@kernel.dk>,
"Darrick J . Wong" <darrick.wong@oracle.com>
Cc: linux-kernel@vger.kernel.org, linux-fscrypt@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-xfs@vger.kernel.org, linux-block@vger.kernel.org,
linux-ext4@vger.kernel.org, Satya Tangirala <satyat@google.com>
Subject: [PATCH v7 0/8] add support for direct I/O with fscrypt using blk-crypto
Date: Tue, 17 Nov 2020 14:07:00 +0000 [thread overview]
Message-ID: <20201117140708.1068688-1-satyat@google.com> (raw)
This patch series adds support for direct I/O with fscrypt using
blk-crypto. It has been rebased on fscrypt/master (i.e. the "master"
branch of the fscrypt tree at
https://git.kernel.org/pub/scm/fs/fscrypt/fscrypt.git)
Patch 1 ensures that bios are not split in the middle of a crypto data
unit.
Till now, blk-crypto expected the offset and length of each bvec in a bio
to be aligned to the crypto data unit size. Patch 2 enables
blk-crypto-fallback to work without this requirement. It also relaxes the
alignment requirement that blk-crypto checks for - now, blk-crypto only
requires that the length of the I/O is aligned to the crypto data unit
size.
Patch 3 adds two functions to fscrypt that need to be called to determine
if direct I/O is supported for a request.
Patches 4 and 5 modify direct-io and iomap respectively to set bio crypt
contexts on bios when appropriate by calling into fscrypt.
Patches 6 and 7 allow ext4 and f2fs direct I/O to support fscrypt without
falling back to buffered I/O.
Patch 8 updates the fscrypt documentation for direct I/O support.
The documentation now notes the required conditions for inline encryption
and direct I/O on encrypted files.
This patch series was tested by running xfstests with test_dummy_encryption
with and without the 'inlinecrypt' mount option, and there were no
meaningful regressions. One regression was for generic/587 on ext4,
but that test isn't compatible with test_dummy_encryption in the first
place, and the test "incorrectly" passes without the 'inlinecrypt' mount
option - a patch will be sent out to exclude that test when
test_dummy_encryption is turned on with ext4 (like the other quota related
tests that use user visible quota files).
Changes v6 => v7:
- add patches 1 and 2 to allow blk-crypto to work with user buffers not
aligned to crypto data unit size, so that direct I/O doesn't require
that alignment either.
- some cleanups
Changes v5 => v6:
- fix bug with fscrypt_limit_io_blocks() and make it ready for 64 bit
block numbers.
- remove Reviewed-by for Patch 1 due to significant changes from when
the Reviewed-by was given.
Changes v4 => v5:
- replace fscrypt_limit_io_pages() with fscrypt_limit_io_block(), which
is now called by individual filesystems (currently only ext4) instead
of the iomap code. This new function serves the same end purpose as
the one it replaces (ensuring that DUNs within a bio are contiguous)
but operates purely with blocks instead of with pages.
- make iomap_dio_zero() set bio_crypt_ctx's again, instead of just a
WARN_ON() since some folks prefer that instead.
- add Reviewed-by's
Changes v3 => v4:
- Fix bug in iomap_dio_bio_actor() where fscrypt_limit_io_pages() was
being called too early (thanks Eric!)
- Improve comments and fix formatting in documentation
- iomap_dio_zero() is only called to zero out partial blocks, but
direct I/O is only supported on encrypted files when I/O is
blocksize aligned, so it doesn't need to set encryption contexts on
bios. Replace setting the encryption context with a WARN_ON(). (Eric)
Changes v2 => v3:
- add changelog to coverletter
Changes v1 => v2:
- Fix bug in f2fs caused by replacing f2fs_post_read_required() with
!fscrypt_dio_supported() since the latter doesn't check for
compressed inodes unlike the former.
- Add patches 6 and 7 for fscrypt documentation
- cleanups and comments
Eric Biggers (5):
fscrypt: add functions for direct I/O support
direct-io: add support for fscrypt using blk-crypto
iomap: support direct I/O with fscrypt using blk-crypto
ext4: support direct I/O with fscrypt using blk-crypto
f2fs: support direct I/O with fscrypt using blk-crypto
Satya Tangirala (3):
block: ensure bios are not split in middle of crypto data unit
blk-crypto: don't require user buffer alignment
fscrypt: update documentation for direct I/O support
Documentation/filesystems/fscrypt.rst | 21 ++-
block/bio.c | 1 +
block/blk-crypto-fallback.c | 212 +++++++++++++++++++-------
block/blk-crypto-internal.h | 18 +++
block/blk-crypto.c | 19 +--
block/blk-merge.c | 96 ++++++++++--
block/blk-mq.c | 3 +
block/bounce.c | 4 +
fs/crypto/crypto.c | 8 +
fs/crypto/inline_crypt.c | 74 +++++++++
fs/direct-io.c | 15 +-
fs/ext4/file.c | 10 +-
fs/ext4/inode.c | 7 +
fs/f2fs/f2fs.h | 6 +-
fs/iomap/direct-io.c | 6 +
include/linux/fscrypt.h | 18 +++
16 files changed, 431 insertions(+), 87 deletions(-)
--
2.29.2.299.gdc1121823c-goog
next reply other threads:[~2020-11-17 14:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-17 14:07 Satya Tangirala [this message]
2020-11-17 14:07 ` [PATCH v7 1/8] block: ensure bios are not split in middle of crypto data unit Satya Tangirala
2020-11-17 23:31 ` Eric Biggers
2020-11-18 0:38 ` Satya Tangirala
2020-11-25 22:12 ` Eric Biggers
2020-12-02 22:52 ` Satya Tangirala
2020-11-25 22:15 ` Eric Biggers
2020-11-17 14:07 ` [PATCH v7 2/8] blk-crypto: don't require user buffer alignment Satya Tangirala
2020-11-17 23:51 ` Eric Biggers
2020-11-17 14:07 ` [PATCH v7 3/8] fscrypt: add functions for direct I/O support Satya Tangirala
2020-11-17 14:07 ` [PATCH v7 4/8] direct-io: add support for fscrypt using blk-crypto Satya Tangirala
2020-11-17 14:07 ` [PATCH v7 5/8] iomap: support direct I/O with " Satya Tangirala
2020-11-17 14:07 ` [PATCH v7 6/8] ext4: " Satya Tangirala
2020-12-03 13:45 ` Theodore Y. Ts'o
2020-11-17 14:07 ` [PATCH v7 7/8] f2fs: " Satya Tangirala
2020-11-17 14:07 ` [PATCH v7 8/8] fscrypt: update documentation for direct I/O support Satya Tangirala
2020-11-18 2:38 ` Eric Biggers
2020-11-17 17:15 ` [PATCH v7 0/8] add support for direct I/O with fscrypt using blk-crypto Theodore Y. Ts'o
2020-11-17 17:20 ` Darrick J. Wong
2020-12-03 23:57 ` Satya Tangirala
2020-11-18 2:51 ` Eric Biggers
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=20201117140708.1068688-1-satyat@google.com \
--to=satyat@google.com \
--cc=axboe@kernel.dk \
--cc=chao@kernel.org \
--cc=darrick.wong@oracle.com \
--cc=ebiggers@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=tytso@mit.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox