diff options
Diffstat (limited to 'genext2fs')
-rw-r--r-- | genext2fs/genext2fs-1.3/autosize.patch | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/genext2fs/genext2fs-1.3/autosize.patch b/genext2fs/genext2fs-1.3/autosize.patch index a41b79b5ab..a4318a6eee 100644 --- a/genext2fs/genext2fs-1.3/autosize.patch +++ b/genext2fs/genext2fs-1.3/autosize.patch @@ -23,17 +23,17 @@ #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 { @@ -92,12 +92,12 @@ + } + } +} -+ + +static int count_ino_in_hashtable(void) +{ + long count = 0; + int i; -+ + + for (i = 0; i < HASH_SIZE; i++) { + ino_dev_hashtable_bucket_t *bucket = ino_dev_hashtable[i]; + while (bucket != NULL) { @@ -105,7 +105,7 @@ + bucket = bucket->next; + } + } -+ + + return count; +} @@ -290,17 +290,10 @@ if(optind < (argc - 1)) error_msg_and_die("too many arguments"); if(optind == (argc - 1)) -@@ -2201,12 +2411,54 @@ +@@ -2201,6 +2411,46 @@ } 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++) @@ -341,9 +334,6 @@ + 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++) + if(nbblocks == -1) + error_msg_and_die("filesystem size unspecified"); + if(nbinodes == -1) |