Package: dump Version: 0.4b43-1 Severity: important Tags: upstream patch einstein:~# /sbin/dump -0 -f- /var/spool/news/overview/ | restore -oax -f- DUMP: Date of this level 0 dump: Sat Feb 19 13:27:45 2011 DUMP: Dumping /dev/mapper/vg0-var (/var (dir /spool/news/overview)) to standard output DUMP: Label: none DUMP: Writing 10 Kilobyte records DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 23168 blocks. DUMP: Volume 1 started with block 1 at: Sat Feb 19 13:27:46 2011 DUMP: dumping (Pass III) [directories] DUMP: dumping (Pass IV) [regular files] Missing blocks at the end of ./spool/news/overview/f/l/k/fa.linux.kernel.IDX, assuming hole Missing blocks at the end of ./spool/news/overview/u/t/uk.test.IDX, assuming hole ... Missing blocks at the end of ./spool/news/overview/c/t/t/comp.text.tex.IDX, assuming hole DUMP: Volume 1 completed at: Sat Feb 19 13:27:49 2011 DUMP: Volume 1 23040 blocks (22.50MB) DUMP: Volume 1 took 0:00:03 DUMP: Volume 1 transfer rate: 7680 kB/s DUMP: 23040 blocks (22.50MB) DUMP: finished in 3 seconds, throughput 7680 kBytes/sec DUMP: Date of this level 0 dump: Sat Feb 19 13:27:45 2011 DUMP: Date this dump completed: Sat Feb 19 13:27:49 2011 DUMP: Average transfer rate: 7680 kB/s DUMP: DUMP IS DONE einstein:~#
Problem is in version 1.67 of dump/traverse.c in the upstream code. Backing out this one change fixes the problem. diff -u -w -r1.67 -r1.66 --- traverse.c 18 Jun 2009 10:00:38 -0000 1.67 +++ traverse.c 2 May 2005 15:10:46 -0000 1.66 @@ -777,6 +777,8 @@ struct block_context *p; e2_blkcnt_t i; + if (blockcnt < NDADDR) + return 0; p = (struct block_context *)private; for (i = p->next_block; i < blockcnt; i++) { p->buf[p->cnt++] = 0; @@ -984,6 +986,19 @@ msg("Warning: undefined file type 0%o\n", dp->di_mode & IFMT); return; } + if (i_size > (u_quad_t)NDADDR * sblock->fs_bsize) +#ifdef __linux__ + cnt = NDADDR * EXT2_FRAGS_PER_BLOCK(fs->super); +#else + cnt = NDADDR * sblock->fs_frag; +#endif + else + cnt = howmany(i_size, sblock->fs_fsize); + blksout(&dp->di_db[0], cnt, ino); + if ((quad_t) (size = i_size - NDADDR * sblock->fs_bsize) <= 0) { + dump_xattr(ino, dp); + return; + } #ifdef __linux__ bc.max = NINDIR(sblock) * EXT2_FRAGS_PER_BLOCK(fs->super); bc.buf = (int *)malloc (bc.max * sizeof (int)); @@ -991,7 +1006,7 @@ bc.ino = ino; bc.next_block = NDADDR; - ext2fs_block_iterate2(fs, (ext2_ino_t)ino, BLOCK_FLAG_DATA_ONLY, NULL, dumponeblock, (void *)&bc); + ext2fs_block_iterate2(fs, (ext2_ino_t)ino, 0, NULL, dumponeblock, (void *)&bc); /* deal with holes at the end of the inode */ if (i_size > ((u_quad_t)bc.next_block) * sblock->fs_fsize) { remaining = i_size - ((u_quad_t)bc.next_block) * sblock->fs_fsize; @@ -1009,15 +1024,6 @@ free(bc.buf); dump_xattr(ino, dp); #else - if (i_size > (u_quad_t)NDADDR * sblock->fs_bsize) - cnt = NDADDR * sblock->fs_frag; - else - cnt = howmany(i_size, sblock->fs_fsize); - blksout(&dp->di_db[0], cnt, ino); - if ((quad_t) (size = i_size - NDADDR * sblock->fs_bsize) <= 0) { - dump_xattr(ino, dp); - return; - } for (ind_level = 0; ind_level < NIADDR; ind_level++) { dmpindir(ino, dp->di_ib[ind_level], ind_level, &size); if (size <= 0) Bug has already been reported upstream: http://sourceforge.net/tracker/?func=detail&aid=3133762&group_id=1306&atid=101306 -- System Information: Debian Release: 6.0 APT prefers stable APT policy: (990, 'stable') Architecture: i386 (i686) Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core) Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1) Shell: /bin/sh linked to /bin/bash Versions of packages dump depends on: ii e2fslibs 1.41.12-2 ext2/ext3/ext4 file system librari ii libblkid1 2.17.2-9 block device id library ii libc6 2.11.2-10 Embedded GNU C Library: Shared lib ii libcomerr2 1.41.12-2 common error description library ii libncurses5 5.7+20100313-5 shared libraries for terminal hand ii libreadline6 6.1-3 GNU readline and history libraries ii libselinux1 2.0.96-1 SELinux runtime shared libraries ii libuuid1 2.17.2-9 Universally Unique ID library ii tar 1.23-3 GNU version of the tar archiving u dump recommends no packages. dump suggests no packages. -- debconf information: dump/dumpdates_is_a_symlink: dump/moving_from_etc_to_var: -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org