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@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
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);