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

Reply via email to