Example #1
0
int
fop_lookup(
    vnode_t *dvp,
    char *nm,
    vnode_t **vpp,
    pathname_t *pnp,
    int flags,
    vnode_t *rdir,
    cred_t *cr,
    caller_context_t *ct,
    int *deflags,         /* Returned per-dirent flags */
    pathname_t *ppnp)     /* Returned case-preserved name in directory */
{
    int ret;

    ret = (*(dvp)->v_op->vop_lookup)
          (dvp, nm, vpp, pnp, flags, rdir, cr, ct, deflags, ppnp);
    if (ret == 0 && *vpp) {
        VOPSTATS_UPDATE(*vpp, lookup);
        if ((*vpp)->v_path == NULL) {
            vn_setpath(rootdir, dvp, *vpp, nm, strlen(nm));
        }
    }

    return (ret);
}
Example #2
0
int
fop_mkdir(
    vnode_t *dvp,
    char *dirname,
    vattr_t *vap,
    vnode_t **vpp,
    cred_t *cr,
    caller_context_t *ct,
    int flags,
    vsecattr_t *vsecp,    /* ACL to set during create */
    void *logfunc)
{
    int ret;

    ret = (*(dvp)->v_op->vop_mkdir)
          (dvp, dirname, vap, vpp, cr, ct, flags, vsecp, logfunc);
    if (ret == 0 && *vpp) {
        VOPSTATS_UPDATE(*vpp, mkdir);
        if ((*vpp)->v_path == NULL) {
            vn_setpath(rootdir, dvp, *vpp, dirname,
                       strlen(dirname));
        }
    }

    return (ret);
}
Example #3
0
int
fop_create(
	vnode_t *dvp,
	char *name,
	vattr_t *vap,
	vcexcl_t excl,
	int mode,
	vnode_t **vpp,
	cred_t *cr,
	int flags,
	caller_context_t *ct,
	vsecattr_t *vsecp)   /* ACL to set during create */
{
	int ret;

	ret = (*(dvp)->v_op->vop_create)
	    (dvp, name, vap, excl, mode, vpp, cr, flags, ct, vsecp);
	if (ret == 0 && *vpp) {
		VOPSTATS_UPDATE(*vpp, create);
		if ((*vpp)->v_path == NULL) {
			vn_setpath(rootdir, dvp, *vpp, name, strlen(name));
		}
	}

	return (ret);
}
Example #4
0
/*
 * Called from within filesystem's vop_rename() to handle renames once the
 * target vnode is available.
 */
void
vn_renamepath(vnode_t *dvp, vnode_t *vp, const char *nm, size_t len)
{
    char *tmp;

    mutex_enter(&vp->v_lock);
    tmp = vp->v_path;
    vp->v_path = NULL;
    mutex_exit(&vp->v_lock);
    vn_setpath(rootdir, dvp, vp, nm, len);
    if (tmp != NULL)
        kmem_free(tmp, strlen(tmp) + 1);
}