個々の vnode は 3 つの参照カウント、 v_usecount v_holdcnt および v_writecount を持っています。 最初のものはカーネル内でこの vnode を使用しているクライアントの数です。 このカウントは vref(9), vrele(9) および vput(9) によって管理されます。 2 番目のものはカーネル内でこの vnode の再利用を拒否しているクライアントの 数です。 このカウントは vhold(9) および vdrop(9) によって管理されます。 vnode の v_usecount および v_holdcnt の両方が 0 に達すると、それからその vnode はフリーリスト上に置かれ、 ことによっては別のファイルシステムで、 別のファイルのために再利用されるかもしれません。 フリーリストへのおよびフリーリストからの移行は、 getnewvnode(9), vfree(9) および vbusy(9) によって取り扱われます。 3 番目のものはファイルに書込み中のクライアントの数のカウントです。 これは open(2) および close(2) システムコールによって管理されます。
vnode を返すあらゆる呼び出し (例えば vget(9), VOP_LOOKUP9 など) は vnode の v_usecount を 1 ずつ増やします。 呼び出し側が vnode の利用を完了したときには、この参照は vrele(9) (または vnode がロックされていれば vput(9)) の呼び出しによって解放されるべきです。
その他の共通に使用される vnode 構造体のメンバは、 名前キャッシュでの一貫性を管理するために使用される v_id と、その vnode を所有しているファイルシステムを指す v_mount と、その vnode が表現するオブジェクトの型を含む v_type と、その vnode のファイルシステム特有のデータを保存するために ファイルシステムによって使用される v_data があります。 v_op フィールドは vnode の機能を実装するファイルシステム内の関数を呼び出すための VOP_* マクロによって使用されます。
VFIFO/VSOCK のコードになぜか "struct fileops" が使用されている理由は、 カーネルへの VFS コードの不完全な統合の文化遺産です。
vnode(9) インタロックを保持している時の Fn malloc または Fn free への全ての呼出しは、VM オブジェクトと vnode のもつれ合いのために、 LOR (ロック順序の逆転) を引き起こします。