All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Wu Bo <bo.wu@vivo.com>, linux-kernel@vger.kernel.org
Cc: Wu Bo <wubo.oduw@gmail.com>, Jaegeuk Kim <jaegeuk@kernel.org>,
	linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH v2 00/13] f2fs: introduce inline tail
Date: Thu, 12 Sep 2024 15:14:24 +0800	[thread overview]
Message-ID: <679c7dae-91c4-4ad0-a2cb-55dc92b47fd4@kernel.org> (raw)
In-Reply-To: <cover.1726024116.git.bo.wu@vivo.com>

On 2024/9/11 11:57, Wu Bo wrote:
> The inode in F2FS occupies an entire 4k block. For many small files, this means
> they consume much more space than their actual size. Therefore, there is
> significant potential to better utilize the inode block space.
> 
> Currently, F2FS has two features to make use of the inode block space: inline
> data and inline xattr.
> 
> Inline data stores file which size is smaller then 3.5k in inode block. However,
> for slightly larger small files, there still have much waste.
> For example, a 5k file requires 3 blocks, totaling 12k of space, which is
> more than twice the size of the file itself!
> 
> Additionally, the end of a file often does not occupy an entire block. If we can
> store the end of the file data within the inode block, we can save an entire
> block for the file. This is particularly important for small files.
> 
> In fact, the current inline data is a special case of inline tail, and
> inline tail is an extension of inline data.
> 
> To make it simple, inline tail only on small files(<64k). And for larger files,
> inline tails don't provide any significant benefits.
> 
> The layout of an inline tail inode block is following:
> 
> | inode block     | 4096 |     inline tail enable    |
> | --------------- | ---- | --------------------------|
> | inode info      | 360  |                           |
> | --------------- | ---- | --------------------------|
> |                 |      | extra info         | 0~36 |
> |                 |      | **compact_addr[16] | 64   |
> | addr table[923] | 3692 | reserved           | 4    |
> |                 |      | **tail data        |      |
> |                 |      | inline_xattr       | 200  |
> | --------------- | ---- | --------------------------|
> | nid table[5]    | 20   |
> | node footer     | 24   |
> 
> F2fs-tools to support inline tail:
> https://lore.kernel.org/linux-f2fs-devel/20240903075931.3339584-1-bo.wu@vivo.com
> 
> I tested inline tail by copying the source code of Linux 6.9.7. The storage
> space was reduced by approximately 8%. Additionally, due to the reduced IO, the
> copy time also reduced by around 10%.
> 
> This patch series has been tested with xfstests by running 'kvm-xfstests -c f2fs
> -g quick' both with and without the patch; no regressions were observed.
> The test result is:
> f2fs/default: 583 tests, 6 failures, 213 skipped, 650 seconds
>    Failures: generic/050 generic/064 generic/250 generic/252 generic/563
>        generic/735
>        Totals: 607 tests, 213 skipped, 30 failures, 0 errors, 579s

MKFS_OPTIONS  -- -O extra_attr,encrypt,inode_checksum,flexible_inline_xattr,inode_crtime,verity,compression -f /dev/vdc
MOUNT_OPTIONS -- -o acl,user_xattr -o discard,inline_tail /dev/vdc /mnt/scratch_f2fs

Before:
Failures: generic/042 generic/050 generic/250 generic/252 generic/270 generic/389 generic/563 generic/700 generic/735
Failed 9 of 746 tests

After:
Failures: generic/042 generic/050 generic/125 generic/250 generic/252 generic/270 generic/389 generic/418 generic/551 generic/563 generic/700 generic/735
Failed 12 of 746 tests

Failures: f2fs/004

Can you please check failed testcases?

Thanks,

