mckusick@ucbvax.UUCP (Kirk Mckusick) (03/25/84)
From: mckusick@ucbmonet (Kirk Mckusick) Subject: Apparent loss of files when doing `restore i' Index: etc/restore/restore.c 4.2BSD Description: When using `restore i' or `restore x' on a multireel dump, and using the recommended procedure of starting with the last reel and working towards the first, restore will sometimes give up after two or more reels, complaining that some list of files are missing. Repeat-By: Find a dump spanning three or more reels and request restore to extract files that reside on all three reels, plus THE file that starts at the end of the next to last reel and continues onto the last reel. Then load the reels from last to first. When the next to last reel is loaded it will proceed to its end and begin extracting the spanning file. Restore will demand that the last reel be loaded (so that it can finish reading the spanning file). After restore finishes extracting the spanning file it should request that another reel be loaded. Instead it will report that all requested files on the earlier reels are missing. Fix: *** restore.3.18 Thu Mar 22 19:24:00 1984 --- restore.3.19 Thu Mar 22 19:23:31 1984 *************** *** 657,668 if (next == curfile.ino && next <= last) { ep = lookupino(next); if (ep == NIL) panic("corrupted symbol table\n"); (void) extractfile(myname(ep)); ep->e_flags &= ~NEW; } } } /* * Add links. --- 657,670 ----- if (next == curfile.ino && next <= last) { ep = lookupino(next); if (ep == NIL) panic("corrupted symbol table\n"); (void) extractfile(myname(ep)); ep->e_flags &= ~NEW; + if (volno != curvol) + skipmaps(); } } } /* * Add links.