From: Filipe Manana <fdmanana@kernel.org>
To: Josef Bacik <josef@toxicpanda.com>
Cc: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: Re: [PATCH 00/18] Truncate cleanups and preparation work
Date: Mon, 6 Dec 2021 14:43:25 +0000 [thread overview]
Message-ID: <Ya4hjVNLjDK4ZDOu@debian9.Home> (raw)
In-Reply-To: <cover.1638569556.git.josef@toxicpanda.com>
On Fri, Dec 03, 2021 at 05:18:02PM -0500, Josef Bacik wrote:
> Hello,
>
> The first thing I'm implementing with the garbage collection tree is
> btrfs_truncate_inode_items() on evicted inodes. However
> btrfs_truncate_inode_items() has a lot of oddities that it's grown over the
> years, and requires having a valid btrfs_inode to use. We don't really want to
> have to look up the old inode to do the truncate, we just want to do the tree
> operaitons to delete all of the objects and extents.
>
> Enter this patch series, I've cleaned up btrfs_truncate_inode_items(), moved as
> much of the inode operations out to the respective callers, and cleaned up the
> argument passing and such to make it a little cleaner.
>
> We still have to pass in the inode for the ^NO_HOLES case for the normal
> truncate path, but other than that I've stripped it down so that we can pass in
> a NULL inode and get all the work done.
>
> This has the nice side-effect of cleaning up a lot of our
>
> if (root == LOG_ROOT)
> // do something else
>
> checks in this helper, and hopefully makes it more straightforward to
> understand. Thanks,
>
> Josef
>
> Josef Bacik (18):
> btrfs: add an inode-item.h
> btrfs: move btrfs_truncate_inode_items to inode-item.c
> btrfs: move extent locking outside of btrfs_truncate_inode_items
> btrfs: remove free space cache inode check in
> btrfs_truncate_inode_items
> btrfs: move btrfs_kill_delayed_inode_items into evict
> btrfs: remove found_extent from btrfs_truncate_inode_items
> btrfs: add btrfs_truncate_control struct
> btrfs: only update i_size in truncate paths that care
> btrfs: only call inode_sub_bytes in truncate paths that care
> btrfs: control extent reference updates with a control flag for
> truncate
> btrfs: use a flag to control when to clear the file extent range
> btrfs: pass the ino via btrfs_truncate_control
> btrfs: add inode to btrfs_truncate_control
> btrfs: convert BUG_ON() in btrfs_truncate_inode_items to ASSERT
> btrfs: convert BUG() for pending_del_nr into an ASSERT
> btrfs: combine extra if statements in btrfs_truncate_inode_items
> btrfs: make should_throttle loop local in btrfs_truncate_inode_items
> btrfs: do not check -EAGAIN when truncating inodes in the log root
>
> fs/btrfs/ctree.h | 34 ---
> fs/btrfs/delayed-inode.c | 1 +
> fs/btrfs/free-space-cache.c | 31 ++-
> fs/btrfs/inode-item.c | 334 ++++++++++++++++++++++++++
> fs/btrfs/inode-item.h | 86 +++++++
> fs/btrfs/inode.c | 452 +++++-------------------------------
> fs/btrfs/relocation.c | 1 +
> fs/btrfs/tree-log.c | 15 +-
> 8 files changed, 511 insertions(+), 443 deletions(-)
> create mode 100644 fs/btrfs/inode-item.h
Looks good, and it passed one iteration of fstests here.
For the whole series:
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Thanks.
>
> --
> 2.26.3
>
next prev parent reply other threads:[~2021-12-06 14:43 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-03 22:18 [PATCH 00/18] Truncate cleanups and preparation work Josef Bacik
2021-12-03 22:18 ` [PATCH 01/18] btrfs: add an inode-item.h Josef Bacik
2021-12-06 18:45 ` David Sterba
2021-12-03 22:18 ` [PATCH 02/18] btrfs: move btrfs_truncate_inode_items to inode-item.c Josef Bacik
2021-12-03 22:18 ` [PATCH 03/18] btrfs: move extent locking outside of btrfs_truncate_inode_items Josef Bacik
2021-12-03 22:18 ` [PATCH 04/18] btrfs: remove free space cache inode check in btrfs_truncate_inode_items Josef Bacik
2021-12-03 22:18 ` [PATCH 05/18] btrfs: move btrfs_kill_delayed_inode_items into evict Josef Bacik
2021-12-03 22:18 ` [PATCH 06/18] btrfs: remove found_extent from btrfs_truncate_inode_items Josef Bacik
2021-12-03 22:18 ` [PATCH 07/18] btrfs: add btrfs_truncate_control struct Josef Bacik
2021-12-03 22:18 ` [PATCH 08/18] btrfs: only update i_size in truncate paths that care Josef Bacik
2021-12-03 22:18 ` [PATCH 09/18] btrfs: only call inode_sub_bytes " Josef Bacik
2021-12-03 22:18 ` [PATCH 10/18] btrfs: control extent reference updates with a control flag for truncate Josef Bacik
2021-12-03 22:18 ` [PATCH 11/18] btrfs: use a flag to control when to clear the file extent range Josef Bacik
2021-12-03 22:18 ` [PATCH 12/18] btrfs: pass the ino via btrfs_truncate_control Josef Bacik
2021-12-03 22:18 ` [PATCH 13/18] btrfs: add inode to btrfs_truncate_control Josef Bacik
2021-12-03 22:18 ` [PATCH 14/18] btrfs: convert BUG_ON() in btrfs_truncate_inode_items to ASSERT Josef Bacik
2021-12-03 22:18 ` [PATCH 15/18] btrfs: convert BUG() for pending_del_nr into an ASSERT Josef Bacik
2021-12-03 22:18 ` [PATCH 16/18] btrfs: combine extra if statements in btrfs_truncate_inode_items Josef Bacik
2021-12-03 22:18 ` [PATCH 17/18] btrfs: make should_throttle loop local " Josef Bacik
2021-12-03 22:18 ` [PATCH 18/18] btrfs: do not check -EAGAIN when truncating inodes in the log root Josef Bacik
2021-12-06 14:43 ` Filipe Manana [this message]
2021-12-06 21:06 ` [PATCH 00/18] Truncate cleanups and preparation work David Sterba
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=Ya4hjVNLjDK4ZDOu@debian9.Home \
--to=fdmanana@kernel.org \
--cc=josef@toxicpanda.com \
--cc=kernel-team@fb.com \
--cc=linux-btrfs@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.