Fix nodump or exclude inodes propagation on directory tree.
authorStelian Pop <stelian@popies.net>
Thu, 16 May 2002 21:22:36 +0000 (21:22 +0000)
committerStelian Pop <stelian@popies.net>
Thu, 16 May 2002 21:22:36 +0000 (21:22 +0000)
CHANGES
THANKS
dump/traverse.c

diff --git a/CHANGES b/CHANGES
index 1f139e5b3510c43d6042aa16aa23c52252dd0d24..a02710ce089820f191fbbde3ea9635d860672cfd 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.174 2002/05/06 08:45:41 stelian Exp $
+$Id: CHANGES,v 1.175 2002/05/16 21:22:36 stelian Exp $
 
 Changes between versions 0.4b28 and 0.4b29 (released ??????????????)
 ====================================================================
@@ -15,6 +15,14 @@ Changes between versions 0.4b28 and 0.4b29 (released ??????????????)
        which caused restore to fail when the inode maps were not entirely
        contained on the first volume (when using really small volumes or
        when dumping a huge number of inodes).
+
+3.     Fixed a problem in dump, where files in subdirectories of directories 
+       that have the nodump flag set (or being excluded with -e/-E) were 
+       sometimes incorrectly dumped (instead of being excluded). The original
+       fix is from David C Lawrence <tale@dd.org> in the FreeBSD version 
+       of dump: http://www.FreeBSD.org/cgi/query-pr.cgi?pr=32414
+       Thanks to Ted Grzesik <tedgyz@roostme.com> for reporting the bug and 
+       help testing the patch.
        
 Changes between versions 0.4b27 and 0.4b28 (released April 12, 2002)
 ====================================================================
diff --git a/THANKS b/THANKS
index ee07f6289c69d3fdc3a01debd5a5c22f3775fd89..c2dd1369fbcab1f05ae20ab24f553ebb346a3aef 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -1,4 +1,4 @@
-$Id: THANKS,v 1.57 2002/05/06 08:46:17 stelian Exp $
+$Id: THANKS,v 1.58 2002/05/16 21:22:36 stelian Exp $
 
 Dump and restore were written by the people of the CSRG at the University
 of California, Berkeley.
@@ -42,6 +42,7 @@ Jeremy Fitzhardinge   jeremy@goop.org
 Eirik Fuller           eirik@netcom.com
 Uwe Gohlke             uwe@ugsoft.de
 Ian Gordon             iangordon@users.sourceforge.net
+Ted Grzesik            tedgyz@roostme.com
 Andreas Hasenack       andreas@conectiva.com.br
 Christian Haul         haul@informatik.tu-darmstadt.de
 Kjetil Torgrim Homme   kjetilho@ifi.uio.no
index 901ef2de6c7ce6f7c47695451899d1276c057642..09bcded2f35e22e261255596253205179e889a4f 100644 (file)
@@ -41,7 +41,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: traverse.c,v 1.45 2002/04/11 09:19:07 stelian Exp $";
+       "$Id: traverse.c,v 1.46 2002/05/16 21:22:36 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -668,12 +668,13 @@ searchdir(struct ext2_dir_entry *dp, int offset, int blocksize, char *buf, void
                ip = getino(dp->inode);
                if (TSTINO(dp->inode, dumpinomap)) {
                        CLRINO(dp->inode, dumpinomap);
-                       CLRINO(dp->inode, usedinomap);
                        *tapesize -= blockest(ip);
                }
-               /* Add dir back to the dir map, to propagate nodump */
+               /* Add dir back to the dir map and remove from
+                * usedinomap to propagate nodump */
                if ((ip->di_mode & IFMT) == IFDIR) {
                        SETINO(dp->inode, dumpdirmap);
+                       CLRINO(dp->inode, usedinomap);
                        *ret |= HASSUBDIRS;
                }
        } else {