mbox series

[RFC,00/10] Consolidate Post read processing code

Message ID 20190218100433.20048-1-chandan@linux.ibm.com (mailing list archive)
Headers show
Series Consolidate Post read processing code | expand

Message

Chandan Rajendra Feb. 18, 2019, 10:04 a.m. UTC
This patchset moves the "post read processing" code into a file of its
own and gets the generic do_mpage_readpge() to make use of the
functionality provided. With these changes in place, the patchset
changes Ext4 to use mpage_readpage[s] instead of its own custom
ext4_readpages() function. This is done to reduce duplicity of code
across filesystems. Based on the reviews provided for this patchset, I
will change F2FS to use mpage_readpage[s] and post the next version of
this patchset to linux-fsdevel mailing list.

The patchset also includes patches from previous postings i.e.
patches to replace per-filesystem encryption config options with a
single config option that affects all filesystems making use of
fscrypt code.

Chandan Rajendra (10):
  ext4: use IS_ENCRYPTED() to check encryption status
  f2fs: use IS_ENCRYPTED() to check encryption status
  fscrypt: remove filesystem specific build config option
  Consolidate "post read processing" into a new file
  fsverity: Add call back to decide if verity check has to be performed
  Introduce REQ_POST_READ_PROC bio flag
  fsverity: Add call back to determine readpage limit
  fsverity: Add call back to verify file holes
  fs/mpage.c: Integrate post read processing
  ext4: Wire up ext4_readpage[s] to use mpage_readpage[s]

 Documentation/filesystems/fscrypt.rst   |   4 +-
 arch/mips/configs/generic_defconfig     |   2 +-
 arch/nds32/configs/defconfig            |   2 +-
 arch/s390/configs/debug_defconfig       |   2 +-
 arch/s390/configs/performance_defconfig |   2 +-
 fs/Makefile                             |   3 +-
 fs/crypto/Kconfig                       |   5 +-
 fs/crypto/bio.c                         |  21 +-
 fs/crypto/crypto.c                      |   1 +
 fs/crypto/fscrypt_private.h             |   4 +-
 fs/ext4/Kconfig                         |  15 -
 fs/ext4/Makefile                        |   2 +-
 fs/ext4/dir.c                           |  10 +-
 fs/ext4/ext4.h                          |  14 +-
 fs/ext4/ext4_jbd2.h                     |   2 +-
 fs/ext4/extents.c                       |   4 +-
 fs/ext4/ialloc.c                        |   2 +-
 fs/ext4/inode.c                         |  29 +-
 fs/ext4/ioctl.c                         |   4 +-
 fs/ext4/move_extent.c                   |   3 +-
 fs/ext4/namei.c                         |  18 +-
 fs/ext4/page-io.c                       |   9 +-
 fs/ext4/readpage.c                      | 444 ------------------------
 fs/ext4/super.c                         |  43 ++-
 fs/ext4/sysfs.c                         |   4 +-
 fs/f2fs/Kconfig                         |  12 +-
 fs/f2fs/data.c                          |   4 +-
 fs/f2fs/dir.c                           |  10 +-
 fs/f2fs/f2fs.h                          |  14 +-
 fs/f2fs/file.c                          |  10 +-
 fs/f2fs/inode.c                         |   4 +-
 fs/f2fs/namei.c                         |   6 +-
 fs/f2fs/super.c                         |   8 +-
 fs/f2fs/sysfs.c                         |   4 +-
 fs/mpage.c                              |  77 +++-
 fs/post_read_process.c                  | 128 +++++++
 fs/ubifs/Kconfig                        |  12 +-
 fs/ubifs/Makefile                       |   2 +-
 fs/ubifs/ioctl.c                        |   4 +-
 fs/ubifs/sb.c                           |   2 +-
 fs/ubifs/super.c                        |   2 +-
 fs/ubifs/ubifs.h                        |   5 +-
 fs/verity/verify.c                      |  12 +
 include/linux/blk_types.h               |   2 +
 include/linux/fs.h                      |   4 +-
 include/linux/fscrypt.h                 | 405 ++++++++++++++++++++-
 include/linux/fscrypt_notsupp.h         | 231 ------------
 include/linux/fscrypt_supp.h            | 204 -----------
 include/linux/fsverity.h                |   3 +
 include/linux/post_read_process.h       |  21 ++
 50 files changed, 757 insertions(+), 1078 deletions(-)
 delete mode 100644 fs/ext4/readpage.c
 create mode 100644 fs/post_read_process.c
 delete mode 100644 include/linux/fscrypt_notsupp.h
 delete mode 100644 include/linux/fscrypt_supp.h
 create mode 100644 include/linux/post_read_process.h

