From: Darrick J. Wong Date: Wed, 24 Feb 2021 00:09:28 +0000 (-0500) Subject: xfs_db: don't allow label/uuid setting if the needsrepair flag is set X-Git-Tag: v5.11.0-rc1~15 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=b95b770f1f124ab9d8804c8539c225ca333e3219;p=thirdparty%2Fxfsprogs-dev.git xfs_db: don't allow label/uuid setting if the needsrepair flag is set The NEEDSREPAIR flag can be set on filesystems where we /know/ that there's something wrong with the metadata and want to force the sysadmin to run xfs_repair before the next mount. The goal here is to prevent non-repair changes to a filesystem when we are confident of its instability. Normally we wouldn't bother with such safety checks for the debugger, but the label and uuid functions can be called from xfs_admin, so we should prevent these administrative tasks until the filesystem can be repaired. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Reviewed-by: Allison Henderson Signed-off-by: Eric Sandeen --- diff --git a/db/sb.c b/db/sb.c index d7111e92a..cec7dce94 100644 --- a/db/sb.c +++ b/db/sb.c @@ -379,6 +379,11 @@ uuid_f( progname); return 0; } + if (xfs_sb_version_needsrepair(&mp->m_sb)) { + dbprintf(_("%s: filesystem needs xfs_repair\n"), + progname); + return 0; + } if (!strcasecmp(argv[1], "generate")) { platform_uuid_generate(&uu); @@ -543,6 +548,12 @@ label_f( return 0; } + if (xfs_sb_version_needsrepair(&mp->m_sb)) { + dbprintf(_("%s: filesystem needs xfs_repair\n"), + progname); + return 0; + } + dbprintf(_("writing all SBs\n")); for (ag = 0; ag < mp->m_sb.sb_agcount; ag++) if ((p = do_label(ag, argv[1])) == NULL) {