ひらメソド

なんとなく昨晩まで見たあたりを確認しつつ掘ってみる。
そこローカルな書き方、というのを学習する必要あり。掘ってみたら投入されてる手続きがあったりして面白いな、と言いつつ昨晩エントリを見てみたら宿題があった事が判明。
カーネルの中で 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() 手続きの概要が書けてない。