mirror of
https://github.com/openbsd/src.git
synced 2026-06-18 07:13:36 +02:00
make nfsm_srvpostop_attr() take an mbuf argument
ok miod@
This commit is contained in:
+32
-32
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: nfs_serv.c,v 1.134 2026/06/09 02:38:24 jsg Exp $ */
|
||||
/* $OpenBSD: nfs_serv.c,v 1.135 2026/06/09 02:40:16 jsg Exp $ */
|
||||
/* $NetBSD: nfs_serv.c,v 1.34 1997/05/12 23:37:12 fvdl Exp $ */
|
||||
|
||||
/*
|
||||
@@ -174,7 +174,7 @@ nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, 1, NULL, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 1, NULL, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -202,7 +202,7 @@ nfsrv3_access(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_POSTOPATTR(1) + NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &va, &info.nmi_mb);
|
||||
tl = nfsm_build(&info.nmi_mb, NFSX_UNSIGNED);
|
||||
*tl = txdr_unsigned(nfsmode);
|
||||
nfsmout:
|
||||
@@ -495,7 +495,7 @@ nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_POSTOPATTR(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info.nmi_mb);
|
||||
return (0);
|
||||
}
|
||||
vrele(nd.ni_startdir);
|
||||
@@ -512,14 +512,14 @@ nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
NFSX_POSTOPATTR(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
if (error) {
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
nfsm_srvfhtom(&info.nmi_mb, fhp, info.nmi_v3);
|
||||
if (v3) {
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info.nmi_mb);
|
||||
nfsm_srvpostop_attr(nfsd, dirattr_ret, &dirattr, &info.nmi_mb);
|
||||
} else {
|
||||
fp = nfsm_build(&info.nmi_mb, NFSX_V2FATTR);
|
||||
nfsm_srvfattr(nfsd, &va, fp);
|
||||
@@ -569,7 +569,7 @@ nfsrv_readlink(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
2 * NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, 1, NULL, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 1, NULL, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -606,7 +606,7 @@ out:
|
||||
NFSX_POSTOPATTR(info.nmi_v3) + NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
if (info.nmi_v3) {
|
||||
nfsm_srvpostop_attr(nfsd, getret, &attr, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &attr, &info.nmi_mb);
|
||||
if (error) {
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
@@ -808,7 +808,7 @@ vbad:
|
||||
bad:
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error, 0) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &va, &info.nmi_mb);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@@ -1279,7 +1279,7 @@ nfsrv_create(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (info.nmi_v3) {
|
||||
if (!error) {
|
||||
nfsm_srvpostop_fh(&info, fhp);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info.nmi_mb);
|
||||
}
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
|
||||
&info);
|
||||
@@ -1471,7 +1471,7 @@ out:
|
||||
return 0;
|
||||
if (!error) {
|
||||
nfsm_srvpostop_fh(&info, fhp);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info.nmi_mb);
|
||||
}
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft, &info);
|
||||
return (0);
|
||||
@@ -1860,7 +1860,7 @@ nfsrv_link(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
NFSX_POSTOPATTR(info.nmi_v3) +
|
||||
NFSX_WCCDATA(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
|
||||
&info);
|
||||
error = 0;
|
||||
@@ -1916,7 +1916,7 @@ out1:
|
||||
NFSX_POSTOPATTR(info.nmi_v3) + NFSX_WCCDATA(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
if (info.nmi_v3) {
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
|
||||
&info);
|
||||
error = 0;
|
||||
@@ -2068,7 +2068,7 @@ out:
|
||||
if (info.nmi_v3) {
|
||||
if (!error) {
|
||||
nfsm_srvpostop_fh(&info, fhp);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info.nmi_mb);
|
||||
}
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
|
||||
&info);
|
||||
@@ -2207,7 +2207,7 @@ out:
|
||||
if (info.nmi_v3) {
|
||||
if (!error) {
|
||||
nfsm_srvpostop_fh(&info, fhp);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info);
|
||||
nfsm_srvpostop_attr(nfsd, 0, &va, &info.nmi_mb);
|
||||
}
|
||||
nfsm_srvwcc(nfsd, dirfor_ret, &dirfor, diraft_ret, &diraft,
|
||||
&info);
|
||||
@@ -2456,7 +2456,7 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2469,7 +2469,7 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_POSTOPATTR(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2504,7 +2504,7 @@ again:
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_POSTOPATTR(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2523,7 +2523,7 @@ again:
|
||||
2 * NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
if (info.nmi_v3) {
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
tl = nfsm_build(&info.nmi_mb, 4 * NFSX_UNSIGNED);
|
||||
txdr_hyper(at.va_filerev, tl);
|
||||
tl += 2;
|
||||
@@ -2561,7 +2561,7 @@ again:
|
||||
NFSX_COOKIEVERF(info.nmi_v3) + siz) != 0)
|
||||
return 0;
|
||||
if (info.nmi_v3) {
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
tl = nfsm_build(&info.nmi_mb, 2 * NFSX_UNSIGNED);
|
||||
txdr_hyper(at.va_filerev, tl);
|
||||
}
|
||||
@@ -2682,7 +2682,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2694,7 +2694,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_V3POSTOPATTR) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2729,7 +2729,7 @@ again:
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_V3POSTOPATTR) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -2746,7 +2746,7 @@ again:
|
||||
NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF +
|
||||
2 * NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
tl = nfsm_build(&info.nmi_mb, 4 * NFSX_UNSIGNED);
|
||||
txdr_hyper(at.va_filerev, tl);
|
||||
tl += 2;
|
||||
@@ -2791,7 +2791,7 @@ again:
|
||||
dirlen = len = NFSX_V3POSTOPATTR + NFSX_V3COOKIEVERF + 2 * NFSX_UNSIGNED;
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error, cnt) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
tl = nfsm_build(&info.nmi_mb, 2 * NFSX_UNSIGNED);
|
||||
txdr_hyper(at.va_filerev, tl);
|
||||
|
||||
@@ -2995,7 +2995,7 @@ nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -3007,7 +3007,7 @@ nfsrv_statfs(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
NFSX_POSTOPATTR(info.nmi_v3) + NFSX_STATFS(info.nmi_v3)) != 0)
|
||||
return 0;
|
||||
if (info.nmi_v3)
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
if (error) {
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
@@ -3076,7 +3076,7 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -3085,7 +3085,7 @@ nfsrv_fsinfo(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_V3POSTOPATTR + NFSX_V3FSINFO) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
sip = nfsm_build(&info.nmi_mb, NFSX_V3FSINFO);
|
||||
|
||||
/*
|
||||
@@ -3152,7 +3152,7 @@ nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_UNSIGNED) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
}
|
||||
@@ -3168,7 +3168,7 @@ nfsrv_pathconf(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
|
||||
if (nfsm_reply(&info, nfsd, slp, mrq, &info.nmi_mb, error,
|
||||
NFSX_V3POSTOPATTR + NFSX_V3PATHCONF) != 0)
|
||||
return 0;
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info);
|
||||
nfsm_srvpostop_attr(nfsd, getret, &at, &info.nmi_mb);
|
||||
if (error) {
|
||||
error = 0;
|
||||
goto nfsmout;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: nfs_srvsubs.c,v 1.2 2024/09/18 05:21:19 jsg Exp $ */
|
||||
/* $OpenBSD: nfs_srvsubs.c,v 1.3 2026/06/09 02:40:16 jsg Exp $ */
|
||||
/* $NetBSD: nfs_subs.c,v 1.27.4.3 1996/07/08 20:34:24 jtc Exp $ */
|
||||
|
||||
/*
|
||||
@@ -253,21 +253,21 @@ nfsm_srvwcc(struct nfsrv_descript *nfsd, int before_ret,
|
||||
tl += 2;
|
||||
txdr_nfsv3time(&(before_vap->va_ctime), tl);
|
||||
}
|
||||
nfsm_srvpostop_attr(nfsd, after_ret, after_vap, info);
|
||||
nfsm_srvpostop_attr(nfsd, after_ret, after_vap, &info->nmi_mb);
|
||||
}
|
||||
|
||||
void
|
||||
nfsm_srvpostop_attr(struct nfsrv_descript *nfsd, int after_ret,
|
||||
struct vattr *after_vap, struct nfsm_info *info)
|
||||
struct vattr *after_vap, struct mbuf **mb)
|
||||
{
|
||||
u_int32_t *tl;
|
||||
struct nfs_fattr *fp;
|
||||
|
||||
if (after_ret) {
|
||||
tl = nfsm_build(&info->nmi_mb, NFSX_UNSIGNED);
|
||||
tl = nfsm_build(mb, NFSX_UNSIGNED);
|
||||
*tl = nfs_false;
|
||||
} else {
|
||||
tl = nfsm_build(&info->nmi_mb, NFSX_UNSIGNED + NFSX_V3FATTR);
|
||||
tl = nfsm_build(mb, NFSX_UNSIGNED + NFSX_V3FATTR);
|
||||
*tl++ = nfs_true;
|
||||
fp = (struct nfs_fattr *)tl;
|
||||
nfsm_srvfattr(nfsd, after_vap, fp);
|
||||
|
||||
+2
-2
@@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: nfs_var.h,v 1.67 2026/04/22 01:43:48 jsg Exp $ */
|
||||
/* $OpenBSD: nfs_var.h,v 1.68 2026/06/09 02:40:16 jsg Exp $ */
|
||||
/* $NetBSD: nfs_var.h,v 1.3 1996/02/18 11:53:54 fvdl Exp $ */
|
||||
|
||||
/*
|
||||
@@ -148,7 +148,7 @@ void nfsm_adj(struct mbuf *, int, int);
|
||||
void nfsm_srvwcc(struct nfsrv_descript *, int, struct vattr *, int,
|
||||
struct vattr *, struct nfsm_info *);
|
||||
void nfsm_srvpostop_attr(struct nfsrv_descript *, int, struct vattr *,
|
||||
struct nfsm_info *);
|
||||
struct mbuf **);
|
||||
void nfsm_srvfattr(struct nfsrv_descript *, struct vattr *,
|
||||
struct nfs_fattr *);
|
||||
int nfsrv_fhtovp(fhandle_t *, int, struct vnode **, struct ucred *,
|
||||
|
||||
Reference in New Issue
Block a user