  	if(optind < (argc - 1))
  		error_msg_and_die("too many arguments");
  	if(optind == (argc - 1))
-@@ -2201,6 +2411,46 @@
+@@ -2201,12 +2411,54 @@
  	}
  	else
  	{
+-		if(nbblocks == -1)
+-			error_msg_and_die("filesystem size unspecified");
+ 		if(nbinodes == -1)
+ 			nbinodes = nbblocks * BLOCKSIZE / rndup(BYTES_PER_INODE, BLOCKSIZE);
+ 		if(nbresrvd == -1)
+ 			nbresrvd = nbblocks * RESERVED_INODES;
++
 +		stats.ninodes = 0;
 +		stats.nblocks = 0;
 +		for(i = 0; i < didx; i++)

 #include <fcntl.h>
+#include <sys/types.h>
+#include <getopt.h>
+
+#define HASH_SIZE	311		/* Should be prime */
+#define hash_inode(i)	((i) % HASH_SIZE)
+
+typedef struct ino_dev_hash_bucket_struct {
+	struct ino_dev_hash_bucket_struct *next;
+	ino_t ino;
+	dev_t dev;
+	char name[1];
+} ino_dev_hashtable_bucket_t;
+
+static ino_dev_hashtable_bucket_t *ino_dev_hashtable[HASH_SIZE];
+
+struct stats {

+			printf("Number of inodes too low, increasing to %d\n",tmp_nbinodes);
+			nbinodes = tmp_nbinodes;
+		}
+
+		if(nbblocks == -1)
+			error_msg_and_die("filesystem size unspecified");
 		fs = init_fs(nbblocks, nbinodes, nbresrvd, holes);
 	}
 	for(i = 0; i < didx; i++)
