- if (cvtflag) {
- if (sblock.fs_postblformat == FS_42POSTBLFMT) {
- /*
- * Requested to convert from old format to new format
- */
- if (preen)
- pwarn("CONVERTING TO NEW FILE SYSTEM FORMAT\n");
- else if (!reply("CONVERT TO NEW FILE SYSTEM FORMAT"))
- return(0);
- sblock.fs_postblformat = FS_DYNAMICPOSTBLFMT;
- sblock.fs_nrpos = 8;
- sblock.fs_postbloff =
- (char *)(&sblock.fs_opostbl[0][0]) -
- (char *)(&sblock.fs_link);
- sblock.fs_rotbloff = &sblock.fs_space[0] -
- (u_char *)(&sblock.fs_link);
- sblock.fs_cgsize =
- fragroundup(&sblock, CGSIZE(&sblock));
- /*
- * Planning now for future expansion.
- */
-# ifdef _NOQUAD
- sblock.fs_qbmask.val[_QUAD_HIGHWORD] = 0;
- sblock.fs_qbmask.val[_QUAD_LOWWORD] =
- ~sblock.fs_bmask;
- sblock.fs_qfmask.val[_QUAD_HIGHWORD] = 0;
- sblock.fs_qfmask.val[_QUAD_LOWWORD] =
- ~sblock.fs_fmask;
-# else /* QUAD */
- sblock.fs_qbmask = ~sblock.fs_bmask;
- sblock.fs_qfmask = ~sblock.fs_fmask;
-# endif /* QUAD */
- sbdirty();
- dirty(&asblk);
- } else if (sblock.fs_postblformat == FS_DYNAMICPOSTBLFMT) {
- /*
- * Requested to convert from new format to old format
- */
- if (sblock.fs_nrpos != 8 || sblock.fs_ipg > 2048 ||
- sblock.fs_cpg > 32 || sblock.fs_cpc > 16) {
- printf(
- "PARAMETERS OF CURRENT FILE SYSTEM DO NOT\n\t");
- errexit(
- "ALLOW CONVERSION TO OLD FILE SYSTEM FORMAT\n");
- }
- if (preen)
- pwarn("CONVERTING TO OLD FILE SYSTEM FORMAT\n");
- else if (!reply("CONVERT TO OLD FILE SYSTEM FORMAT"))
- return(0);
- sblock.fs_postblformat = FS_42POSTBLFMT;
- sblock.fs_cgsize = fragroundup(&sblock,
- sizeof(struct ocg) + howmany(sblock.fs_fpg, NBBY));
- sbdirty();
- dirty(&asblk);
- } else {
- errexit("UNKNOWN FILE SYSTEM FORMAT\n");
+ if (sblock.fs_inodefmt >= FS_44INODEFMT) {
+ newinofmt = 1;
+ } else {
+ sblock.fs_qbmask = ~sblock.fs_bmask;
+ sblock.fs_qfmask = ~sblock.fs_fmask;
+ newinofmt = 0;
+ }
+ /*
+ * Convert to new inode format.
+ */
+ if (cvtlevel >= 2 && sblock.fs_inodefmt < FS_44INODEFMT) {
+ if (preen)
+ pwarn("CONVERTING TO NEW INODE FORMAT\n");
+ else if (!reply("CONVERT TO NEW INODE FORMAT"))
+ return(0);
+ doinglevel2++;
+ sblock.fs_inodefmt = FS_44INODEFMT;
+ sizepb = sblock.fs_bsize;
+ sblock.fs_maxfilesize = sblock.fs_bsize * NDADDR - 1;
+ for (i = 0; i < NIADDR; i++) {
+ sizepb *= NINDIR(&sblock);
+ sblock.fs_maxfilesize += sizepb;