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