Skip to content

xfs: support removal of multi-record inode chunks

Brian Foster linux-xfs 1 version New

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest3 patches 0 repliesNew

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3xfs: create helper to delete multiple inobt recordsfs/xfs/libxfs/xfs_ialloc.c+53 -30 replies
2/3xfs: remove entire inode chunks when all inodes are freefs/xfs/libxfs/xfs_ialloc.c+187 -190 replies
3/3xfs: inobt record insert/delete tracepointsfs/xfs/libxfs/xfs_ialloc.c fs/xfs/xfs_trace.h+45 -30 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH 0/3] xfs: support removal of multi-record inode chunks

Hi all,

I had recently started prototyping a mechanism to do inode preallocation and deferred removal and one of my goals for that work was to also handle the existing problem where inode chunks are never removed on filesystems with large block sizes. While hashing the prealloc work out, it became apparent that the large block size problem could stand on its own.

The problem is that for fs' where the number of inodes per block is larger than 64 (e.g., -bsize=64k -isize=512b), a single inode chunk requires more than one inobt record. For such fs', we don't currently have enough context on inode removal to determine whether records other than those for the particular inode can be removed. As such, inode chunks are never freed. This series aims to provide enough context so that inode records can be removed once the entire chunk is free.

Patch 1 introduces a new multi-record deletion helper but does not change existing behavior. Patch 2 is the bulk of the enhancement. In a nutshell, it provides a mechanism to determine whether an inode chunk that spans one or more inobt records is completely free and to remove the entire chunk if so. Patch 3 introduces some inobt record management tracepoints.

So far this has seen medium testing on ppc64 with various block sizes up to 64k (single and multiple inobt record per chunk configurations). Thoughts, reviews, flames appreciated.

Brian

P.S., Note that this series applies on top of the sparse inode series.

Brian Foster (3):
xfs: create helper to delete multiple inobt records
xfs: remove entire inode chunks when all inodes are free
xfs: inobt record insert/delete tracepoints

 fs/xfs/libxfs/xfs_ialloc.c | 270 +++++++++++++++++++++++++++++++++++++++++----
 fs/xfs/xfs_trace.h         |  32 ++++++
 2 files changed, 281 insertions(+), 21 deletions(-)
Signature · 6 lines
1.9.3

_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs