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>