From nobody Wed Jul 05 15:38:51 2023 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Qx3jR6ZJsz4lLXW; Wed, 5 Jul 2023 15:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Qx3jR65phz4BHq; Wed, 5 Jul 2023 15:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688571531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e0gTr6ou5uNuBCD78HPM9obilZdYA8EWgwGHMzeBnQw=; b=W72k3kB5SAluHVrIktOf7tnphNBeKZsSmOSnDp4tDm3l9sJKnMD/CvocOG7Aq+BVNh+XNC cTpoBG/+yLh70MpRqX/jg88Elcs+UsxUWxHar9At3LK5YFJ4Y/6wZaVRFvZO/q6mBmr0oZ iNQeuIxZWqix4W3qjPyAolMPXIFNCrYWQTonIIZHhrbUcXhFQk+yI7pU+roorRtaRGYI6W VpmmdK9iitUNG6rTF44lNXBp9VuE4T0RoGs6UKJo7rxRtF1i8ZIUKRLvNCcD6LPIcgiu/0 Av4GE81IA3jF8cPXjkl2aTkTp4btNrAZnHIqd7aiq2KCF93nhlm/5A6XZIyRYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1688571531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=e0gTr6ou5uNuBCD78HPM9obilZdYA8EWgwGHMzeBnQw=; b=VIsnRO2UWSkIS3OBgvFyMnxGTNXQ68r/7N6zJRLk0ue7agDWo2XVlfzDqXr7GkHFUcOf2l /wsRU3BiVT34ACAIvnvG2t5roH/sQ23Io70kXXF7enYxroZ0Zx6oxIwaFraopCAgzZ1a2m WGAevI7f9EOXYvJguZZ/CIgiXLPY9a1URo/ugyUW6kmAsvKCVXGV0PjQUJtWy2Yy8SrMBI S2Y9X2h4jtYOIRM9xSUJIClWO+qL/d9K40xH3aFMdQy74MiO+7ZRcYX6BvxJgozAnZ+yR+ 1nXk2RBgfvOkQjPMwpVHDGxlJ/hV4/m9UOIyTT76zaiWffA98h/DphafT4DuGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1688571531; a=rsa-sha256; cv=none; b=ar7vxikDLjV/WhNiYpZtG7DmBcbNi1CXE9yuZuwWkIakqUMdn7YkdmcUkdNKezTsVv842y VWofm7NRS56PVDy1FYQyMXYmoYGF5PhAEp+82D0pe3OcMGOr69oM7A0JVtuG7XMlchAof1 gZR0YWMTMuCxC3/S8lTBxfDPcQHMtX+V0UCqIsFW1QnJy3PnItYnbNyhQfWwBMb9cFDKgu 1Pov+95UhBJ1Mdiv8dZ+tT5BnVjD624nbZaAAeskvjjXiYEYihD+RZ2ymAjqWMlkkD5INR l4JJaqG9h5ujBfZuKH65tv+deDnBj61iZn7UMSPEOwNdARQbylvzPaZ0P/aI5A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Qx3jR5C00zKs8; Wed, 5 Jul 2023 15:38:51 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 365FcpRQ018003; Wed, 5 Jul 2023 15:38:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 365Fcpew018002; Wed, 5 Jul 2023 15:38:51 GMT (envelope-from git) Date: Wed, 5 Jul 2023 15:38:51 GMT Message-Id: <202307051538.365Fcpew018002@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: ba8cc6d7271a - main - vfs: use __enum_uint8 for vtype and vstate List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ba8cc6d7271a50fec978a1d3a088aec7985fae48 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=ba8cc6d7271a50fec978a1d3a088aec7985fae48 commit ba8cc6d7271a50fec978a1d3a088aec7985fae48 Author: Mateusz Guzik AuthorDate: 2023-03-12 19:31:27 +0000 Commit: Mateusz Guzik CommitDate: 2023-07-05 15:06:30 +0000 vfs: use __enum_uint8 for vtype and vstate This whacks hackery around only reading v_type once. Bump __FreeBSD_version to 1400093 --- .../openzfs/include/os/freebsd/spl/sys/vnode.h | 2 +- sys/fs/fuse/fuse_internal.c | 8 ++++---- sys/fs/fuse/fuse_internal.h | 8 ++++---- sys/fs/fuse/fuse_node.c | 8 ++++---- sys/fs/fuse/fuse_node.h | 4 ++-- sys/fs/fuse/fuse_vfsops.c | 2 +- sys/fs/fuse/fuse_vnops.c | 4 ++-- sys/fs/nfs/nfs_commonacl.c | 10 ++++----- sys/fs/nfs/nfs_commonsubs.c | 4 ++-- sys/fs/nfs/nfs_var.h | 6 +++--- sys/fs/nfsclient/nfs_clcomsubs.c | 4 ++-- sys/fs/nfsclient/nfs_clrpcops.c | 2 +- sys/fs/nfsserver/nfs_nfsdport.c | 4 ++-- sys/fs/nfsserver/nfs_nfsdserv.c | 6 +++--- sys/fs/tarfs/tarfs.h | 4 ++-- sys/fs/tarfs/tarfs_subr.c | 2 +- sys/fs/tmpfs/tmpfs.h | 4 ++-- sys/fs/tmpfs/tmpfs_subr.c | 2 +- sys/fs/unionfs/union_subr.c | 2 +- sys/kern/kern_linker.c | 2 +- sys/kern/subr_acl_nfs4.c | 2 +- sys/kern/subr_acl_posix1e.c | 2 +- sys/kern/vfs_cache.c | 11 ++-------- sys/kern/vfs_subr.c | 6 +++--- sys/sys/param.h | 2 +- sys/sys/vnode.h | 24 +++++++++++----------- sys/ufs/ffs/ffs_alloc.c | 2 +- sys/ufs/ffs/ffs_extern.h | 4 ++-- sys/ufs/ffs/ffs_snapshot.c | 4 ++-- sys/ufs/ffs/softdep.h | 4 ++-- 30 files changed, 71 insertions(+), 78 deletions(-) diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h index ab1727dca0c9..91dadfae6613 100644 --- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h +++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/vnode.h @@ -36,7 +36,7 @@ struct xucred; typedef struct flock flock64_t; typedef struct vnode vnode_t; typedef struct vattr vattr_t; -typedef enum vtype vtype_t; +#define vtype_t __enum_uint8(vtype) #include #include diff --git a/sys/fs/fuse/fuse_internal.c b/sys/fs/fuse/fuse_internal.c index 6ac7b4432e23..37394330632c 100644 --- a/sys/fs/fuse/fuse_internal.c +++ b/sys/fs/fuse/fuse_internal.c @@ -793,7 +793,7 @@ int fuse_internal_newentry_core(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, - enum vtype vtyp, + __enum_uint8(vtype) vtyp, struct fuse_dispatcher *fdip) { int err = 0; @@ -834,7 +834,7 @@ fuse_internal_newentry(struct vnode *dvp, enum fuse_opcode op, void *buf, size_t bufsize, - enum vtype vtype) + __enum_uint8(vtype) vtype) { int err; struct fuse_dispatcher fdi; @@ -899,7 +899,7 @@ fuse_internal_do_getattr(struct vnode *vp, struct vattr *vap, struct timespec old_atime = fvdat->cached_attrs.va_atime; struct timespec old_ctime = fvdat->cached_attrs.va_ctime; struct timespec old_mtime = fvdat->cached_attrs.va_mtime; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; int err; ASSERT_VOP_LOCKED(vp, __func__); @@ -1141,7 +1141,7 @@ int fuse_internal_setattr(struct vnode *vp, struct vattr *vap, pid_t pid = td->td_proc->p_pid; struct fuse_data *data; int err = 0; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; ASSERT_VOP_ELOCKED(vp, __func__); diff --git a/sys/fs/fuse/fuse_internal.h b/sys/fs/fuse/fuse_internal.h index 5d852b420366..3146f6158b9b 100644 --- a/sys/fs/fuse/fuse_internal.h +++ b/sys/fs/fuse/fuse_internal.h @@ -90,7 +90,7 @@ vnode_mount(struct vnode *vp) return (vp->v_mount); } -static inline enum vtype +static inline __enum_uint8(vtype) vnode_vtype(struct vnode *vp) { return (vp->v_type); @@ -284,7 +284,7 @@ void fuse_internal_clear_suid_on_write(struct vnode *vp, struct ucred *cred, /* entity creation */ static inline int -fuse_internal_checkentry(struct fuse_entry_out *feo, enum vtype vtyp) +fuse_internal_checkentry(struct fuse_entry_out *feo, __enum_uint8(vtype) vtyp) { if (vtyp != IFTOVT(feo->attr.mode)) { return (EINVAL); @@ -303,14 +303,14 @@ fuse_internal_checkentry(struct fuse_entry_out *feo, enum vtype vtyp) int fuse_internal_newentry(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, enum fuse_opcode op, void *buf, size_t bufsize, - enum vtype vtyp); + __enum_uint8(vtype) vtyp); void fuse_internal_newentry_makerequest(struct mount *mp, uint64_t dnid, struct componentname *cnp, enum fuse_opcode op, void *buf, size_t bufsize, struct fuse_dispatcher *fdip); int fuse_internal_newentry_core(struct vnode *dvp, struct vnode **vpp, - struct componentname *cnp, enum vtype vtyp, struct fuse_dispatcher *fdip); + struct componentname *cnp, __enum_uint8(vtype) vtyp, struct fuse_dispatcher *fdip); /* entity destruction */ diff --git a/sys/fs/fuse/fuse_node.c b/sys/fs/fuse/fuse_node.c index 1abf6e75cc3e..07695a30d272 100644 --- a/sys/fs/fuse/fuse_node.c +++ b/sys/fs/fuse/fuse_node.c @@ -154,7 +154,7 @@ sysctl_fuse_cache_mode(SYSCTL_HANDLER_ARGS) static void fuse_vnode_init(struct vnode *vp, struct fuse_vnode_data *fvdat, - uint64_t nodeid, enum vtype vtyp) + uint64_t nodeid, __enum_uint8(vtype) vtyp) { fvdat->nid = nodeid; LIST_INIT(&fvdat->handles); @@ -189,13 +189,13 @@ fuse_vnode_cmp(struct vnode *vp, void *nidp) return (VTOI(vp) != *((uint64_t *)nidp)); } -SDT_PROBE_DEFINE3(fusefs, , node, stale_vnode, "struct vnode*", "enum vtype", +SDT_PROBE_DEFINE3(fusefs, , node, stale_vnode, "struct vnode*", "uint8_t", "uint64_t"); static int fuse_vnode_alloc(struct mount *mp, struct thread *td, uint64_t nodeid, - enum vtype vtyp, + __enum_uint8(vtype) vtyp, struct vnode **vpp) { struct fuse_data *data; @@ -289,7 +289,7 @@ fuse_vnode_get(struct mount *mp, struct vnode *dvp, struct vnode **vpp, struct componentname *cnp, - enum vtype vtyp) + __enum_uint8(vtype) vtyp) { struct thread *td = curthread; /* diff --git a/sys/fs/fuse/fuse_node.h b/sys/fs/fuse/fuse_node.h index 8eb299361bd0..fe3f3c0cd927 100644 --- a/sys/fs/fuse/fuse_node.h +++ b/sys/fs/fuse/fuse_node.h @@ -125,7 +125,7 @@ struct fuse_vnode_data { struct timespec last_local_modify; struct vattr cached_attrs; uint64_t nlookup; - enum vtype vtype; + __enum_uint8(vtype) vtype; struct vn_clusterw clusterw; }; @@ -201,7 +201,7 @@ void fuse_vnode_destroy(struct vnode *vp); int fuse_vnode_get(struct mount *mp, struct fuse_entry_out *feo, uint64_t nodeid, struct vnode *dvp, struct vnode **vpp, - struct componentname *cnp, enum vtype vtyp); + struct componentname *cnp, __enum_uint8(vtype) vtyp); void fuse_vnode_open(struct vnode *vp, int32_t fuse_open_flags, struct thread *td); diff --git a/sys/fs/fuse/fuse_vfsops.c b/sys/fs/fuse/fuse_vfsops.c index 93916b34be83..c17937178d00 100644 --- a/sys/fs/fuse/fuse_vfsops.c +++ b/sys/fs/fuse/fuse_vfsops.c @@ -543,7 +543,7 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) struct fuse_vnode_data *fvdat; struct timespec now; const char dot[] = "."; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; int error; if (!(data->dataflags & FSESS_EXPORT_SUPPORT)) { diff --git a/sys/fs/fuse/fuse_vnops.c b/sys/fs/fuse/fuse_vnops.c index 1bb5b3834c76..6354167ab27f 100644 --- a/sys/fs/fuse/fuse_vnops.c +++ b/sys/fs/fuse/fuse_vnops.c @@ -1391,7 +1391,7 @@ struct fuse_lookup_alloc_arg { struct fuse_entry_out *feo; struct componentname *cnp; uint64_t nid; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; }; /* Callback for vn_get_ino */ @@ -1439,7 +1439,7 @@ fuse_vnop_lookup(struct vop_lookup_args *ap) struct fuse_dispatcher fdi; bool did_lookup = false; struct fuse_entry_out *feo = NULL; - enum vtype vtyp; /* vnode type of target */ + __enum_uint8(vtype) vtyp; /* vnode type of target */ uint64_t nid; diff --git a/sys/fs/nfs/nfs_commonacl.c b/sys/fs/nfs/nfs_commonacl.c index e47218106186..a7ea072f86d9 100644 --- a/sys/fs/nfs/nfs_commonacl.c +++ b/sys/fs/nfs/nfs_commonacl.c @@ -35,7 +35,7 @@ __FBSDID("$FreeBSD$"); extern int nfsrv_useacl; static int nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner, - enum vtype type, acl_perm_t *permp); + __enum_uint8(vtype) type, acl_perm_t *permp); /* * Handle xdr for an ace. @@ -188,7 +188,7 @@ nfsmout: */ static int nfsrv_acemasktoperm(u_int32_t acetype, u_int32_t mask, int owner, - enum vtype type, acl_perm_t *permp) + __enum_uint8(vtype) type, acl_perm_t *permp) { acl_perm_t perm = 0x0; int error = 0; @@ -278,14 +278,14 @@ out: /* local functions */ static int nfsrv_buildace(struct nfsrv_descript *, u_char *, int, - enum vtype, int, int, struct acl_entry *); + __enum_uint8(vtype), int, int, struct acl_entry *); /* * This function builds an NFS ace. */ static int nfsrv_buildace(struct nfsrv_descript *nd, u_char *name, int namelen, - enum vtype type, int group, int owner, struct acl_entry *ace) + __enum_uint8(vtype) type, int group, int owner, struct acl_entry *ace) { u_int32_t *tl, aceflag = 0x0, acemask = 0x0, acetype; int full_len; @@ -393,7 +393,7 @@ nfsrv_buildace(struct nfsrv_descript *nd, u_char *name, int namelen, * Build an NFSv4 ACL. */ int -nfsrv_buildacl(struct nfsrv_descript *nd, NFSACL_T *aclp, enum vtype type, +nfsrv_buildacl(struct nfsrv_descript *nd, NFSACL_T *aclp, __enum_uint8(vtype) type, NFSPROC_T *p) { int i, entrycnt = 0, retlen; diff --git a/sys/fs/nfs/nfs_commonsubs.c b/sys/fs/nfs/nfs_commonsubs.c index cb12f5a59a6e..e3a61a5f912a 100644 --- a/sys/fs/nfs/nfs_commonsubs.c +++ b/sys/fs/nfs/nfs_commonsubs.c @@ -62,8 +62,8 @@ u_int32_t newnfs_true, newnfs_false, newnfs_xdrneg1; /* And other global data */ nfstype nfsv34_type[9] = { NFNON, NFREG, NFDIR, NFBLK, NFCHR, NFLNK, NFSOCK, NFFIFO, NFNON }; -enum vtype newnv2tov_type[8] = { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VNON, VNON }; -enum vtype nv34tov_type[8]={ VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VFIFO }; +__enum_uint8(vtype) newnv2tov_type[8] = { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VNON, VNON }; +__enum_uint8(vtype) nv34tov_type[8]={ VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK, VFIFO }; struct timeval nfsboottime; /* Copy boottime once, so it never changes */ int nfscl_ticks; int nfsrv_useacl = 1; diff --git a/sys/fs/nfs/nfs_var.h b/sys/fs/nfs/nfs_var.h index 8fabe6f92fc6..294cf90fa235 100644 --- a/sys/fs/nfs/nfs_var.h +++ b/sys/fs/nfs/nfs_var.h @@ -440,7 +440,7 @@ int nfs_supportsnfsv4acls(vnode_t); /* nfs_commonacl.c */ int nfsrv_dissectace(struct nfsrv_descript *, struct acl_entry *, bool, int *, int *, NFSPROC_T *); -int nfsrv_buildacl(struct nfsrv_descript *, NFSACL_T *, enum vtype, +int nfsrv_buildacl(struct nfsrv_descript *, NFSACL_T *, __enum_uint8(vtype), NFSPROC_T *); int nfsrv_compareacl(NFSACL_T *, NFSACL_T *); @@ -478,7 +478,7 @@ int nfsrpc_read(vnode_t, struct uio *, struct ucred *, NFSPROC_T *, int nfsrpc_write(vnode_t, struct uio *, int *, int *, struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, int, int); int nfsrpc_mknod(vnode_t, char *, int, struct vattr *, u_int32_t, - enum vtype, struct ucred *, NFSPROC_T *, struct nfsvattr *, + __enum_uint8(vtype), struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *, struct nfsfh **, int *, int *); int nfsrpc_create(vnode_t, char *, int, struct vattr *, nfsquad_t, int, struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *, @@ -770,7 +770,7 @@ int nfsvno_listxattr(struct vnode *, uint64_t, struct ucred *, struct thread *, u_char **, uint32_t *, bool *); void nfsm_trimtrailing(struct nfsrv_descript *, struct mbuf *, char *, int, int); -bool nfsrv_checkwrongsec(struct nfsrv_descript *, int, enum vtype); +bool nfsrv_checkwrongsec(struct nfsrv_descript *, int, __enum_uint8(vtype)); void nfsrv_checknospc(void); /* nfs_commonkrpc.c */ diff --git a/sys/fs/nfsclient/nfs_clcomsubs.c b/sys/fs/nfsclient/nfs_clcomsubs.c index 640d47fed93d..2481c45cab98 100644 --- a/sys/fs/nfsclient/nfs_clcomsubs.c +++ b/sys/fs/nfsclient/nfs_clcomsubs.c @@ -45,8 +45,8 @@ __FBSDID("$FreeBSD$"); extern struct nfsstatsv1 nfsstatsv1; extern int ncl_mbuf_mlen; -extern enum vtype newnv2tov_type[8]; -extern enum vtype nv34tov_type[8]; +extern __enum_uint8(vtype) newnv2tov_type[8]; +extern __enum_uint8(vtype) nv34tov_type[8]; NFSCLSTATEMUTEX; /* diff --git a/sys/fs/nfsclient/nfs_clrpcops.c b/sys/fs/nfsclient/nfs_clrpcops.c index 70c7619e679a..9e53bcc2dc0a 100644 --- a/sys/fs/nfsclient/nfs_clrpcops.c +++ b/sys/fs/nfsclient/nfs_clrpcops.c @@ -2308,7 +2308,7 @@ nfsmout: */ int nfsrpc_mknod(vnode_t dvp, char *name, int namelen, struct vattr *vap, - u_int32_t rdev, enum vtype vtyp, struct ucred *cred, NFSPROC_T *p, + u_int32_t rdev, __enum_uint8(vtype) vtyp, struct ucred *cred, NFSPROC_T *p, struct nfsvattr *dnap, struct nfsvattr *nnap, struct nfsfh **nfhpp, int *attrflagp, int *dattrflagp) { diff --git a/sys/fs/nfsserver/nfs_nfsdport.c b/sys/fs/nfsserver/nfs_nfsdport.c index 6b5f357ecaf9..40065a01131f 100644 --- a/sys/fs/nfsserver/nfs_nfsdport.c +++ b/sys/fs/nfsserver/nfs_nfsdport.c @@ -1283,7 +1283,7 @@ nfsvno_mknod(struct nameidata *ndp, struct nfsvattr *nvap, struct ucred *cred, struct thread *p) { int error = 0; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; vtyp = nvap->na_type; /* @@ -7034,7 +7034,7 @@ nfsm_trimtrailing(struct nfsrv_descript *nd, struct mbuf *mb, char *bpos, * be identified by the fact that the file handle's type is VDIR. */ bool -nfsrv_checkwrongsec(struct nfsrv_descript *nd, int nextop, enum vtype vtyp) +nfsrv_checkwrongsec(struct nfsrv_descript *nd, int nextop, __enum_uint8(vtype) vtyp) { if ((nd->nd_flag & ND_NFSV4) == 0) diff --git a/sys/fs/nfsserver/nfs_nfsdserv.c b/sys/fs/nfsserver/nfs_nfsdserv.c index a4fa3a934090..7e53ad63820f 100644 --- a/sys/fs/nfsserver/nfs_nfsdserv.c +++ b/sys/fs/nfsserver/nfs_nfsdserv.c @@ -54,7 +54,7 @@ __FBSDID("$FreeBSD$"); /* Global vars */ extern u_int32_t newnfs_false, newnfs_true; -extern enum vtype nv34tov_type[8]; +extern __enum_uint8(vtype) nv34tov_type[8]; extern struct timeval nfsboottime; extern int nfsrv_enable_crossmntpt; extern int nfsrv_statehashsize; @@ -1156,7 +1156,7 @@ nfsrvd_create(struct nfsrv_descript *nd, __unused int isdgram, fhandle_t fh; char *bufp; u_long *hashp; - enum vtype vtyp; + __enum_uint8(vtype) vtyp; int32_t cverf[2], tverf[2] = { 0, 0 }; struct thread *p = curthread; @@ -1320,7 +1320,7 @@ nfsrvd_mknod(struct nfsrv_descript *nd, __unused int isdgram, struct nameidata named; int error = 0, dirfor_ret = 1, diraft_ret = 1, pathlen; u_int32_t major, minor; - enum vtype vtyp = VNON; + __enum_uint8(vtype) vtyp = VNON; nfstype nfs4type = NFNON; vnode_t vp, dirp = NULL; nfsattrbit_t attrbits; diff --git a/sys/fs/tarfs/tarfs.h b/sys/fs/tarfs/tarfs.h index 444d7b39941d..ff1985e488cd 100644 --- a/sys/fs/tarfs/tarfs.h +++ b/sys/fs/tarfs/tarfs.h @@ -56,7 +56,7 @@ struct tarfs_node { struct vnode *vnode; struct tarfs_mount *tmp; - enum vtype type; + __enum_uint8(vtype) type; ino_t ino; off_t offset; size_t size; @@ -227,7 +227,7 @@ VP_TO_TARFS_NODE(struct vnode *vp) } int tarfs_alloc_node(struct tarfs_mount *tmp, const char *name, - size_t namelen, enum vtype type, off_t off, size_t sz, + size_t namelen, __enum_uint8(vtype) type, off_t off, size_t sz, time_t mtime, uid_t uid, gid_t gid, mode_t mode, unsigned int flags, const char *linkname, dev_t rdev, struct tarfs_node *parent, struct tarfs_node **node); diff --git a/sys/fs/tarfs/tarfs_subr.c b/sys/fs/tarfs/tarfs_subr.c index a0077c611f25..431aa352cd38 100644 --- a/sys/fs/tarfs/tarfs_subr.c +++ b/sys/fs/tarfs/tarfs_subr.c @@ -163,7 +163,7 @@ tarfs_lookup_dir(struct tarfs_node *tnp, off_t cookie) int tarfs_alloc_node(struct tarfs_mount *tmp, const char *name, size_t namelen, - enum vtype type, off_t off, size_t sz, time_t mtime, uid_t uid, gid_t gid, + __enum_uint8(vtype) type, off_t off, size_t sz, time_t mtime, uid_t uid, gid_t gid, mode_t mode, unsigned int flags, const char *linkname, dev_t rdev, struct tarfs_node *parent, struct tarfs_node **retnode) { diff --git a/sys/fs/tmpfs/tmpfs.h b/sys/fs/tmpfs/tmpfs.h index dac77771a2ec..126b99acba6b 100644 --- a/sys/fs/tmpfs/tmpfs.h +++ b/sys/fs/tmpfs/tmpfs.h @@ -183,7 +183,7 @@ struct tmpfs_node { * types instead of a custom enumeration is to make things simpler * and faster, as we do not need to convert between two types. */ - enum vtype tn_type; /* (c) */ + __enum_uint8(vtype) tn_type; /* (c) */ /* * See the top comment. Reordered here to fill LP64 hole. @@ -455,7 +455,7 @@ struct tmpfs_dir_cursor { */ void tmpfs_ref_node(struct tmpfs_node *node); -int tmpfs_alloc_node(struct mount *mp, struct tmpfs_mount *, enum vtype, +int tmpfs_alloc_node(struct mount *mp, struct tmpfs_mount *, __enum_uint8(vtype), uid_t uid, gid_t gid, mode_t mode, struct tmpfs_node *, const char *, dev_t, struct tmpfs_node **); int tmpfs_fo_close(struct file *fp, struct thread *td); diff --git a/sys/fs/tmpfs/tmpfs_subr.c b/sys/fs/tmpfs/tmpfs_subr.c index 6eee5ade1d9b..28834a96ee9a 100644 --- a/sys/fs/tmpfs/tmpfs_subr.c +++ b/sys/fs/tmpfs/tmpfs_subr.c @@ -535,7 +535,7 @@ tmpfs_ref_node(struct tmpfs_node *node) * Returns zero on success or an appropriate error code on failure. */ int -tmpfs_alloc_node(struct mount *mp, struct tmpfs_mount *tmp, enum vtype type, +tmpfs_alloc_node(struct mount *mp, struct tmpfs_mount *tmp, __enum_uint8(vtype) type, uid_t uid, gid_t gid, mode_t mode, struct tmpfs_node *parent, const char *target, dev_t rdev, struct tmpfs_node **node) { diff --git a/sys/fs/unionfs/union_subr.c b/sys/fs/unionfs/union_subr.c index 702b10bb6204..fccc07a1ea76 100644 --- a/sys/fs/unionfs/union_subr.c +++ b/sys/fs/unionfs/union_subr.c @@ -308,7 +308,7 @@ unionfs_nodeget(struct mount *mp, struct vnode *uppervp, u_long hashmask; int error; int lkflags; - enum vtype vt; + __enum_uint8(vtype) vt; error = 0; ump = MOUNTTOUNIONFSMOUNT(mp); diff --git a/sys/kern/kern_linker.c b/sys/kern/kern_linker.c index 9dc7ff42cc38..8a3a0e5f0681 100644 --- a/sys/kern/kern_linker.c +++ b/sys/kern/kern_linker.c @@ -1858,7 +1858,7 @@ linker_lookup_file(const char *path, int pathlen, const char *name, const char * const *cpp, *sep; char *result; int error, len, extlen, reclen, flags; - enum vtype type; + __enum_uint8(vtype) type; extlen = 0; for (cpp = linker_ext_list; *cpp; cpp++) { diff --git a/sys/kern/subr_acl_nfs4.c b/sys/kern/subr_acl_nfs4.c index 3fc9bb3df61d..ecaf1df4c8c0 100644 --- a/sys/kern/subr_acl_nfs4.c +++ b/sys/kern/subr_acl_nfs4.c @@ -170,7 +170,7 @@ _acl_denies(const struct acl *aclp, int access_mask, struct ucred *cred, } int -vaccess_acl_nfs4(enum vtype type, uid_t file_uid, gid_t file_gid, +vaccess_acl_nfs4(__enum_uint8(vtype) type, uid_t file_uid, gid_t file_gid, struct acl *aclp, accmode_t accmode, struct ucred *cred) { accmode_t priv_granted = 0; diff --git a/sys/kern/subr_acl_posix1e.c b/sys/kern/subr_acl_posix1e.c index 38239d8c6e65..82d0bcc566f1 100644 --- a/sys/kern/subr_acl_posix1e.c +++ b/sys/kern/subr_acl_posix1e.c @@ -56,7 +56,7 @@ __FBSDID("$FreeBSD$"); * errno value. */ int -vaccess_acl_posix1e(enum vtype type, uid_t file_uid, gid_t file_gid, +vaccess_acl_posix1e(__enum_uint8(vtype) type, uid_t file_uid, gid_t file_gid, struct acl *acl, accmode_t accmode, struct ucred *cred) { struct acl_entry *acl_other, *acl_mask; diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 1310800fce4e..d315892953e1 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -3654,7 +3654,7 @@ vn_fullpath_hardlink(struct vnode *vp, struct vnode *dvp, struct pwd *pwd; size_t addend; int error; - enum vtype type; + __enum_uint8(vtype) type; if (*buflen < 2) return (EINVAL); @@ -3676,15 +3676,8 @@ vn_fullpath_hardlink(struct vnode *vp, struct vnode *dvp, * before we get to evaluate the condition. If this happens, we will * populate part of the buffer and descend to vn_fullpath_dir with * vp == vp_crossmp. Prevent the problem by checking for VBAD. - * - * This should be atomic_load(&vp->v_type) but it is illegal to take - * an address of a bit field, even if said field is sized to char. - * Work around the problem by reading the value into a full-sized enum - * and then re-reading it with atomic_load which will still prevent - * the compiler from re-reading down the road. */ - type = vp->v_type; - type = atomic_load_int(&type); + type = atomic_load_8(&vp->v_type); if (type == VBAD) { error = ENOENT; goto out_bad; diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 252e0ca60c3b..b7d43863a228 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -145,7 +145,7 @@ SYSCTL_COUNTER_U64(_vfs, OID_AUTO, vnodes_created, CTLFLAG_RD, &vnodes_created, * Conversion tables for conversion from vnode types to inode formats * and back. */ -enum vtype iftovt_tab[16] = { +__enum_uint8(vtype) iftovt_tab[16] = { VNON, VFIFO, VCHR, VNON, VDIR, VNON, VBLK, VNON, VREG, VNON, VLNK, VNON, VSOCK, VNON, VNON, VNON }; @@ -5259,7 +5259,7 @@ out_error: * Returns 0 on success, or an errno on failure. */ int -vaccess(enum vtype type, mode_t file_mode, uid_t file_uid, gid_t file_gid, +vaccess(__enum_uint8(vtype) type, mode_t file_mode, uid_t file_uid, gid_t file_gid, accmode_t accmode, struct ucred *cred) { accmode_t dac_granted; @@ -7013,7 +7013,7 @@ vn_getsize(struct vnode *vp, off_t *size, struct ucred *cred) #ifdef INVARIANTS void -vn_set_state_validate(struct vnode *vp, enum vstate state) +vn_set_state_validate(struct vnode *vp, __enum_uint8(vstate) state) { switch (vp->v_state) { diff --git a/sys/sys/param.h b/sys/sys/param.h index 904eb9825b92..137bd80c77cb 100644 --- a/sys/sys/param.h +++ b/sys/sys/param.h @@ -76,7 +76,7 @@ * cannot include sys/param.h and should only be updated here. */ #undef __FreeBSD_version -#define __FreeBSD_version 1400092 +#define __FreeBSD_version 1400093 /* * __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD, diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 8b108c73b355..e7ebc39ada1d 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -56,7 +56,7 @@ /* * Vnode types. VNON means no type. */ -enum vtype { +__enum_uint8_decl(vtype) { VNON, VREG, VDIR, @@ -70,7 +70,7 @@ enum vtype { VLASTTYPE = VMARKER, }; -enum vstate { +__enum_uint8_decl(vstate) { VSTATE_UNINITIALIZED, VSTATE_CONSTRUCTED, VSTATE_DESTROYING, @@ -129,8 +129,8 @@ struct vnode { * Fields which define the identity of the vnode. These fields are * owned by the filesystem (XXX: and vgone() ?) */ - enum vtype v_type:8; /* u vnode type */ - enum vstate v_state:8; /* u vnode state */ + __enum_uint8(vtype) v_type; /* u vnode type */ + __enum_uint8(vstate) v_state; /* u vnode state */ short v_irflag; /* i frequently read flags */ seqc_t v_seqc; /* i modification count */ uint32_t v_nchash; /* u namecache hash */ @@ -281,7 +281,7 @@ _Static_assert(sizeof(struct vnode) <= 448, "vnode size crosses 448 bytes"); * is unavailable (getattr) or which is not to be changed (setattr). */ struct vattr { - enum vtype va_type; /* vnode type (for create) */ + __enum_uint8(vtype) va_type; /* vnode type (for create) */ u_short va_mode; /* files access mode and type */ u_short va_padding0; uid_t va_uid; /* owner user id */ @@ -405,7 +405,7 @@ extern const u_int io_hold_cnt; * Convert between vnode types and inode formats (since POSIX.1 * defines mode word of stat structure in terms of inode formats). */ -extern enum vtype iftovt_tab[]; +extern __enum_uint8(vtype) iftovt_tab[]; extern int vttoif_tab[]; #define IFTOVT(mode) (iftovt_tab[((mode) & S_IFMT) >> 12]) #define VTTOIF(indx) (vttoif_tab[(int)(indx)]) @@ -720,13 +720,13 @@ int vn_path_to_global_path(struct thread *td, struct vnode *vp, int vn_path_to_global_path_hardlink(struct thread *td, struct vnode *vp, struct vnode *dvp, char *path, u_int pathlen, const char *leaf_name, size_t leaf_length); -int vaccess(enum vtype type, mode_t file_mode, uid_t file_uid, +int vaccess(__enum_uint8(vtype) type, mode_t file_mode, uid_t file_uid, gid_t file_gid, accmode_t accmode, struct ucred *cred); int vaccess_vexec_smr(mode_t file_mode, uid_t file_uid, gid_t file_gid, struct ucred *cred); -int vaccess_acl_nfs4(enum vtype type, uid_t file_uid, gid_t file_gid, +int vaccess_acl_nfs4(__enum_uint8(vtype) type, uid_t file_uid, gid_t file_gid, struct acl *aclp, accmode_t accmode, struct ucred *cred); -int vaccess_acl_posix1e(enum vtype type, uid_t file_uid, +int vaccess_acl_posix1e(__enum_uint8(vtype) type, uid_t file_uid, gid_t file_gid, struct acl *acl, accmode_t accmode, struct ucred *cred); void vattr_null(struct vattr *vap); @@ -1144,11 +1144,11 @@ int vn_dir_check_exec(struct vnode *vp, struct componentname *cnp); int vn_lktype_write(struct mount *mp, struct vnode *vp); #ifdef INVARIANTS -void vn_set_state_validate(struct vnode *vp, enum vstate state); +void vn_set_state_validate(struct vnode *vp, __enum_uint8(vstate) state); #endif static inline void -vn_set_state(struct vnode *vp, enum vstate state) +vn_set_state(struct vnode *vp, __enum_uint8(vstate) state) { #ifdef INVARIANTS vn_set_state_validate(vp, state); @@ -1156,7 +1156,7 @@ vn_set_state(struct vnode *vp, enum vstate state) vp->v_state = state; } -static inline enum vstate +static inline __enum_uint8(vstate) vn_get_state(struct vnode *vp) { return (vp->v_state); diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index 957be753ce15..6ac43b4b84d5 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -2644,7 +2644,7 @@ ffs_blkfree(struct ufsmount *ump, ufs2_daddr_t bno, long size, ino_t inum, - enum vtype vtype, + __enum_uint8(vtype) vtype, struct workhead *dephd, u_long key) { diff --git a/sys/ufs/ffs/ffs_extern.h b/sys/ufs/ffs/ffs_extern.h index 5bfc88aa5d19..9e8eb7a74980 100644 --- a/sys/ufs/ffs/ffs_extern.h +++ b/sys/ufs/ffs/ffs_extern.h @@ -62,7 +62,7 @@ int ffs_balloc_ufs1(struct vnode *a_vp, off_t a_startoffset, int a_size, int ffs_balloc_ufs2(struct vnode *a_vp, off_t a_startoffset, int a_size, struct ucred *a_cred, int a_flags, struct buf **a_bpp); void ffs_blkfree(struct ufsmount *, struct fs *, struct vnode *, - ufs2_daddr_t, long, ino_t, enum vtype, struct workhead *, u_long); + ufs2_daddr_t, long, ino_t, __enum_uint8(vtype), struct workhead *, u_long); ufs2_daddr_t ffs_blkpref_ufs1(struct inode *, ufs_lbn_t, int, ufs1_daddr_t *); ufs2_daddr_t ffs_blkpref_ufs2(struct inode *, ufs_lbn_t, int, ufs2_daddr_t *); void ffs_blkrelease_finish(struct ufsmount *, u_long); @@ -99,7 +99,7 @@ int ffs_sbput(void *, struct fs *, off_t, int (*)(void *, off_t, void *, int ffs_sbupdate(struct ufsmount *, int, int); void ffs_setblock(struct fs *, u_char *, ufs1_daddr_t); int ffs_snapblkfree(struct fs *, struct vnode *, ufs2_daddr_t, long, ino_t, - enum vtype, struct workhead *); + __enum_uint8(vtype), struct workhead *); void ffs_snapremove(struct vnode *vp); int ffs_snapshot(struct mount *mp, char *snapfile); void ffs_snapshot_mount(struct mount *mp); diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c index fa744f0fab79..ec459bb7c2d7 100644 --- a/sys/ufs/ffs/ffs_snapshot.c +++ b/sys/ufs/ffs/ffs_snapshot.c @@ -91,7 +91,7 @@ ffs_snapblkfree(struct fs *fs, ufs2_daddr_t bno, long size, ino_t inum, - enum vtype vtype, + __enum_uint8(vtype) vtype, struct workhead *wkhd) { return (EINVAL); @@ -1755,7 +1755,7 @@ ffs_snapblkfree(struct fs *fs, ufs2_daddr_t bno, long size, ino_t inum, - enum vtype vtype, + __enum_uint8(vtype) vtype, struct workhead *wkhd) { struct buf *ibp, *cbp, *savedcbp = NULL; diff --git a/sys/ufs/ffs/softdep.h b/sys/ufs/ffs/softdep.h index e45abb9def32..e7caa202a208 100644 --- a/sys/ufs/ffs/softdep.h +++ b/sys/ufs/ffs/softdep.h @@ -562,7 +562,7 @@ struct freefrag { ufs2_daddr_t ff_blkno; /* fragment physical block number */ long ff_fragsize; /* size of fragment being deleted */ ino_t ff_inum; /* owning inode number */ - enum vtype ff_vtype; /* owning inode's file type */ + __enum_uint8(vtype) ff_vtype; /* owning inode's file type */ int ff_key; /* trim key when deleted */ }; @@ -590,7 +590,7 @@ struct freeblks { off_t fb_len; /* Length we're truncating to. */ ufs2_daddr_t fb_chkcnt; /* Blocks released. */ ino_t fb_inum; /* inode owner of blocks */ - enum vtype fb_vtype; /* inode owner's file type */ + __enum_uint8(vtype) fb_vtype; /* inode owner's file type */ uid_t fb_uid; /* uid of previous owner of blocks */ int fb_ref; /* Children outstanding. */ int fb_cgwait; /* cg writes outstanding. */