mbox series

[v2,00/15] btrfs: some updates to delayed items and inode logging

Message ID cover.1661165149.git.fdmanana@suse.com (mailing list archive)
Headers show
Series btrfs: some updates to delayed items and inode logging | expand

Message

Filipe Manana Aug. 22, 2022, 10:51 a.m. UTC
From: Filipe Manana <fdmanana@suse.com>

This patchset brings some optimizations to inode logging, especially for
logging directories, but also when logging a regular file that happens to
have the name of another file that was previously deleted in the current
transaction (triggered very often by the workloads simulated by dbench).
It brings along some cleanups to delated items and logging in general too.
More details in the changelogs of the patches. Thanks.

V2: Updated patch 10/15, added some comments and removed some code made
    obsolete by it.
    Updated patch 15/15 to make sure recursion of btrfs_log_inode() is
    bounded to happen at most once when we have new subdirectories.

Filipe Manana (15):
  btrfs: don't drop dir index range items when logging a directory
  btrfs: remove the root argument from log_new_dir_dentries()
  btrfs: update stale comment for log_new_dir_dentries()
  btrfs: free list element sooner at log_new_dir_dentries()
  btrfs: avoid memory allocation at log_new_dir_dentries() for common case
  btrfs: remove root argument from btrfs_delayed_item_reserve_metadata()
  btrfs: store index number instead of key in struct btrfs_delayed_item
  btrfs: remove unused logic when looking up delayed items
  btrfs: shrink the size of struct btrfs_delayed_item
  btrfs: search for last logged dir index if it's not cached in the inode
  btrfs: move need_log_inode() to above log_conflicting_inodes()
  btrfs: move log_new_dir_dentries() above btrfs_log_inode()
  btrfs: log conflicting inodes without holding log mutex of the initial inode
  btrfs: skip logging parent dir when conflicting inode is not a dir
  btrfs: use delayed items when logging a directory

 fs/btrfs/delayed-inode.c |  292 +++++---
 fs/btrfs/delayed-inode.h |   34 +-
 fs/btrfs/file.c          |    1 +
 fs/btrfs/tree-log.c      | 1418 ++++++++++++++++++++++++++------------
 fs/btrfs/tree-log.h      |    8 +
 5 files changed, 1197 insertions(+), 556 deletions(-)

Comments

David Sterba Aug. 22, 2022, 3:45 p.m. UTC | #1
On Mon, Aug 22, 2022 at 11:51:29AM +0100, fdmanana@kernel.org wrote:
> From: Filipe Manana <fdmanana@suse.com>
> 
> This patchset brings some optimizations to inode logging, especially for
> logging directories, but also when logging a regular file that happens to
> have the name of another file that was previously deleted in the current
> transaction (triggered very often by the workloads simulated by dbench).
> It brings along some cleanups to delated items and logging in general too.
> More details in the changelogs of the patches. Thanks.
> 
> V2: Updated patch 10/15, added some comments and removed some code made
>     obsolete by it.
>     Updated patch 15/15 to make sure recursion of btrfs_log_inode() is
>     bounded to happen at most once when we have new subdirectories.

Meanwhile I moved the patches to misc-next, so patches 10 and 15 got
replaced, plus the change of the enum from :1 to :8, where patch 15
fills the hole.