Thread (17 messages) 17 messages, 3 authors, 2021-02-25

Re: [PATCH 4/7] xfs_db: don't allow label/uuid setting if the needsrepair flag is set

From: Allison Henderson <hidden>
Date: 2021-02-23 20:19:59


On 2/22/21 8:00 PM, Darrick J. Wong wrote:
From: Darrick J. Wong <djwong@kernel.org>

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 <djwong@kernel.org>
Reviewed-by: Brian Foster <redacted>
ok, makes sense
Reviewed-by: Allison Henderson <redacted>
quoted hunk ↗ jump to hunk
---
  db/sb.c |   11 +++++++++++
  1 file changed, 11 insertions(+)

diff --git a/db/sb.c b/db/sb.c
index d7111e92..cec7dce9 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) {
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help