]> Zhao Yanbai Git Server - minix.git/commitdiff
. fsck needs more memory
authorBen Gras <ben@minix3.org>
Fri, 22 Dec 2006 13:40:37 +0000 (13:40 +0000)
committerBen Gras <ben@minix3.org>
Fri, 22 Dec 2006 13:40:37 +0000 (13:40 +0000)
 . fsck must deal with s_max_file_size in superblock being larger
   than LONG_MAX now that off_t is signed

commands/simple/Makefile
commands/simple/fsck.c

index b7ae3806c0606077bd506514efc04e227409dfe3..2ab7702b94b8c38aa9a3353c59775d6f35c796f3 100755 (executable)
@@ -419,7 +419,7 @@ fortune:    fortune.c
 
 fsck:  fsck.c
        $(CCLD) -o $@ $?
-       @install -S 4096k $@
+       @install -S 5120k $@
 
 fsck1: fsck1.c
        $(CCLD) -o $@ $?
index 5135de51346a7bbe49d46ac96834254ecf55dbfe..14cadc6bd23cb31011851f78ab4d2320ccc098f7 100755 (executable)
@@ -573,8 +573,11 @@ void getsuper()
   if (sb.s_zmap_blocks <= 0) fatal("no zmap");
   if (sb.s_firstdatazone <= 4) fatal("first data zone too small");
   if (sb.s_log_zone_size < 0) fatal("zone size < block size");
-  if (sb.s_max_size <= 0) fatal("max. file size <= 0");
-
+  if (sb.s_max_size <= 0) {
+       printf("max file size %ld ", sb.s_max_size);
+       sb.s_max_size = LONG_MAX;
+       printf("set to %ld\n", sb.s_max_size);
+  }
 }
 
 /* Check the super block for reasonable contents. */
@@ -616,6 +619,8 @@ void chksuper()
   maxsize = MAX_FILE_POS;
   if (((maxsize - 1) >> sb.s_log_zone_size) / block_size >= MAX_ZONES)
        maxsize = ((long) MAX_ZONES * block_size) << sb.s_log_zone_size;
+  if(maxsize <= 0)
+       maxsize = LONG_MAX;
   if (sb.s_max_size != maxsize) {
        printf("warning: expected max size to be %ld ", maxsize);
        printf("instead of %ld\n", sb.s_max_size);