From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Neither the kernel nor the code in xfsprogs support filesystems that have (either reverse mapping btrees or reflink) enabled and a realtime volume configured. The kernel rejects such combinations and mkfs refuses to format such a config, but xfsprogs doesn't check and can do Bad Things, so port those checks before someone shreds their filesystem. Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --- v2: move code to rtmount_init where it belongs --- libxfs/init.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libxfs/init.c b/libxfs/init.c index cb8967bc77d4..330c645190d9 100644 --- a/libxfs/init.c +++ b/libxfs/init.c @@ -428,6 +428,21 @@ rtmount_init( sbp = &mp->m_sb; if (sbp->sb_rblocks == 0) return 0; + + if (xfs_sb_version_hasreflink(sbp)) { + fprintf(stderr, + _("%s: Reflink not compatible with realtime device. Please try a newer xfsprogs.\n"), + progname); + return -1; + } + + if (xfs_sb_version_hasrmapbt(sbp)) { + fprintf(stderr, + _("%s: Reverse mapping btree not compatible with realtime device. Please try a newer xfsprogs.\n"), + progname); + return -1; + } + if (mp->m_rtdev_targp->dev == 0 && !(flags & LIBXFS_MOUNT_DEBUGGER)) { fprintf(stderr, _("%s: filesystem has a realtime subvolume\n"), progname);