Hi everyone, Christoph and I have been working on getting the long-delayed port of reverse mapping and reflink to the realtime device into mergeable shape. With these changes, the realtime volume finally reaches feature parity with the data device. This is the base for building more functionality into xfs, such as the zoned storage support that Christoph posted last week. Since v6.0 I've added Christoph's review tags, and folded in the documentation updates requested during review. The first patchset are bug fixes. The final patchset are a few xfsprogs patches that complete the metadir/rtgroups changes. Both of these are technically 6.13 material. The second and third patchsets are all cleanups and refactoring so that we can fully support having btrees rooted in an inode's data fork. This is necessary because the generic btree code only supports using the immediate area as an internal tree node -- conversion from extents to bmbt format only happens when there are too many leaf records to fit in the immediate area. Therefore, we need to remodel it to support storing records in the immediate area. We also need to be able to reserve space for future btree expansion, so the second patchset enables tracking per-inode reservations from the free space. The fourth patchset ports reverse mapping btree to the realtime device, which mainly consists of constructing a btree in an inode, linking the inode into the metadata directory tree, and updating the log items to handle rt rmap update log intent items. The fifth patchset ports the refcount btree, block sharing, and copy on write to the realtime device. I dropped the fifth patchset from v6.0 because rtextsize>1 is a fringe feature and doesn't need to be added right now. Please have a look at the git tree links for code changes: https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git/log/?h=realtime-reflink_2024-12-19 https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=realtime-reflink_2024-12-19 https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfstests-dev.git/log/?h=realtime-reflink_2024-12-19 (fstests is still behind because I haven't rebased atop the parallel fstests work) These are the patches that haven't passed review yet. [PATCHSET 1/5] xfs: bug fixes for 6.13 [PATCH 2/2] xfs: release the dquot buf outside of qli_lock [PATCHSET v6.1 3/5] xfs: enable in-core block reservation for rt [PATCH 1/2] xfs: prepare to reuse the dquot pointer space in struct [PATCH 2/2] xfs: allow inode-based btrees to reserve space in the [PATCHSET v6.1 4/5] xfs: realtime reverse-mapping support [PATCH 27/37] xfs: online repair of realtime file bmaps [PATCH 32/37] xfs: online repair of the realtime rmap btree [PATCH 35/37] xfs: don't shut down the filesystem for media failures [PATCH 36/37] xfs: react to fsdax failure notifications on the rt [PATCH 37/37] xfs: enable realtime rmap btree [PATCHSET v6.1 5/5] xfs: reflink on the realtime device [PATCH 28/43] xfs: scrub the realtime refcount btree [PATCH 42/43] xfs: fix CoW forks for realtime files [PATCH 43/43] xfs: enable realtime reflink [PATCHSET v6.1] xfsprogs: last few bits of rtgroups patches [PATCH 1/3] xfs_db: drop the metadata checking code from blockget [PATCH 2/3] xfs_mdrestore: refactor open-coded fd/is_file into a [PATCH 3/3] xfs_mdrestore: restore rt group superblocks to realtime --D