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