Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Apr 2001 01:13:13 -0700
From:      Dima Dorfman <dima@unixfreak.org>
To:        Alain Thivillon <at@teaser.net>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Dump problem 
Message-ID:  <20010418081313.BC1C13E09@bazooka.unixfreak.org>
In-Reply-To: <20010418095644.D50857@vinea.teaser.fr>; from at@teaser.net on "Wed, 18 Apr 2001 09:56:44 %2B0200"

next in thread | previous in thread | raw e-mail | index | archive | help
Alain Thivillon <at@teaser.net> writes:
> Dump seems seriously broken in 4.3-RC, any dump of level higher than 0
> seems missing a lot of files.

This is sort of a known problem.  ``Sort of'' meaning that not all
machines display it, although I think they should.  Could you please
try the patch in PR bin/26507 and let me know if it helps?  I've also
attached it for your convenience.

Thanks,

					Dima Dorfman
					dima@unixfreak.org


Index: traverse.c
===================================================================
RCS file: /st/src/FreeBSD/src/sbin/dump/traverse.c,v
retrieving revision 1.12
diff -u -r1.12 traverse.c
--- traverse.c	2001/03/03 11:35:50	1.12
+++ traverse.c	2001/04/07 22:50:35
@@ -155,13 +155,15 @@
 		if ((mode = (dp->di_mode & IFMT)) == 0)
 			continue;
 		/*
-		 * All dirs go in dumpdirmap; only inodes that are to
-		 * be dumped go in usedinomap and dumpinomap, however.
+		 * Everything must go in usedinomap so that a check
+		 * for "in dumpdirmap but not in usedinomap" to detect
+		 * dirs with nodump set has a chance of succeeding
+		 * (this is used in mapdirs()).
 		 */
+		SETINO(ino, usedinomap);
 		if (mode == IFDIR)
 			SETINO(ino, dumpdirmap);
 		if (WANTTODUMP(dp)) {
-			SETINO(ino, usedinomap);
 			SETINO(ino, dumpinomap);
 			if (mode != IFREG && mode != IFDIR && mode != IFLNK)
 				*tapesize += 1;
@@ -169,8 +171,11 @@
 				*tapesize += blockest(dp);
 			continue;
 		}
-		if (mode == IFDIR)
+		if (mode == IFDIR) {
+			if (!nonodump && (dp->di_flags & UF_NODUMP))
+				CLRINO(ino, usedinomap);
 			anydirskipped = 1;
+		}
 	}
 	/*
 	 * Restore gets very upset if the root is not dumped,
@@ -218,7 +223,7 @@
 		 * it isn't in usedinomap, we have to go through it to
 		 * propagate the nodump flag.
 		 */
-		nodump = (TSTINO(ino, usedinomap) == 0);
+		nodump = !nonodump && (TSTINO(ino, usedinomap) == 0);
 		if ((isdir & 1) == 0 || (TSTINO(ino, dumpinomap) && !nodump))
 			continue;
 		dp = getino(ino);

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010418081313.BC1C13E09>