Fix QFA file generation.
authorStelian Pop <stelian@popies.net>
Wed, 4 Jun 2008 19:27:47 +0000 (19:27 +0000)
committerStelian Pop <stelian@popies.net>
Wed, 4 Jun 2008 19:27:47 +0000 (19:27 +0000)
CHANGES
dump/tape.c

diff --git a/CHANGES b/CHANGES
index fcbde066be912405e64823ffc62dd7d77c02b230..f7c414bcf0b250edbe71296a0061ed900da20ce1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.292 2008/05/05 09:25:27 stelian Exp $
+$Id: CHANGES,v 1.293 2008/06/04 19:27:47 stelian Exp $
 
 Changes between versions 0.4b41 and 0.4b42 (released xxxxxxxxxxxxxxx)
 =====================================================================
@@ -41,6 +41,13 @@ Changes between versions 0.4b41 and 0.4b42 (released xxxxxxxxxxxxxxx)
        Thanks to Aaron S. Hawley <ashawley@users.sourceforge.net> for
        the patch.
 
+10.    Fix the QFA generation when extended attributes are backuped
+       along with the inodes. Prior to this fix, the entries for
+       some inodes may get corrupted (duplicated entries or incorrect
+       ones), making the QFA file unusable for repositionning in
+       restore. Many thanks to Kenneth Porter <shiva@sewingwitch.com>
+       for the bug report and the testing of the fix.
+
 Changes between versions 0.4b40 and 0.4b41 (released January 2, 2006)
 =====================================================================
 
index ebee4d89a455ed38bd76193387a944b7dcc72e9f..3e41622b3f51057daa35ac73855ae17245f250f9 100644 (file)
@@ -37,7 +37,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: tape.c,v 1.89 2005/08/20 21:00:48 stelian Exp $";
+       "$Id: tape.c,v 1.90 2008/06/04 19:27:48 stelian Exp $";
 #endif /* not lint */
 
 #include <config.h>
@@ -1310,7 +1310,8 @@ doslave(int cmd,
                                if ((spclptr->c_magic == NFS_MAGIC) && 
                                                        (spclptr->c_type == TS_INODE) &&
                                                        (spclptr->c_date == gThisDumpDate) &&
-                                                       !(spclptr->c_dinode.di_mode & S_IFDIR)
+                                                       !(spclptr->c_dinode.di_mode & S_IFDIR) &&
+                                                       !(spclptr->c_flags & DR_EXTATTRIBUTES)
                                                ) {
                                        foundone = 1;
                                        /* if (cntntrecs >= maxntrecs) {         only write every maxntrecs amount of data */