dentryの参照要求と参照の終了

dentryを利用する前には必ず、dget関数を呼び出しdentryの参照数を1増やしておかねばならない。dget関数はdentryの参照数を1増やす関数である。

また参照が終わったら、dput関数によってdentryの参照数を1減らさなければならない。このとき参照数が0になった場合、そのdentryの状態により、処理が分かれる。またdputによりこのdentryが解放されてしまう場合は、親ディレクトリのdentryに対するdputも呼び出している。(子ファイルからの参照を一つ減らすため)

      dput(dentry)
           if (参照数 > 1) {
                参照数を1減らす
                return
           }
           if (dentry_unusedリストにリンクされていたら) {
                 一旦、 dentry_unusedリストからはずす
           }
           if (既にキャッシュに登録されていない) {
                 dentryのリンクを全て切る。
                 対応するinodeの解放(dentry_iput関数)
                 parent = dentry->d_parent;
                 dentryのメモリ領域解放(d_free関数)
                 親ディレクトリのdentryに対してdput関数を呼びだす。
           }
           dentry_unusedリストに繋ぐ

(NIS)HirokazuTakahashi
2000年06月11日 (日) 22時29分57秒 JST
1