FreeBSD: catch up to 1400068
Reviewed-by: Ryan Moeller <ryan@iXsystems.com> Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Closes #13909
This commit is contained in:
parent
2c8e3e4b28
commit
eec942cc54
|
@ -981,13 +981,17 @@ zfs_lookup(vnode_t *dvp, const char *nm, vnode_t **vpp,
|
||||||
case RENAME:
|
case RENAME:
|
||||||
if (error == ENOENT) {
|
if (error == ENOENT) {
|
||||||
error = EJUSTRETURN;
|
error = EJUSTRETURN;
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
cnp->cn_flags |= SAVENAME;
|
cnp->cn_flags |= SAVENAME;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
fallthrough;
|
fallthrough;
|
||||||
case DELETE:
|
case DELETE:
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
if (error == 0)
|
if (error == 0)
|
||||||
cnp->cn_flags |= SAVENAME;
|
cnp->cn_flags |= SAVENAME;
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1337,7 +1341,10 @@ zfs_lookup_internal(znode_t *dzp, const char *name, vnode_t **vpp,
|
||||||
cnp->cn_nameptr = __DECONST(char *, name);
|
cnp->cn_nameptr = __DECONST(char *, name);
|
||||||
cnp->cn_namelen = strlen(name);
|
cnp->cn_namelen = strlen(name);
|
||||||
cnp->cn_nameiop = nameiop;
|
cnp->cn_nameiop = nameiop;
|
||||||
cnp->cn_flags = ISLASTCN | SAVENAME;
|
cnp->cn_flags = ISLASTCN;
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
|
cnp->cn_flags |= SAVENAME;
|
||||||
|
#endif
|
||||||
cnp->cn_lkflags = LK_EXCLUSIVE | LK_RETRY;
|
cnp->cn_lkflags = LK_EXCLUSIVE | LK_RETRY;
|
||||||
cnp->cn_cred = kcred;
|
cnp->cn_cred = kcred;
|
||||||
#if __FreeBSD_version < 1400037
|
#if __FreeBSD_version < 1400037
|
||||||
|
@ -4642,7 +4649,9 @@ zfs_freebsd_create(struct vop_create_args *ap)
|
||||||
znode_t *zp = NULL;
|
znode_t *zp = NULL;
|
||||||
int rc, mode;
|
int rc, mode;
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(cnp->cn_flags & SAVENAME);
|
ASSERT(cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
vattr_init_mask(vap);
|
vattr_init_mask(vap);
|
||||||
mode = vap->va_mode & ALLPERMS;
|
mode = vap->va_mode & ALLPERMS;
|
||||||
|
@ -4672,7 +4681,9 @@ static int
|
||||||
zfs_freebsd_remove(struct vop_remove_args *ap)
|
zfs_freebsd_remove(struct vop_remove_args *ap)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(ap->a_cnp->cn_flags & SAVENAME);
|
ASSERT(ap->a_cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (zfs_remove_(ap->a_dvp, ap->a_vp, ap->a_cnp->cn_nameptr,
|
return (zfs_remove_(ap->a_dvp, ap->a_vp, ap->a_cnp->cn_nameptr,
|
||||||
ap->a_cnp->cn_cred));
|
ap->a_cnp->cn_cred));
|
||||||
|
@ -4694,7 +4705,9 @@ zfs_freebsd_mkdir(struct vop_mkdir_args *ap)
|
||||||
znode_t *zp = NULL;
|
znode_t *zp = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(ap->a_cnp->cn_flags & SAVENAME);
|
ASSERT(ap->a_cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
vattr_init_mask(vap);
|
vattr_init_mask(vap);
|
||||||
*ap->a_vpp = NULL;
|
*ap->a_vpp = NULL;
|
||||||
|
@ -4720,7 +4733,9 @@ zfs_freebsd_rmdir(struct vop_rmdir_args *ap)
|
||||||
{
|
{
|
||||||
struct componentname *cnp = ap->a_cnp;
|
struct componentname *cnp = ap->a_cnp;
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(cnp->cn_flags & SAVENAME);
|
ASSERT(cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (zfs_rmdir_(ap->a_dvp, ap->a_vp, cnp->cn_nameptr, cnp->cn_cred));
|
return (zfs_rmdir_(ap->a_dvp, ap->a_vp, cnp->cn_nameptr, cnp->cn_cred));
|
||||||
}
|
}
|
||||||
|
@ -4974,8 +4989,10 @@ zfs_freebsd_rename(struct vop_rename_args *ap)
|
||||||
vnode_t *tvp = ap->a_tvp;
|
vnode_t *tvp = ap->a_tvp;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(ap->a_fcnp->cn_flags & (SAVENAME|SAVESTART));
|
ASSERT(ap->a_fcnp->cn_flags & (SAVENAME|SAVESTART));
|
||||||
ASSERT(ap->a_tcnp->cn_flags & (SAVENAME|SAVESTART));
|
ASSERT(ap->a_tcnp->cn_flags & (SAVENAME|SAVESTART));
|
||||||
|
#endif
|
||||||
|
|
||||||
error = zfs_do_rename(fdvp, &fvp, ap->a_fcnp, tdvp, &tvp,
|
error = zfs_do_rename(fdvp, &fvp, ap->a_fcnp, tdvp, &tvp,
|
||||||
ap->a_tcnp, ap->a_fcnp->cn_cred);
|
ap->a_tcnp, ap->a_fcnp->cn_cred);
|
||||||
|
@ -5011,7 +5028,9 @@ zfs_freebsd_symlink(struct vop_symlink_args *ap)
|
||||||
#endif
|
#endif
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(cnp->cn_flags & SAVENAME);
|
ASSERT(cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
vap->va_type = VLNK; /* FreeBSD: Syscall only sets va_mode. */
|
vap->va_type = VLNK; /* FreeBSD: Syscall only sets va_mode. */
|
||||||
vattr_init_mask(vap);
|
vattr_init_mask(vap);
|
||||||
|
@ -5105,7 +5124,9 @@ zfs_freebsd_link(struct vop_link_args *ap)
|
||||||
if (tdvp->v_mount != vp->v_mount)
|
if (tdvp->v_mount != vp->v_mount)
|
||||||
return (EXDEV);
|
return (EXDEV);
|
||||||
|
|
||||||
|
#if __FreeBSD_version < 1400068
|
||||||
ASSERT(cnp->cn_flags & SAVENAME);
|
ASSERT(cnp->cn_flags & SAVENAME);
|
||||||
|
#endif
|
||||||
|
|
||||||
return (zfs_link(VTOZ(tdvp), VTOZ(vp),
|
return (zfs_link(VTOZ(tdvp), VTOZ(vp),
|
||||||
cnp->cn_nameptr, cnp->cn_cred, 0));
|
cnp->cn_nameptr, cnp->cn_cred, 0));
|
||||||
|
@ -5364,10 +5385,10 @@ zfs_getextattr_dir(struct vop_getextattr_args *ap, const char *attrname)
|
||||||
NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, attrname, xvp);
|
NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, attrname, xvp);
|
||||||
#endif
|
#endif
|
||||||
error = vn_open_cred(&nd, &flags, 0, VN_OPEN_INVFS, ap->a_cred, NULL);
|
error = vn_open_cred(&nd, &flags, 0, VN_OPEN_INVFS, ap->a_cred, NULL);
|
||||||
vp = nd.ni_vp;
|
|
||||||
NDFREE_PNBUF(&nd);
|
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
vp = nd.ni_vp;
|
||||||
|
NDFREE_PNBUF(&nd);
|
||||||
|
|
||||||
if (ap->a_size != NULL) {
|
if (ap->a_size != NULL) {
|
||||||
error = VOP_GETATTR(vp, &va, ap->a_cred);
|
error = VOP_GETATTR(vp, &va, ap->a_cred);
|
||||||
|
@ -5481,12 +5502,10 @@ zfs_deleteextattr_dir(struct vop_deleteextattr_args *ap, const char *attrname)
|
||||||
UIO_SYSSPACE, attrname, xvp);
|
UIO_SYSSPACE, attrname, xvp);
|
||||||
#endif
|
#endif
|
||||||
error = namei(&nd);
|
error = namei(&nd);
|
||||||
vp = nd.ni_vp;
|
if (error != 0)
|
||||||
if (error != 0) {
|
|
||||||
NDFREE_PNBUF(&nd);
|
|
||||||
return (error);
|
return (error);
|
||||||
}
|
|
||||||
|
|
||||||
|
vp = nd.ni_vp;
|
||||||
error = VOP_REMOVE(nd.ni_dvp, vp, &nd.ni_cnd);
|
error = VOP_REMOVE(nd.ni_dvp, vp, &nd.ni_cnd);
|
||||||
NDFREE_PNBUF(&nd);
|
NDFREE_PNBUF(&nd);
|
||||||
|
|
||||||
|
@ -5612,10 +5631,10 @@ zfs_setextattr_dir(struct vop_setextattr_args *ap, const char *attrname)
|
||||||
#endif
|
#endif
|
||||||
error = vn_open_cred(&nd, &flags, 0600, VN_OPEN_INVFS, ap->a_cred,
|
error = vn_open_cred(&nd, &flags, 0600, VN_OPEN_INVFS, ap->a_cred,
|
||||||
NULL);
|
NULL);
|
||||||
vp = nd.ni_vp;
|
|
||||||
NDFREE_PNBUF(&nd);
|
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
vp = nd.ni_vp;
|
||||||
|
NDFREE_PNBUF(&nd);
|
||||||
|
|
||||||
VATTR_NULL(&va);
|
VATTR_NULL(&va);
|
||||||
va.va_size = 0;
|
va.va_size = 0;
|
||||||
|
@ -5767,10 +5786,10 @@ zfs_listextattr_dir(struct vop_listextattr_args *ap, const char *attrprefix)
|
||||||
UIO_SYSSPACE, ".", xvp);
|
UIO_SYSSPACE, ".", xvp);
|
||||||
#endif
|
#endif
|
||||||
error = namei(&nd);
|
error = namei(&nd);
|
||||||
vp = nd.ni_vp;
|
|
||||||
NDFREE_PNBUF(&nd);
|
|
||||||
if (error != 0)
|
if (error != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
vp = nd.ni_vp;
|
||||||
|
NDFREE_PNBUF(&nd);
|
||||||
|
|
||||||
auio.uio_iov = &aiov;
|
auio.uio_iov = &aiov;
|
||||||
auio.uio_iovcnt = 1;
|
auio.uio_iovcnt = 1;
|
||||||
|
|
Loading…
Reference in New Issue