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(9) (은)는, 커널이 이미 그 vnode 를 사용하지 않게 되었을 때에 불려 갑니다. 이것은, 참조 카운트가 0 이 되었을 때, 또는 오픈되고 있는 파일이 있는 파일 시스템이 강제적으로 언마운트 되었을 때에 일어납니다. 「오픈되고 있지만 삭제되었다」파일을 위한 area를 회수하기 위해서, 사용 가능합니다. VOP_RECLAIM(9) (은)는, 다른 파일 시스템을 위해서(때문에) 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 를 위한 파일 시스템내의 area를 회수합니다.
    	 */
    	...;
        }
        VOP_UNLOCK(vp, 0, td);
        return 0;
    }
    int
    vop_reclaim(struct vnode *vp)
    {
        /*
         * 이름 캐쉬를 일소 합니다.
         */
        cache_purge(vp);
        /*
         * 파일 시스템에 관련한 데이터를 해방합니다.
         */
        ...;
        return 0;
    }

관련 항목
vnode(9)

저자
이 메뉴얼 페이지는 Doug Rabson 하지만 썼습니다.