スポンサーリンク

VOP_INACTIVE(9) FreeBSD カーネル開発者マニュアル VOP_INACTIVE(9)

名称

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

書式

#include <sys/param.h>
#include <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 が書きました。

FreeBSD 10.0 July 24, 1996 FreeBSD 10.0

スポンサーリンク