cvs commit: src/sbin/restore tape.c

Kirk McKusick mckusick at FreeBSD.org
Thu May 22 22:19:33 UTC 2008


mckusick    2008-05-22 22:19:33 UTC

  FreeBSD src repository

  Modified files:
    sbin/restore         tape.c 
  Log:
  This fixes the "getfile: lost data" panic when restoring dumps
  on a 7.0 or later system that were created on a pre-5.0 system.
  We must ensure that restore zeros out the previously undefined
  birthtime and external attribute size fields when reading dump
  tapes made by the UFS1 dump program.
  
  The problem is that UFS2 dump carefully zeros out the unused
  birthtime and external attribute size fields in the dump header
  when dumping UFS1 filesystems, but the UFS1 dump didn't know about
  those fields (they were spares) so just left whatever random junk
  was in them. So, when restoring one of these pre-UFS2 dumps,
  the new restore would eventually trip across a header that had
  a non-zero external attribute size and try to extract it. That
  consumed several tape blocks which left it totally out of sync
  and very unhappy (i.e., the panic). The fix is in the gethead()
  function which modernizes old headers by copying old fields to
  their new location (and with this fix) zeroing out previously
  undefined fields.
  
  PR:             bin/120881
  Review by:      David Malone & Scott Lambert
  MFC after:      1 week
  
  Revision  Changes    Path
  1.53      +3 -0      src/sbin/restore/tape.c


More information about the cvs-src mailing list