Hi Andrey, Please pull this branch with changes for xfsprogs for 6.14-rc1. As usual, I did a test-merge with the main upstream branch as of a few minutes ago, and didn't see any conflicts. Please let me know if you encounter any problems. The following changes since commit c89b1f70b43dc7d1dd7147d5147170db651131a4: xfs: fix the entry condition of exact EOF block allocation optimization (2025-02-25 09:16:00 -0800) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git tags/realtime-rmap-6.14_2025-02-25 for you to fetch changes up to d3fc26fa2ac96c39836884525065f5d47dda8b05: mkfs: create the realtime rmap inode (2025-02-25 09:16:01 -0800) ---------------------------------------------------------------- xfsprogs: realtime reverse-mapping support [v6.6 4/7] This is the latest revision of a patchset that adds to XFS kernel support for reverse mapping for the realtime device. This time around I've fixed some of the bitrot that I've noticed over the past few months, and most notably have converted rtrmapbt to use the metadata inode directory feature instead of burning more space in the superblock. At the beginning of the set are patches to implement storing B+tree leaves in an inode root, since the realtime rmapbt is rooted in an inode, unlike the regular rmapbt which is rooted in an AG block. Prior to this, the only btree that could be rooted in the inode fork was the block mapping btree; if all the extent records fit in the inode, format would be switched from 'btree' to 'extents'. The next few patches enhance the reverse mapping routines to handle the parts that are specific to rtgroups -- adding the new btree type, adding a new log intent item type, and wiring up the metadata directory tree entries. Finally, implement GETFSMAP with the rtrmapbt and scrub functionality for the rtrmapbt and rtbitmap and online fsck functionality. Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> ---------------------------------------------------------------- Christoph Hellwig (3): xfs: mark xfs_dir_isempty static xfs: remove XFS_ILOG_NONCORE xfs: constify feature checks Darrick J. Wong (26): libxfs: compute the rt rmap btree maxlevels during initialization libxfs: add a realtime flag to the rmap update log redo items libfrog: enable scrubbing of the realtime rmap man: document userspace API changes due to rt rmap xfs_db: compute average btree height xfs_db: don't abort when bmapping on a non-extents/bmbt fork xfs_db: display the realtime rmap btree contents xfs_db: support the realtime rmapbt xfs_db: copy the realtime rmap btree xfs_db: make fsmap query the realtime reverse mapping tree xfs_db: add an rgresv command xfs_spaceman: report health status of the realtime rmap btree xfs_repair: tidy up rmap_diffkeys xfs_repair: flag suspect long-format btree blocks xfs_repair: use realtime rmap btree data to check block types xfs_repair: create a new set of incore rmap information for rt groups xfs_repair: refactor realtime inode check xfs_repair: find and mark the rtrmapbt inodes xfs_repair: check existing realtime rmapbt entries against observed rmaps xfs_repair: always check realtime file mappings against incore info xfs_repair: rebuild the realtime rmap btree xfs_repair: check for global free space concerns with default btree slack levels xfs_repair: rebuild the bmap btree for realtime files xfs_repair: reserve per-AG space while rebuilding rt metadata xfs_logprint: report realtime RUIs mkfs: create the realtime rmap inode Mirsad Todorovac (1): xfs/libxfs: replace kmalloc() and memcpy() with kmemdup() db/bmroot.h | 2 + db/btblock.h | 5 + db/field.h | 5 + db/type.h | 1 + include/kmem.h | 9 + include/libxfs.h | 1 + include/xfs_mount.h | 12 +- libxfs/libxfs_api_defs.h | 24 ++ libxfs/xfs_dir2.h | 1 - libxfs/xfs_log_format.h | 6 - repair/bulkload.h | 2 + repair/globals.h | 2 + repair/incore.h | 1 + repair/rmap.h | 15 +- repair/rt.h | 4 + repair/scan.h | 37 +++ db/bmap.c | 17 +- db/bmroot.c | 135 +++++++++++ db/btblock.c | 103 ++++++++ db/btdump.c | 63 +++++ db/btheight.c | 36 +++ db/field.c | 11 + db/fsmap.c | 149 +++++++++++- db/info.c | 119 +++++++++ db/inode.c | 24 +- db/metadump.c | 120 +++++++++ db/type.c | 5 + libfrog/scrub.c | 10 + libxfs/defer_item.c | 35 ++- libxfs/init.c | 19 +- libxfs/xfs_dir2.c | 9 +- libxfs/xfs_rtgroup.c | 2 +- logprint/log_misc.c | 2 + logprint/log_print_all.c | 8 + logprint/log_redo.c | 24 +- man/man2/ioctl_xfs_rtgroup_geometry.2 | 3 + man/man2/ioctl_xfs_scrub_metadata.2 | 12 +- man/man8/xfs_db.8 | 74 +++++- mkfs/proto.c | 29 +++ mkfs/xfs_mkfs.c | 87 ++++++- repair/Makefile | 1 + repair/agbtree.c | 5 +- repair/bmap_repair.c | 109 ++++++++- repair/bulkload.c | 41 ++++ repair/dino_chunks.c | 13 + repair/dinode.c | 441 +++++++++++++++++++++++++++++----- repair/dir2.c | 7 + repair/globals.c | 6 + repair/phase4.c | 14 ++ repair/phase5.c | 114 ++++++++- repair/phase6.c | 72 ++++++ repair/rmap.c | 403 ++++++++++++++++++++++++------- repair/rtrmap_repair.c | 265 ++++++++++++++++++++ repair/scan.c | 411 ++++++++++++++++++++++++++++++- repair/xfs_repair.c | 8 +- scrub/repair.c | 1 + spaceman/health.c | 10 + 57 files changed, 2910 insertions(+), 234 deletions(-) create mode 100644 repair/rtrmap_repair.c