Message ID | 161404924136.425352.783422563005701204.stgit@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfsprogs: add the ability to flag a fs for repair | expand |
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 <bfoster@redhat.com> ok, makes sense Reviewed-by: Allison Henderson <allison.henderson@oracle.com> > --- > 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) { >
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
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) {