Comments

Chandan Rajendra Feb. 18, 2019, 10:19 a.m. UTC | #1
On Monday, February 18, 2019 3:34:23 PM IST Chandan Rajendra wrote:
> This patchset moves the "post read processing" code into a file of its
> own and gets the generic do_mpage_readpge() to make use of the
> functionality provided. With these changes in place, the patchset
> changes Ext4 to use mpage_readpage[s] instead of its own custom
> ext4_readpages() function. This is done to reduce duplicity of code
> across filesystems. Based on the reviews provided for this patchset, I
> will change F2FS to use mpage_readpage[s] and post the next version of
> this patchset to linux-fsdevel mailing list.
> 
> The patchset also includes patches from previous postings i.e.
> patches to replace per-filesystem encryption config options with a
> single config option that affects all filesystems making use of
> fscrypt code.

The patchset is based on fsverity_2019-01-30 branch of Eric's git tree. It can
also be obtained from "https://github.com/chandanr/linux.git
use-mpage-readpage-rfc".

> 
> Chandan Rajendra (10):
>   ext4: use IS_ENCRYPTED() to check encryption status
>   f2fs: use IS_ENCRYPTED() to check encryption status
>   fscrypt: remove filesystem specific build config option
>   Consolidate "post read processing" into a new file
>   fsverity: Add call back to decide if verity check has to be performed
>   Introduce REQ_POST_READ_PROC bio flag
>   fsverity: Add call back to determine readpage limit
>   fsverity: Add call back to verify file holes
>   fs/mpage.c: Integrate post read processing
>   ext4: Wire up ext4_readpage[s] to use mpage_readpage[s]
> 
>  Documentation/filesystems/fscrypt.rst   |   4 +-
>  arch/mips/configs/generic_defconfig     |   2 +-
>  arch/nds32/configs/defconfig            |   2 +-
>  arch/s390/configs/debug_defconfig       |   2 +-
>  arch/s390/configs/performance_defconfig |   2 +-
>  fs/Makefile                             |   3 +-
>  fs/crypto/Kconfig                       |   5 +-
>  fs/crypto/bio.c                         |  21 +-
>  fs/crypto/crypto.c                      |   1 +
>  fs/crypto/fscrypt_private.h             |   4 +-
>  fs/ext4/Kconfig                         |  15 -
>  fs/ext4/Makefile                        |   2 +-
>  fs/ext4/dir.c                           |  10 +-
>  fs/ext4/ext4.h                          |  14 +-
>  fs/ext4/ext4_jbd2.h                     |   2 +-
>  fs/ext4/extents.c                       |   4 +-
>  fs/ext4/ialloc.c                        |   2 +-
>  fs/ext4/inode.c                         |  29 +-
>  fs/ext4/ioctl.c                         |   4 +-
>  fs/ext4/move_extent.c                   |   3 +-
>  fs/ext4/namei.c                         |  18 +-
>  fs/ext4/page-io.c                       |   9 +-
>  fs/ext4/readpage.c                      | 444 ------------------------
>  fs/ext4/super.c                         |  43 ++-
>  fs/ext4/sysfs.c                         |   4 +-
>  fs/f2fs/Kconfig                         |  12 +-
>  fs/f2fs/data.c                          |   4 +-
>  fs/f2fs/dir.c                           |  10 +-
>  fs/f2fs/f2fs.h                          |  14 +-
>  fs/f2fs/file.c                          |  10 +-
>  fs/f2fs/inode.c                         |   4 +-
>  fs/f2fs/namei.c                         |   6 +-
>  fs/f2fs/super.c                         |   8 +-
>  fs/f2fs/sysfs.c                         |   4 +-
>  fs/mpage.c                              |  77 +++-
>  fs/post_read_process.c                  | 128 +++++++
>  fs/ubifs/Kconfig                        |  12 +-
>  fs/ubifs/Makefile                       |   2 +-
>  fs/ubifs/ioctl.c                        |   4 +-
>  fs/ubifs/sb.c                           |   2 +-
>  fs/ubifs/super.c                        |   2 +-
>  fs/ubifs/ubifs.h                        |   5 +-
>  fs/verity/verify.c                      |  12 +
>  include/linux/blk_types.h               |   2 +
>  include/linux/fs.h                      |   4 +-
>  include/linux/fscrypt.h                 | 405 ++++++++++++++++++++-
>  include/linux/fscrypt_notsupp.h         | 231 ------------
>  include/linux/fscrypt_supp.h            | 204 -----------
>  include/linux/fsverity.h                |   3 +
>  include/linux/post_read_process.h       |  21 ++
>  50 files changed, 757 insertions(+), 1078 deletions(-)
>  delete mode 100644 fs/ext4/readpage.c
>  create mode 100644 fs/post_read_process.c
>  delete mode 100644 include/linux/fscrypt_notsupp.h
>  delete mode 100644 include/linux/fscrypt_supp.h
>  create mode 100644 include/linux/post_read_process.h
> 
>
Eric Biggers Feb. 19, 2019, 9:17 p.m. UTC | #2
Hi Chandan,

