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 [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]