[net.bugs.4bsd] Apparent loss of files when doing `restore i'

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.