> 
> ---
> v2:
> - fix ARCH=arc build warning
> 
> ---
> Wu Bo (13):
>    f2fs: add inline tail mount option
>    f2fs: add inline tail disk layout definition
>    f2fs: implement inline tail write & truncate
>    f2fs: implement inline tail read & fiemap
>    f2fs: set inline tail flag when create inode
>    f2fs: fix address info has been truncated
>    f2fs: support seek for inline tail
>    f2fs: convert inline tail when inode expand
>    f2fs: fix data loss during inline tail writing
>    f2fs: avoid inlining quota files
>    f2fs: fix inline tail data lost
>    f2fs: convert inline tails to avoid potential issues
>    f2fs: implement inline tail forward recovery
> 
>   fs/f2fs/data.c     |  93 +++++++++++++++++++++++++-
>   fs/f2fs/f2fs.h     |  46 ++++++++++++-
>   fs/f2fs/file.c     |  85 +++++++++++++++++++++++-
>   fs/f2fs/inline.c   | 159 +++++++++++++++++++++++++++++++++++++++------
>   fs/f2fs/inode.c    |   6 ++
>   fs/f2fs/namei.c    |   3 +
>   fs/f2fs/node.c     |   6 +-
>   fs/f2fs/recovery.c |   9 ++-
>   fs/f2fs/super.c    |  25 +++++++
>   fs/f2fs/verity.c   |   4 ++
>   10 files changed, 409 insertions(+), 27 deletions(-)
> 
> 
> base-commit: 67784a74e258a467225f0e68335df77acd67b7ab



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

WARNING: multiple messages have this Message-ID (diff)
From: Chao Yu <chao@kernel.org>
To: Wu Bo <bo.wu@vivo.com>, linux-kernel@vger.kernel.org
Cc: chao@kernel.org, Jaegeuk Kim <jaegeuk@kernel.org>,
	linux-f2fs-devel@lists.sourceforge.net,
	Wu Bo <wubo.oduw@gmail.com>
Subject: Re: [PATCH v2 00/13] f2fs: introduce inline tail
Date: Thu, 12 Sep 2024 15:14:24 +0800	[thread overview]
Message-ID: <679c7dae-91c4-4ad0-a2cb-55dc92b47fd4@kernel.org> (raw)
In-Reply-To: <cover.1726024116.git.bo.wu@vivo.com>

On 2024/9/11 11:57, Wu Bo wrote:
> The inode in F2FS occupies an entire 4k block. For many small files, this means
> they consume much more space than their actual size. Therefore, there is
> significant potential to better utilize the inode block space.
> 
> Currently, F2FS has two features to make use of the inode block space: inline
> data and inline xattr.
> 
> Inline data stores file which size is smaller then 3.5k in inode block. However,
> for slightly larger small files, there still have much waste.
> For example, a 5k file requires 3 blocks, totaling 12k of space, which is
> more than twice the size of the file itself!
> 
> Additionally, the end of a file often does not occupy an entire block. If we can
> store the end of the file data within the inode block, we can save an entire
> block for the file. This is particularly important for small files.
> 
> In fact, the current inline data is a special case of inline tail, and
> inline tail is an extension of inline data.
> 
> To make it simple, inline tail only on small files(<64k). And for larger files,
> inline tails don't provide any significant benefits.
> 
> The layout of an inline tail inode block is following:
> 
> | inode block     | 4096 |     inline tail enable    |
> | --------------- | ---- | --------------------------|
> | inode info      | 360  |                           |
> | --------------- | ---- | --------------------------|
> |                 |      | extra info         | 0~36 |
> |                 |      | **compact_addr[16] | 64   |
> | addr table[923] | 3692 | reserved           | 4    |
> |                 |      | **tail data        |      |
> |                 |      | inline_xattr       | 200  |
> | --------------- | ---- | --------------------------|
> | nid table[5]    | 20   |
> | node footer     | 24   |
> 
> F2fs-tools to support inline tail:
> https://lore.kernel.org/linux-f2fs-devel/20240903075931.3339584-1-bo.wu@vivo.com
> 
> I tested inline tail by copying the source code of Linux 6.9.7. The storage
> space was reduced by approximately 8%. Additionally, due to the reduced IO, the
> copy time also reduced by around 10%.
> 
> This patch series has been tested with xfstests by running 'kvm-xfstests -c f2fs
> -g quick' both with and without the patch; no regressions were observed.
> The test result is:
> f2fs/default: 583 tests, 6 failures, 213 skipped, 650 seconds
>    Failures: generic/050 generic/064 generic/250 generic/252 generic/563
>        generic/735
>        Totals: 607 tests, 213 skipped, 30 failures, 0 errors, 579s

