#ifndef lint
static const char rcsid[] =
- "$Id: traverse.c,v 1.44 2002/04/04 08:20:23 stelian Exp $";
+ "$Id: traverse.c,v 1.47 2002/06/10 14:05:00 stelian Exp $";
#endif /* not lint */
#include <config.h>
#include <string.h>
#include <unistd.h>
#endif
+#include <errno.h>
#include <sys/param.h>
#include <sys/stat.h>
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 {
spcl.c_count = 0;
if (metaonly && (dp->di_mode & S_IFMT)) {
- printf("Write header with spcl.c_count=%d\n",spcl.c_count);
spcl.c_flags |= DR_METAONLY;
spcl.c_count = 0;
writeheader(ino);
bread(daddr_t blkno, char *buf, int size)
{
int cnt, i;
- extern int errno;
loop:
#ifdef __linux__
goto loop;
}
if (cnt == -1)
- msg("read error from %s: %s: [block %d]: count=%d\n",
- disk, strerror(errno), blkno, size);
+ msg("read error from %s: %s: [block %d, ext2blk %d]: count=%d\n",
+ disk, strerror(errno), blkno,
+ dbtofsb(sblock, blkno), size);
else
- msg("short read error from %s: [block %d]: count=%d, got=%d\n",
- disk, blkno, size, cnt);
+ msg("short read error from %s: [block %d, ext2blk %d]: count=%d, got=%d\n",
+ disk, blkno, dbtofsb(sblock, blkno), size, cnt);
if (++breaderrors > breademax) {
msg("More than %d block read errors from %d\n",
breademax, disk);
if ((cnt = read(diskfd, buf, (int)dev_bsize)) == dev_bsize)
continue;
if (cnt == -1) {
- msg("read error from %s: %s: [sector %d]: count=%d\n",
- disk, strerror(errno), blkno, dev_bsize);
+ msg("read error from %s: %s: [sector %d, ext2blk %d]: count=%d\n",
+ disk, strerror(errno), blkno,
+ dbtofsb(sblock, blkno), dev_bsize);
continue;
}
- msg("short read error from %s: [sector %d]: count=%d, got=%d\n",
- disk, blkno, dev_bsize, cnt);
+ msg("short read error from %s: [sector %d, ext2blk %d]: count=%d, got=%d\n",
+ disk, blkno, dbtofsb(sblock, blkno), dev_bsize, cnt);
}
}