inode の数
ext2/ext3 の inode の数はどうやって決まるのだろう,と思って,mke2fs のソース (e2fsprogs の misc/mke2fs.c) を読んでます.こんな事している場合では... :-p
オプションで指定しない限りは inode_ratio というもので決まるっぽいですね.関数 PRS (この関数ちょっと長すぎでは? ^^;) 内で
param.s_inodes_count = num_inodes ? num_inodes : ((__u64) param.s_blocks_count * blocksize) / inode_ratio;
ってのがあるので,きっとコレでしょう.
inode_ratio は set_fs_defaults 内で
for (p = settings; p->type; p++) { if ((strcmp(p->type, fs_type) != 0) && (strcmp(p->type, default_str) != 0)) continue; if ((p->size != 0) && (megs > p->size)) continue; if (ratio == 0) *inode_ratio = p->inode_ratio < blocksize ? blocksize : p->inode_ratio; use_bsize = p->blocksize; }
てな感じ.
setting は
struct mke2fs_defaults { const char *type; int size; int blocksize; int inode_ratio; } settings[] = { { default_str, 0, 4096, 8192 }, { default_str, 512, 1024, 4096 }, { default_str, 3, 1024, 8192 }, { "journal", 0, 4096, 8192 }, { "news", 0, 4096, 4096 }, { "largefile", 0, 4096, 1024 * 1024 }, { "largefile4", 0, 4096, 4096 * 1024 }, { 0, 0, 0, 0}, };
となっているから,フツー (って何? :-p) にやると 8192 になるかな? (ext3 だと type が "journal" になるっぽい < これはちゃんと見てない)