bin/120881: 4.11 dumps cause restore to panic with "lost data"
Diomidis Spinellis
dds at aueb.gr
Wed Feb 20 13:00:05 UTC 2008
>Number: 120881
>Category: bin
>Synopsis: 4.11 dumps cause restore to panic with "lost data"
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Feb 20 13:00:04 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Diomidis Spinellis
>Release: FreeBSD 8.0-CURRENT i386
>Organization:
AUEB
>Environment:
System: FreeBSD icarian.dmst.aueb.gr 8.0-CURRENT FreeBSD 8.0-CURRENT #13: Thu Jan 24 14:21:33 EET 2008 dds at icarian.dmst.aueb.gr:/usr/obj/usr/home/dds/src/fbsd-head/src/sys/ICARIAN i386
>Description:
Restoring a level-0 dump generated on a 4.11 system with
dump -h 0 -au -f - /vol
on a CURRENT system with
restore -dv -rN -f -
causes restore to panic on tape.c line 1025 with curblk having the
value of 1. Previous files verify OK.
Here is the excerpted output of restore:
Verify tape and initialize maps
Dump date: Fri Jan 11 21:36:29 2008
Dumped from: the epoch
Level 0 dump of /vol on [...]:/dev/ad2c
Label: none
Begin level 0 restore
Initialize symbol table.
Extract directories from tape
[...]
Extract new leaves.
Check pointing the restore
extract file ./du.out
skipping 1 junk block(s)
File header, ino 3
extract file ./errors
skipping 1 junk block(s)
File header, ino 4
extract file ./music/[...]
skipping 1 junk block(s)
File header, ino 540672
extract file ./music/...
File header, ino 540676
File continuation header, ino 540676
[... 16 identical lines]
File continuation header, ino 540676
Missing address (header) block for ./[...] at 0 blocks
extract file ./music/[...]
File header, ino 540677
File continuation header, ino 540677
[... 18 identical lines]
File continuation header, ino 540677
Missing address (header) block for ./[...] at 0 blocks
getfile: lost data
abort? [yn]
>How-To-Repeat:
See above. The dump in question is 190GB, but I could work on
creating a subset, if needed.
>Fix:
It seems that the culprit is the following sequence in tape.c
if (curblk > 0)
panic("getfile: lost data\n");
This was introduced in version 1.48
Version 1.44.2.1 of tape.c shipped with FreeBSD 6.2 has a different
handler:
if (curblk > 0)
(*fill)((char *)buf, (long)((curblk * TP_BSIZE) + size));
which doesn't panic.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list