From c4ce3f1eee7f92d6b3493c77a48f893732d0f6e5 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Fri, 7 Jun 2013 10:25:50 +1000 Subject: [PATCH] xfs_db: disable modification for CRC enabled filessytems. xfs_db does not have the IO infrastructure to calculate metadata CRCs after modifying metadata. Hence xfs_db can only run in read-only mode on filesystems with version 5 superblocks. To fix this, xfs_db needs to have it's IO engine converted to use the buffer based IO provided by libxfs rather than rolling it's own IO routines. That is future work, so until this conversion is done, only allow xfs_db to run in read-only mode on v5 filesystems. Signed-off-by: Dave Chinner Reviewed-by: Ben Myers Signed-off-by: Ben Myers --- db/init.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/db/init.c b/db/init.c index 0e9e1a2b7..1033f3a71 100644 --- a/db/init.c +++ b/db/init.c @@ -132,6 +132,21 @@ init( exit(EXIT_FAILURE); } + /* + * Don't allow modifications to CRC enabled filesystems until we support + * CRC recalculation in the IO path. Unless, of course, the user is in + * the process of hitting us with a big hammer. + */ + if (XFS_SB_VERSION_NUM(sbp) >= XFS_SB_VERSION_5 && + !(x.isreadonly & LIBXFS_ISREADONLY)) { + fprintf(stderr, + _("%s: modifications to %s are not supported in thi version.\n" + "Use \"-r\" to run %s in read-only mode on this filesystem .\n"), + progname, fsdevice, progname); + if (!force) + exit(EXIT_FAILURE); + } + mp = libxfs_mount(&xmount, sbp, x.ddev, x.logdev, x.rtdev, LIBXFS_MOUNT_ROOTINOS | LIBXFS_MOUNT_DEBUGGER); if (!mp) { -- 2.47.2