On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> This patchset moves the "post read processing" code into a file of its
> own and gets the generic do_mpage_readpge() to make use of the
> functionality provided. With these changes in place, the patchset
> changes Ext4 to use mpage_readpage[s] instead of its own custom
> ext4_readpages() function. This is done to reduce duplicity of code
> across filesystems. Based on the reviews provided for this patchset, I
> will change F2FS to use mpage_readpage[s] and post the next version of
> this patchset to linux-fsdevel mailing list.
> 
> The patchset also includes patches from previous postings i.e.
> patches to replace per-filesystem encryption config options with a
> single config option that affects all filesystems making use of
> fscrypt code.
> 
> Chandan Rajendra (10):
>   ext4: use IS_ENCRYPTED() to check encryption status
>   f2fs: use IS_ENCRYPTED() to check encryption status
>   fscrypt: remove filesystem specific build config option
>   Consolidate "post read processing" into a new file
>   fsverity: Add call back to decide if verity check has to be performed
>   Introduce REQ_POST_READ_PROC bio flag
>   fsverity: Add call back to determine readpage limit
>   fsverity: Add call back to verify file holes
>   fs/mpage.c: Integrate post read processing
>   ext4: Wire up ext4_readpage[s] to use mpage_readpage[s]
> 

Thanks for working on this!  This will also make it much easier to support
block_size != PAGE_SIZE in ext4 encryption, right?  I think this is the best
path forward, but I'll take a closer look at your new patches.

FYI regarding practical matters, merging fs-verity was delayed due to
disagreement about the API.  See https://lwn.net/Articles/775872/.

We don't have to wait for fs-verity for your initial fscrypt changes, though:

	ext4: use IS_ENCRYPTED() to check encryption status
	f2fs: use IS_ENCRYPTED() to check encryption status
	fscrypt: remove filesystem specific build config option

So, a couple weeks ago Ted and I already queued those three patches in
fscrypt.git (https://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt.git
branch "master", though we plan to change the repo soon) for the upcoming merge
window, based on upstream rather than fs-verity.  Are you fine with that?

