All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Arkadiusz Miskiewicz <arekm@maven.pl>
Cc: xfs@oss.sgi.com
Subject: [PATCH, RFC] xfs_repair: allow filesystems with a single AG
Date: Wed, 24 Dec 2008 18:19:01 -0500	[thread overview]
Message-ID: <20081224231901.GA652@infradead.org> (raw)

Currently xfs_repair bails out on a filesystem with just a single AG.
But that's a perfectly valid configureation, so we should allow it.

Skip the geomery validation because we simply can't do it if we don't
have a secondary SB, and make sure to take the internal log into account
when guestimating the first inode cluster.

I'll also cook up a testcase for repair on single AG filesystems.


Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-By: Arkadiusz Miskiewicz <arekm@maven.pl>

Index: xfsprogs/repair/sb.c
===================================================================
--- xfsprogs.orig/repair/sb.c	2008-12-24 23:36:29.946033933 +0100
+++ xfsprogs/repair/sb.c	2008-12-24 23:42:08.101044710 +0100
@@ -773,14 +773,17 @@ verify_set_primary_sb(xfs_sb_t		*rsb,
 		break;
 	case 1:
 		/*
-		 * just report the geometry info and get out.
-		 * refuse to run further unless the force (-F)
-		 * option is in effect.
+		 * If we only have a single allocation group there is no
+		 * secondary superblock that we can use to verify the geometry
+		 * information.  Not much we can do here, as we don't want
+		 * to prevent the user from checking the filesystem.
+		 *
+		 * XXX(hch): We should allow putting a secondary superblock
+		 *	     into the last sector of a filesystem to so that
+		 *	     we can still have a backup for single allocation
+		 *	     group filesystems.
 		 */
-		if (!force_geo)  {
-			do_warn(_("Only one AG detected - cannot proceed.\n"));
-			exit(1);
-		}
+		break;
 	default:
 		/*
 		 * at least half of the probed superblocks have
Index: xfsprogs/repair/xfs_repair.c
===================================================================
--- xfsprogs.orig/repair/xfs_repair.c	2008-12-25 00:00:09.116033372 +0100
+++ xfsprogs/repair/xfs_repair.c	2008-12-25 00:07:50.295036179 +0100
@@ -409,6 +409,19 @@ calc_mkfs(xfs_mount_t *mp)
 	fino_bno = inobt_root + XFS_MIN_FREELIST_RAW(1, 1, mp) + 1;
 
 	/*
+	 * If we only have a single allocation group the log is also allocated
+	 * in the first allocation group and we need to add the number of
+	 * blocks used by the log to the above calculation.
+	 * All this of course doesn't apply if we have an external log.
+	 */
+	if (mp->m_sb.sb_agcount == 1 && mp->m_sb.sb_logstart) {
+		/*
+		 * XXX(hch): verify that sb_logstart makes sense?
+		 */
+		 fino_bno += mp->m_sb.sb_logblocks;
+	}
+
+	/*
 	 * ditto the location of the first inode chunks in the fs ('/')
 	 */
 	if (xfs_sb_version_hasdalign(&mp->m_sb) && do_inoalign)  {

_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs

             reply	other threads:[~2008-12-24 23:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-24 23:19 Christoph Hellwig [this message]
2008-12-25 17:54 ` [PATCH, RFC] xfs_repair: allow filesystems with a single AG Eric Sandeen
2009-01-04 16:48   ` Christoph Hellwig
2009-01-05  3:11 ` Lachlan McIlroy

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20081224231901.GA652@infradead.org \
    --to=hch@infradead.org \
    --cc=arekm@maven.pl \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.