From 75689debe30880a117a761d289c0776153f1f4fe Mon Sep 17 00:00:00 2001 From: Ben Gras Date: Wed, 1 Jun 2005 11:39:45 +0000 Subject: [PATCH] fixed bug that caused number of inodes to make estimation to be terrible in most cases --- commands/simple/mkfs.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/commands/simple/mkfs.c b/commands/simple/mkfs.c index 25278294e..c5d0b4c80 100755 --- a/commands/simple/mkfs.c +++ b/commands/simple/mkfs.c @@ -39,8 +39,8 @@ #include "../../servers/fs/super.h" #include -#ifndef min -#define min(a,b) ((a) < (b) ? (a) : (b)) +#ifndef max +#define max(a,b) ((a) > (b) ? (a) : (b)) #endif #ifndef DOS @@ -267,7 +267,7 @@ char *argv[]; } if (i == 0) { int kb; - kb = blocks * (min(block_size,1024) / 1024); + kb = blocks * (max(block_size,1024) / 1024); /* The default for inodes is 2 blocks per kb, rounded up * to fill an inode block. Above 20M, the average files are * sure to be larger because it is hard to fill up 20M with @@ -280,9 +280,12 @@ char *argv[]; if (kb >= 60000) i = kb / 5; if (kb >= 80000) i = kb / 6; if (kb >= 100000) i = kb / 7; + + /* round up to fill inode block */ i += inodes_per_block - 1; i = i / inodes_per_block * inodes_per_block; if (i > INODE_MAX) i = INODE_MAX; + } if (blocks < 5) pexit("Block count too small"); if (blocks > max_nrblocks) pexit("Block count too large");