#ifndef lint
static const char rcsid[] =
- "$Id: traverse.c,v 1.34 2001/06/18 10:58:28 stelian Exp $";
+ "$Id: traverse.c,v 1.37 2001/07/19 09:49:35 stelian Exp $";
#endif /* not lint */
#include <config.h>
static int searchdir __P((dump_ino_t ino, daddr_t blkno, long size, long filesize));
#endif
static void mapfileino __P((dump_ino_t ino, struct dinode const *dp, long *tapesize, int *dirskipped));
-static int exclude_ino __P((dump_ino_t ino));
-extern dump_ino_t iexclude_list[IEXCLUDE_MAXNUM]; /* the inode exclude list */
-extern int iexclude_num; /* number of elements in list */
#ifdef HAVE_EXT2_JOURNAL_INUM
#define ext2_journal_ino(sb) (sb->s_journal_inum)
else {
if (es->s_feature_compat &
EXT3_FEATURE_COMPAT_HAS_JOURNAL &&
- journal_ino && !exclude_ino(journal_ino)) {
- iexclude_list[iexclude_num++] = journal_ino;
- msg("Exclude ext3 journal inode %u\n",
- journal_ino);
- }
- if (!exclude_ino(EXT2_RESIZE_INO))
- iexclude_list[iexclude_num++] = EXT2_RESIZE_INO;
+ journal_ino)
+ do_exclude_ino(journal_ino, "journal inode");
+ do_exclude_ino(EXT2_RESIZE_INO, "resize inode");
}
}
return retval;
return (blkest + 1);
}
-/*
- * This tests whether an inode is in the exclude list
- */
-int
-exclude_ino(dump_ino_t ino)
-{
- /* 04-Feb-00 ILC */
- if (iexclude_num) { /* if there are inodes in the exclude list */
- int idx; /* then check this inode against it */
- for (idx = 0; idx < iexclude_num; idx++)
- if (ino == iexclude_list[idx])
- return 1;
- }
- return 0;
-}
-
/* Auxiliary macro to pick up files changed since previous dump. */
#define CHANGEDSINCE(dp, t) \
((dp)->di_mtime >= (t) || (dp)->di_ctime >= (t))
ext2fs_block_iterate2(fs, (ext2_ino_t)ino, 0, NULL, dumponeblock, (void *)&bc);
/* deal with holes at the end of the inode */
- remaining = i_size - bc.next_block*sblock->fs_fsize;
- if (remaining > 0)
+ if (i_size > bc.next_block*sblock->fs_fsize) {
+ remaining = i_size - bc.next_block*sblock->fs_fsize;
for (i = 0; i < howmany(remaining, sblock->fs_fsize); i++) {
bc.buf[bc.cnt++] = 0;
if (bc.cnt == bc.max) {
bc.cnt = 0;
}
}
+ }
if (bc.cnt > 0) {
blksout (bc.buf, bc.cnt, bc.ino);
}