ひらメソド
なんとなく昨晩まで見たあたりを確認しつつ掘ってみる。
そこローカルな書き方、というのを学習する必要あり。掘ってみたら投入されてる手続きがあったりして面白いな、と言いつつ昨晩エントリを見てみたら宿題があった事が判明。
カーネルの中で uniq な inodes_stat 及びその nr_unused な属性に関する確認ッスか。
indes_stat.nr_unused
カーネルのソースツリー全部を
$ find |xargs grep inodes_stat|grep nr_unused
で探索。出力が以下なカンジ (2.6.10 です)。
./mm/page-writeback.c: (inodes_stat.nr_inodes - inodes_stat.nr_unused); ./fs/hugetlbfs/inode.c: inodes_stat.nr_unused++; ./fs/hugetlbfs/inode.c: inodes_stat.nr_unused--; ./fs/fs-writeback.c: inodes_stat.nr_unused++; ./fs/fs-writeback.c: (inodes_stat.nr_inodes - inodes_stat.nr_unused) + ./fs/inode.c: inodes_stat.nr_unused--; ./fs/inode.c: inodes_stat.nr_unused -= count; ./fs/inode.c: inodes_stat.nr_unused -= nr_pruned; ./fs/inode.c: return (inodes_stat.nr_unused / 100) * sysctl_vfs_cache_pressure; ./fs/inode.c: inodes_stat.nr_unused++; ./fs/inode.c: inodes_stat.nr_unused--;
うーん。名前通りで unused な数なんでしょうが、__iget() の実装って何なんだ、と言いつつコード見てたら当たり前な事に気づく。
しかし、fs/fs-writeback.c でナニ、って思ったら include/linux/fs.h で以下な定義らしい。
extern struct inodes_stat_t inodes_stat;
あ、上記って struct inodes_stat_t の定義の直下だ。(を
とりあえず
__iget() 手続きの上記な部分に加筆。そして igrab() 手続きの概要が書けてない。