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(-) -- 1.9.3 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs