Package: dump
Version: 0.4b41-6
Severity: normal
Tags: patch

To reproduce: make a compressed dump of a filesystem:

        # dump -0 -fdump -z /var
        [...]

Now generate a QFA index:

        $ restore -Pqfa -fdump -v -a
        Verify tape and initialize maps
        Input is from a local file/pipe
        Input block size is 10
        Dump tape is compressed.
        Dump   date: Mon May 24 21:42:31 2010
        Dumped from: the epoch
        Level 0 dump of /var on metalzone:/dev/mapper/vg-var
        Label: var
        writing QFA positions to qfa2
        Extract directories from tape
        Initialize symbol table.
        Extract requested files

Inspect the `qfa' file; notice that the `tapepos' column only contains
zero.

Digging through the source code, I think that the functions
`readtape_comprfile' and `readtape_comprtape' are missing the `#ifdef
USE_QFA' snippet which was added to `readtape_uncompr'.

The following patch appears to work, but I'm really not particularly
confident in my understanding of the `restore' source and I've only
conducted superficial testing (I haven't tested the `comprtape' code-
path at all, because I don't have a tape drive).

diff --git a/restore/tape.c b/restore/tape.c
index c74e390..2696b1d 100644
--- a/restore/tape.c
+++ b/restore/tape.c
@@ -2068,6 +2068,10 @@ readtape_comprfile(char *buf)
                ((struct s_spcl *)&tapebuf[i * TP_BSIZE])->c_magic = 0;
        numtrec = ntrec;
        tpb = (struct tapebuf *) tapebuf;
+#ifdef USE_QFA
+       if (createtapeposflag)
+               (void)GetTapePos(&curtapepos);
+#endif
 
        /* read the block prefix */
        ret = read_a_block(mt, tapebuf, PREFIXSIZE, &rl);
@@ -2157,6 +2161,10 @@ readtape_comprtape(char *buf)
                ((struct s_spcl *)&tapebuf[i * TP_BSIZE])->c_magic = 0;
        numtrec = ntrec;
        tpb = (struct tapebuf *) tapebuf;
+#ifdef USE_QFA
+       if (createtapeposflag)
+               (void)GetTapePos(&curtapepos);
+#endif
 
        /* read the block */
        size = bufsize + PREFIXSIZE;


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 2.6.31.9 (PREEMPT)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages dump depends on:
ii  e2fslibs                  1.41.11-1      ext2/ext3/ext4 file system librari
ii  libblkid1                 2.16.2-0       block device id library
ii  libc6                     2.10.2-6       Embedded GNU C Library: Shared lib
ii  libcomerr2                1.41.11-1      common error description library
ii  libncurses5               5.7+20100313-2 shared libraries for terminal hand
ii  libreadline5              5.2-7          GNU readline and history libraries
ii  libuuid1                  2.16.2-0       Universally Unique ID library
ii  tar                       1.23-1         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