Author: cperciva
Date: Tue Apr 26 02:06:31 2011
New Revision: 221049
URL: http://svn.freebsd.org/changeset/base/221049

Log:
  Stop trying to zero UFS1 superblocks if we fall off the end of the disk.
  
  This avoids a potentially many-hours-long loop of failed writes if newfs
  finds a partially-overwritten superblock (or, for that matter, random
  garbage which happens to have superblock magic bytes); on one occasion I
  found newfs trying to zero 800 million superblocks on a 50 MB disk.
  
  Reviewed by:  mckusick
  MFC after:    1 week

Modified:
  head/sbin/newfs/mkfs.c

Modified: head/sbin/newfs/mkfs.c
==============================================================================
--- head/sbin/newfs/mkfs.c      Tue Apr 26 01:56:18 2011        (r221048)
+++ head/sbin/newfs/mkfs.c      Tue Apr 26 02:06:31 2011        (r221049)
@@ -516,9 +516,12 @@ restart:
                        fsdummy.fs_magic = 0;
                        bwrite(&disk, part_ofs + SBLOCK_UFS1 / disk.d_bsize,
                            chdummy, SBLOCKSIZE);
-                       for (cg = 0; cg < fsdummy.fs_ncg; cg++)
+                       for (cg = 0; cg < fsdummy.fs_ncg; cg++) {
+                               if (fsbtodb(&fsdummy, cgsblock(&fsdummy, cg)) > 
fssize)
+                                       break;
                                bwrite(&disk, part_ofs + fsbtodb(&fsdummy,
                                  cgsblock(&fsdummy, cg)), chdummy, SBLOCKSIZE);
+                       }
                }
        }
        if (!Nflag)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to