MKFS_OPTIONS  -- -O extra_attr,encrypt,inode_checksum,flexible_inline_xattr,inode_crtime,verity,compression -f /dev/vdc
MOUNT_OPTIONS -- -o acl,user_xattr -o discard,inline_tail /dev/vdc /mnt/scratch_f2fs

Before:
Failures: generic/042 generic/050 generic/250 generic/252 generic/270 generic/389 generic/563 generic/700 generic/735
Failed 9 of 746 tests

After:
Failures: generic/042 generic/050 generic/125 generic/250 generic/252 generic/270 generic/389 generic/418 generic/551 generic/563 generic/700 generic/735
Failed 12 of 746 tests

Failures: f2fs/004

Can you please check failed testcases?

Thanks,

> 
> ---
> v2:
> - fix ARCH=arc build warning
> 
> ---
> Wu Bo (13):
>    f2fs: add inline tail mount option
>    f2fs: add inline tail disk layout definition
>    f2fs: implement inline tail write & truncate
>    f2fs: implement inline tail read & fiemap
>    f2fs: set inline tail flag when create inode
>    f2fs: fix address info has been truncated
>    f2fs: support seek for inline tail
>    f2fs: convert inline tail when inode expand
>    f2fs: fix data loss during inline tail writing
>    f2fs: avoid inlining quota files
>    f2fs: fix inline tail data lost
>    f2fs: convert inline tails to avoid potential issues
>    f2fs: implement inline tail forward recovery
> 
>   fs/f2fs/data.c     |  93 +++++++++++++++++++++++++-
>   fs/f2fs/f2fs.h     |  46 ++++++++++++-
>   fs/f2fs/file.c     |  85 +++++++++++++++++++++++-
>   fs/f2fs/inline.c   | 159 +++++++++++++++++++++++++++++++++++++++------
>   fs/f2fs/inode.c    |   6 ++
>   fs/f2fs/namei.c    |   3 +
>   fs/f2fs/node.c     |   6 +-
>   fs/f2fs/recovery.c |   9 ++-
>   fs/f2fs/super.c    |  25 +++++++
>   fs/f2fs/verity.c   |   4 ++
>   10 files changed, 409 insertions(+), 27 deletions(-)
> 
> 
> base-commit: 67784a74e258a467225f0e68335df77acd67b7ab


  parent reply	other threads:[~2024-09-12  7:14 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-11  3:57 [f2fs-dev] [PATCH v2 00/13] f2fs: introduce inline tail Wu Bo via Linux-f2fs-devel
2024-09-11  3:57 ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 01/13] f2fs: add inline tail mount option Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 02/13] f2fs: add inline tail disk layout definition Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 03/13] f2fs: implement inline tail write & truncate Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 04/13] f2fs: implement inline tail read & fiemap Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 05/13] f2fs: set inline tail flag when create inode Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 06/13] f2fs: fix address info has been truncated Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 07/13] f2fs: support seek for inline tail Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 08/13] f2fs: convert inline tail when inode expand Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 09/13] f2fs: fix data loss during inline tail writing Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 10/13] f2fs: avoid inlining quota files Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 11/13] f2fs: fix inline tail data lost Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 12/13] f2fs: convert inline tails to avoid potential issues Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-11  3:57 ` [f2fs-dev] [PATCH v2 13/13] f2fs: implement inline tail forward recovery Wu Bo via Linux-f2fs-devel
2024-09-11  3:57   ` Wu Bo
2024-09-13  7:24   ` [f2fs-dev] " kernel test robot
2024-09-13  7:24     ` kernel test robot
2024-09-12  7:14 ` Chao Yu via Linux-f2fs-devel [this message]
2024-09-12  7:14   ` [PATCH v2 00/13] f2fs: introduce inline tail Chao Yu
2024-09-14  2:41   ` [f2fs-dev] " Wu Bo via Linux-f2fs-devel
2024-09-14  2:41     ` Wu Bo
2024-09-14  9:21     ` Wu Bo via Linux-f2fs-devel
2024-09-14  9:21       ` Wu Bo

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=679c7dae-91c4-4ad0-a2cb-55dc92b47fd4@kernel.org \
    --to=linux-f2fs-devel@lists.sourceforge.net \
    --cc=bo.wu@vivo.com \
    --cc=chao@kernel.org \
    --cc=jaegeuk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wubo.oduw@gmail.com \
    /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.