mbox series

[f2fs-dev,0/1] Add 16K Support for f2fs

Message ID 20230816011432.1966838-1-drosen@google.com (mailing list archive)
Headers show
Series Add 16K Support for f2fs | expand

Message

Daniel Rosenberg Aug. 16, 2023, 1:14 a.m. UTC
F2fs filesystems currently have two large restrictions around block size.
The block size must equal the page size, and the block size must be 4096.

The following patch, along with the associated f2fs-tools patch set, relax the
latter restriction, allowing you to use 16K block size f2fs on a 16K page size
system. It does not allow mounting 4K block size f2fs on a 16k page system.

Doing that would require a lot more work, requiring a refactor of all block
sized struct similar to the userspace patches, as well as handling the block
reading/writing at sub page boundaries. As far as I know, buffer_heads are
still the main way this is handled in other filesystems. Is there a different
option there? I know there's a general desire to move away from buffer_heads,
but I don't know of any replacements covering that use case. And it would feel
a bit silly to not be able to read older filesystems from a 16k system...

Daniel Rosenberg (1):
  ANDROID: f2fs: Support Block Size == Page Size

 fs/f2fs/data.c          |  2 +-
 fs/f2fs/node.c          |  2 +-
 fs/f2fs/super.c         |  4 +--
 include/linux/f2fs_fs.h | 69 ++++++++++++++++++++++++-----------------
 4 files changed, 45 insertions(+), 32 deletions(-)


base-commit: 0cc81b1ad51287847e494e055e5d3426f95e7921

Comments

Eric Biggers Aug. 16, 2023, 2:34 a.m. UTC | #1
On Tue, Aug 15, 2023 at 06:14:31PM -0700, Daniel Rosenberg via Linux-f2fs-devel wrote:
> F2fs filesystems currently have two large restrictions around block size.
> The block size must equal the page size, and the block size must be 4096.
> 
> The following patch, along with the associated f2fs-tools patch set, relax the
> latter restriction, allowing you to use 16K block size f2fs on a 16K page size
> system. It does not allow mounting 4K block size f2fs on a 16k page system.
> 
> Doing that would require a lot more work, requiring a refactor of all block
> sized struct similar to the userspace patches, as well as handling the block
> reading/writing at sub page boundaries. As far as I know, buffer_heads are
> still the main way this is handled in other filesystems. Is there a different
> option there? I know there's a general desire to move away from buffer_heads,
> but I don't know of any replacements covering that use case. And it would feel
> a bit silly to not be able to read older filesystems from a 16k system...

iomap is the replacement for buffer heads.  See https://lwn.net/Articles/935934

- Eric