All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: linux-ext4@vger.kernel.org
Cc: linux-fscrypt@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	Chandan Rajendra <chandan@linux.ibm.com>
Subject: [PATCH v2 0/2] ext4: support encryption with blocksize != PAGE_SIZE
Date: Tue, 22 Oct 2019 20:33:10 -0700	[thread overview]
Message-ID: <20191023033312.361355-1-ebiggers@kernel.org> (raw)

Hello,

This patchset makes ext4 support encryption on filesystems where the
filesystem block size is not equal to PAGE_SIZE.  This allows e.g.
PowerPC systems to use ext4 encryption.

Most of the work for this was already done in prior kernel releases; now
the only part missing is decryption support in block_read_full_page().
Chandan Rajendra has proposed a patchset "Consolidate FS read I/O
callbacks code" [1] to address this and do various other things like
make ext4 use mpage_readpages() again, and make ext4 and f2fs share more
code.  But it doesn't seem to be going anywhere.

Therefore, I propose we simply add decryption support to
block_read_full_page() for now.  This is a fairly small change, and it
gets ext4 encryption with subpage-sized blocks working.

Note: to keep things simple I'm just allocating the work object from the
bi_end_io function with GFP_ATOMIC.  But if people think it's necessary,
it could be changed to use preallocation like the page-based read path.

Tested with 'gce-xfstests -c ext4/encrypt_1k -g auto', using the new
"encrypt_1k" config I created.  All tests pass except for those that
already fail or are excluded with the encrypt or 1k configs, and 2 tests
that try to create 1023-byte symlinks which fails since encrypted
symlinks are limited to blocksize-3 bytes.  Also ran the dedicated
encryption tests using 'kvm-xfstests -c ext4/1k -g encrypt'; all pass,
including the on-disk ciphertext verification tests.

[1] https://lkml.kernel.org/linux-fsdevel/20190910155115.28550-1-chandan@linux.ibm.com/T/#u

Changed v1 => v2:
  - Added check for S_ISREG() which technically should be there, though
    it happens not to matter currently.

Chandan Rajendra (1):
  ext4: Enable encryption for subpage-sized blocks

Eric Biggers (1):
  fs/buffer.c: support fscrypt in block_read_full_page()

 Documentation/filesystems/fscrypt.rst |  4 +--
 fs/buffer.c                           | 48 ++++++++++++++++++++++++---
 fs/ext4/super.c                       |  7 ----
 3 files changed, 45 insertions(+), 14 deletions(-)

-- 
2.23.0


             reply	other threads:[~2019-10-23  3:34 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23  3:33 Eric Biggers [this message]
2019-10-23  3:33 ` [PATCH v2 1/2] fs/buffer.c: support fscrypt in block_read_full_page() Eric Biggers
2019-10-23  3:33 ` [PATCH v2 2/2] ext4: Enable encryption for subpage-sized blocks Eric Biggers
2019-10-25 13:30 ` [PATCH v2 0/2] ext4: support encryption with blocksize != PAGE_SIZE Chandan Rajendra
2019-11-06 21:54 ` Eric Biggers
2019-11-11 20:28   ` 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=20191023033312.361355-1-ebiggers@kernel.org \
    --to=ebiggers@kernel.org \
    --cc=chandan@linux.ibm.com \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-fscrypt@vger.kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.