On Wed, Sep 30, 2020 at 11:09:29AM -0500, Eric Sandeen wrote: > On 9/30/20 11:01 AM, Darrick J. Wong wrote: > > 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> > > > so now xfs_db won't even touch it, I'm not sure that's desirable. > > # db/xfs_db fsfile > xfs_db: Reflink not compatible with realtime device. Please try a newer xfsprogs. > xfs_db: realtime device init failed > xfs_db: device fsfile unusable (not an XFS filesystem?) Er... did you specially craft fsfile to have rblocks>0 and reflink=1? Or are you saying that it rejects any reflink=1 filesystem now? --D > > -Eric > > > --- > > 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); > >