VOP_INACTIVE(9)

名称
VOP_INACTIVE, VOP_RECLAIM - vnode のためのファイルシステム資源の回収

書式
<sys/param.h> <sys/vnode.h> int VOP_INACTIVE(struct vnode *vp, struct thread *td) int VOP_RECLAIM(struct vnode *vp, struct thread *td)

解説
引数は以下の通りです。

vp  回収されている vnode。

VOP_INACTIVE() は、カーネルがもはやその vnode を使用しなくなった時に呼び出されます。 これは、参照カウントが 0 になった時、 またはオープンされているファイルがあるファイルシステムが 強制的にアンマウントされた時に起こります。 ‘オープンされているが削除された’ ファイルのための領域を回収するために、 使用可能です。

VOP_RECLAIM() は、異なるファイルシステムのために vnode が再利用される時に呼び出されます。 vnode に関連しているあらゆるファイルシステム固有の資源は、解放されるべきです。

ロック
VOP_INACTIVE では、入る時に vp がロックされます。 VOP_INACTIVE コードは、戻る前に vp をアンロックしなければなりません。

VOP_RECLAIM では、入る時に vp はロックされず、戻り時もロックされないままでいるべきです。

疑似コード

    int
    vop_inactive(struct vnode *vp, struct thread *td)
    {
        if (link count of vp == 0) {
    	/*
    	 * vp のためのファイルシステム内の領域を回収します。
    	 */
    	...;
        }
        VOP_UNLOCK(vp, 0, td);
        return 0;
    }
    int
    vop_reclaim(struct vnode *vp, struct thread *td)
    {
        /*
         * 名前キャッシュを一掃します。
         */
        cache_purge(vp);
        /*
         * ファイルシステムに関連したデータを解放します。
         */
        ...;
        return 0;
    }

関連項目
vnode(9)

作者
このマニュアルページは Doug Rabson が書きました。