Changeset View
Changeset View
Standalone View
Standalone View
sys/fs/fuse/fuse_vnops.c
Show First 20 Lines • Show All 662 Lines • ▼ Show 20 Lines | if (!fsess_isimpl(mp, FUSE_CREATE) || vap->va_type == VSOCK) { | ||||
op = FUSE_CREATE; | op = FUSE_CREATE; | ||||
fdisp_init(fdip, sizeof(*fci) + cnp->cn_namelen + 1); | fdisp_init(fdip, sizeof(*fci) + cnp->cn_namelen + 1); | ||||
fdisp_make(fdip, op, vnode_mount(dvp), parentnid, td, cred); | fdisp_make(fdip, op, vnode_mount(dvp), parentnid, td, cred); | ||||
fci = fdip->indata; | fci = fdip->indata; | ||||
fci->mode = mode; | fci->mode = mode; | ||||
fci->flags = O_CREAT | flags; | fci->flags = O_CREAT | flags; | ||||
if (fuse_libabi_geq(data, 7, 12)) { | if (fuse_libabi_geq(data, 7, 12)) { | ||||
insize = sizeof(*fci); | insize = sizeof(*fci); | ||||
fci->umask = td->td_proc->p_fd->fd_cmask; | fci->umask = td->td_proc->p_pd->pd_cmask; | ||||
} else { | } else { | ||||
insize = sizeof(struct fuse_open_in); | insize = sizeof(struct fuse_open_in); | ||||
} | } | ||||
memcpy((char *)fdip->indata + insize, cnp->cn_nameptr, | memcpy((char *)fdip->indata + insize, cnp->cn_nameptr, | ||||
cnp->cn_namelen); | cnp->cn_namelen); | ||||
((char *)fdip->indata)[insize + cnp->cn_namelen] = '\0'; | ((char *)fdip->indata)[insize + cnp->cn_namelen] = '\0'; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 584 Lines • ▼ Show 20 Lines | fuse_vnop_mkdir(struct vop_mkdir_args *ap) | ||||
struct vattr *vap = ap->a_vap; | struct vattr *vap = ap->a_vap; | ||||
struct fuse_mkdir_in fmdi; | struct fuse_mkdir_in fmdi; | ||||
if (fuse_isdeadfs(dvp)) { | if (fuse_isdeadfs(dvp)) { | ||||
return ENXIO; | return ENXIO; | ||||
} | } | ||||
fmdi.mode = MAKEIMODE(vap->va_type, vap->va_mode); | fmdi.mode = MAKEIMODE(vap->va_type, vap->va_mode); | ||||
fmdi.umask = curthread->td_proc->p_fd->fd_cmask; | fmdi.umask = curthread->td_proc->p_pd->pd_cmask; | ||||
return (fuse_internal_newentry(dvp, vpp, cnp, FUSE_MKDIR, &fmdi, | return (fuse_internal_newentry(dvp, vpp, cnp, FUSE_MKDIR, &fmdi, | ||||
sizeof(fmdi), VDIR)); | sizeof(fmdi), VDIR)); | ||||
} | } | ||||
/* | /* | ||||
struct vnop_mknod_args { | struct vnop_mknod_args { | ||||
struct vnode *a_dvp; | struct vnode *a_dvp; | ||||
▲ Show 20 Lines • Show All 1,228 Lines • Show Last 20 Lines |