I also suggest adding linux-fsdevel to the Cc given the fs/*.c changes.

Thanks!

- Eric
Eric Biggers Feb. 20, 2019, 12:41 a.m. UTC | #3
On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> Based on the reviews provided for this patchset, I
> will change F2FS to use mpage_readpage[s] and post the next version of
> this patchset to linux-fsdevel mailing list.

Is that really possible?  F2FS has other functionality in its ->readpages(),
such as support for filesystems that use multiple block devices.

- Eric
Chandan Rajendra Feb. 21, 2019, 1:29 p.m. UTC | #4
On Wednesday, February 20, 2019 2:47:16 AM IST Eric Biggers wrote:
> Hi Chandan,
> 
> On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> > This patchset moves the "post read processing" code into a file of its
> > own and gets the generic do_mpage_readpge() to make use of the
> > functionality provided. With these changes in place, the patchset
> > changes Ext4 to use mpage_readpage[s] instead of its own custom
> > ext4_readpages() function. This is done to reduce duplicity of code
> > across filesystems. Based on the reviews provided for this patchset, I
> > will change F2FS to use mpage_readpage[s] and post the next version of
> > this patchset to linux-fsdevel mailing list.
> > 
> > The patchset also includes patches from previous postings i.e.
> > patches to replace per-filesystem encryption config options with a
> > single config option that affects all filesystems making use of
> > fscrypt code.
> > 
> > Chandan Rajendra (10):
> >   ext4: use IS_ENCRYPTED() to check encryption status
> >   f2fs: use IS_ENCRYPTED() to check encryption status
> >   fscrypt: remove filesystem specific build config option
> >   Consolidate "post read processing" into a new file
> >   fsverity: Add call back to decide if verity check has to be performed
> >   Introduce REQ_POST_READ_PROC bio flag
> >   fsverity: Add call back to determine readpage limit
> >   fsverity: Add call back to verify file holes
> >   fs/mpage.c: Integrate post read processing
> >   ext4: Wire up ext4_readpage[s] to use mpage_readpage[s]
> > 
> 
> Thanks for working on this!  This will also make it much easier to support
> block_size != PAGE_SIZE in ext4 encryption, right?  I think this is the best
> path forward, but I'll take a closer look at your new patches.
> 
> FYI regarding practical matters, merging fs-verity was delayed due to
> disagreement about the API.  See https://lwn.net/Articles/775872/.
> 
> We don't have to wait for fs-verity for your initial fscrypt changes, though:
> 
> 	ext4: use IS_ENCRYPTED() to check encryption status
> 	f2fs: use IS_ENCRYPTED() to check encryption status
> 	fscrypt: remove filesystem specific build config option
> 
> So, a couple weeks ago Ted and I already queued those three patches in
> fscrypt.git (https://git.kernel.org/pub/scm/linux/kernel/git/tytso/fscrypt.git
> branch "master", though we plan to change the repo soon) for the upcoming merge
> window, based on upstream rather than fs-verity.  Are you fine with that?

Yes, the changes looks good. Thanks for queueing them up.

> 
> I also suggest adding linux-fsdevel to the Cc given the fs/*.c changes.

Yes, I will do that.

> 
> Thanks!
> 
> - Eric
> 
>
Chandan Rajendra Feb. 21, 2019, 1:32 p.m. UTC | #5
On Wednesday, February 20, 2019 6:11:07 AM IST Eric Biggers wrote:
> On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> > Based on the reviews provided for this patchset, I
> > will change F2FS to use mpage_readpage[s] and post the next version of
> > this patchset to linux-fsdevel mailing list.
> 
> Is that really possible?  F2FS has other functionality in its ->readpages(),
> such as support for filesystems that use multiple block devices.
> 

Hmm. I didn't know that. Thanks for pointing that out. I will read up that
code and if it isn't really possible to get F2FS to use mpage_readpage[s](),
then I would limit the patchset to Ext4.
Eric Biggers Feb. 21, 2019, 6:38 p.m. UTC | #6
On Thu, Feb 21, 2019 at 07:02:03PM +0530, Chandan Rajendra wrote:
> On Wednesday, February 20, 2019 6:11:07 AM IST Eric Biggers wrote:
> > On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> > > Based on the reviews provided for this patchset, I
> > > will change F2FS to use mpage_readpage[s] and post the next version of
> > > this patchset to linux-fsdevel mailing list.
> > 
> > Is that really possible?  F2FS has other functionality in its ->readpages(),
> > such as support for filesystems that use multiple block devices.
> > 
> 
> Hmm. I didn't know that. Thanks for pointing that out. I will read up that
> code and if it isn't really possible to get F2FS to use mpage_readpage[s](),
> then I would limit the patchset to Ext4.
> 

But we can make F2FS use the shared bio_post_read functions even if it can't use
mpage_readpage[s](), right?

- Eric
Chandan Rajendra Feb. 22, 2019, 4:29 a.m. UTC | #7
On Friday, February 22, 2019 12:08:28 AM IST Eric Biggers wrote:
> On Thu, Feb 21, 2019 at 07:02:03PM +0530, Chandan Rajendra wrote:
> > On Wednesday, February 20, 2019 6:11:07 AM IST Eric Biggers wrote:
> > > On Mon, Feb 18, 2019 at 03:34:23PM +0530, Chandan Rajendra wrote:
> > > > Based on the reviews provided for this patchset, I
> > > > will change F2FS to use mpage_readpage[s] and post the next version of
> > > > this patchset to linux-fsdevel mailing list.
> > > 
> > > Is that really possible?  F2FS has other functionality in its ->readpages(),
> > > such as support for filesystems that use multiple block devices.
> > > 
> > 
> > Hmm. I didn't know that. Thanks for pointing that out. I will read up that
> > code and if it isn't really possible to get F2FS to use mpage_readpage[s](),
> > then I would limit the patchset to Ext4.
> > 
> 
> But we can make F2FS use the shared bio_post_read functions even if it can't use
> mpage_readpage[s](), right?
>

Yes, that should be possible. I will include those changes in the next version
of the patchset.