Date: Sat, 1 Feb 2020 17:03:31 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r357368 - in projects/clang1000-import: bin/pwait share/man/man4 sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys sys/conf sys/dev/tpm s... Message-ID: <202002011703.011H3VV8026644@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Sat Feb 1 17:03:31 2020 New Revision: 357368 URL: https://svnweb.freebsd.org/changeset/base/357368 Log: Merge ^/head r357350 through r357367. Modified: projects/clang1000-import/bin/pwait/pwait.c projects/clang1000-import/share/man/man4/bridge.4 projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/clang1000-import/sys/conf/files.amd64 projects/clang1000-import/sys/conf/kern.mk projects/clang1000-import/sys/conf/kern.post.mk projects/clang1000-import/sys/dev/tpm/tpm_crb.c projects/clang1000-import/sys/geom/geom_disk.c projects/clang1000-import/sys/kern/kern_exec.c projects/clang1000-import/sys/kern/subr_smr.c projects/clang1000-import/sys/kern/vfs_lookup.c projects/clang1000-import/sys/kern/vfs_subr.c projects/clang1000-import/sys/kern/vnode_if.src projects/clang1000-import/sys/modules/tpm/Makefile projects/clang1000-import/sys/net/if_vlan.c projects/clang1000-import/sys/sys/smr.h projects/clang1000-import/sys/sys/vnode.h projects/clang1000-import/sys/ufs/ufs/ufs_vnops.c projects/clang1000-import/sys/vm/vm_mmap.c projects/clang1000-import/tests/sys/net/if_epair.c projects/clang1000-import/tools/uma/smrstress/smrstress.c Directory Properties: projects/clang1000-import/ (props changed) projects/clang1000-import/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/clang1000-import/bin/pwait/pwait.c ============================================================================== --- projects/clang1000-import/bin/pwait/pwait.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/bin/pwait/pwait.c Sat Feb 1 17:03:31 2020 (r357368) @@ -53,7 +53,8 @@ static void usage(void) { - errx(EX_USAGE, "usage: pwait [-t timeout] [-ov] pid ..."); + fprintf(stderr, "usage: pwait [-t timeout] [-ov] pid ...\n"); + exit(EX_USAGE); } /* Modified: projects/clang1000-import/share/man/man4/bridge.4 ============================================================================== --- projects/clang1000-import/share/man/man4/bridge.4 Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/share/man/man4/bridge.4 Sat Feb 1 17:03:31 2020 (r357368) @@ -35,7 +35,7 @@ .\" .\" $FreeBSD$ .\" -.Dd October 16, 2017 +.Dd February 01, 2020 .Dt IF_BRIDGE 4 .Os .Sh NAME @@ -480,13 +480,6 @@ ifconfig gif0 tunnel 1.2.3.4 5.6.7.8 up ifconfig bridge0 create ifconfig bridge0 addm fxp0 addm gif0 up .Ed -.Pp -Note that -.Fx -6.1, 6.2, 6.3, 7.0, 7.1, and 7.2 have a bug in the EtherIP protocol. -For more details and workaround, see the -.Xr gif 4 -manual page. .Sh SEE ALSO .Xr gif 4 , .Xr ipf 4 , Modified: projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h ============================================================================== --- projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h Sat Feb 1 17:03:31 2020 (r357368) @@ -106,7 +106,7 @@ struct zfsvfs { #define ZFS_WUNLOCK_TEARDOWN_INACTIVE(zfsvfs) \ rms_wunlock(&(zfsvfs)->z_teardown_inactive_lock) -#define ZFS_WLOCK_TEARDOWN_INACTIVE_WLOCKED(zfsvfs) \ +#define ZFS_TEARDOWN_INACTIVE_WLOCKED(zfsvfs) \ rms_wowned(&(zfsvfs)->z_teardown_inactive_lock) /* Modified: projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c ============================================================================== --- projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c Sat Feb 1 17:03:31 2020 (r357368) @@ -2437,7 +2437,7 @@ zfs_resume_fs(zfsvfs_t *zfsvfs, dsl_dataset_t *ds) znode_t *zp; ASSERT(RRM_WRITE_HELD(&zfsvfs->z_teardown_lock)); - ASSERT(ZFS_WLOCK_TEARDOWN_INACTIVE_WLOCKED(zp->z_zfsvfs)); + ASSERT(ZFS_TEARDOWN_INACTIVE_WLOCKED(zfsvfs)); /* * We already own this, so just update the objset_t, as the one we Modified: projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c ============================================================================== --- projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c Sat Feb 1 17:03:31 2020 (r357368) @@ -606,7 +606,7 @@ zfs_znode_dmu_fini(znode_t *zp) { ASSERT(MUTEX_HELD(ZFS_OBJ_MUTEX(zp->z_zfsvfs, zp->z_id)) || zp->z_unlinked || - ZFS_WLOCK_TEARDOWN_INACTIVE_WLOCKED(zp->z_zfsvfs)); + ZFS_TEARDOWN_INACTIVE_WLOCKED(zp->z_zfsvfs)); sa_handle_destroy(zp->z_sa_hdl); zp->z_sa_hdl = NULL; Modified: projects/clang1000-import/sys/conf/files.amd64 ============================================================================== --- projects/clang1000-import/sys/conf/files.amd64 Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/conf/files.amd64 Sat Feb 1 17:03:31 2020 (r357368) @@ -323,8 +323,7 @@ dev/syscons/scvesactl.c optional sc vga vesa dev/syscons/scvgarndr.c optional sc vga dev/tpm/tpm.c optional tpm dev/tpm/tpm20.c optional tpm -dev/tpm/tpm_crb.c optional tpm acpi \ - compile-with "${NORMAL_C} ${NO_WINT_IN_BOOL_CONTEXT}" +dev/tpm/tpm_crb.c optional tpm acpi dev/tpm/tpm_tis.c optional tpm acpi dev/tpm/tpm_acpi.c optional tpm acpi dev/tpm/tpm_isa.c optional tpm isa Modified: projects/clang1000-import/sys/conf/kern.mk ============================================================================== --- projects/clang1000-import/sys/conf/kern.mk Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/conf/kern.mk Sat Feb 1 17:03:31 2020 (r357368) @@ -37,9 +37,6 @@ CWARNEXTRA+= -Wno-error-shift-negative-value .if ${COMPILER_VERSION} >= 40000 CWARNEXTRA+= -Wno-address-of-packed-member .endif -.if ${COMPILER_VERSION} >= 100000 -NO_WINT_IN_BOOL_CONTEXT= -Wno-int-in-bool-context -.endif .endif .if ${COMPILER_TYPE} == "gcc" Modified: projects/clang1000-import/sys/conf/kern.post.mk ============================================================================== --- projects/clang1000-import/sys/conf/kern.post.mk Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/conf/kern.post.mk Sat Feb 1 17:03:31 2020 (r357368) @@ -389,7 +389,7 @@ kernel-cleandepend: .PHONY kernel-tags: @ls .depend.* > /dev/null 2>&1 || \ - { echo "you must make depend first"; exit 1; } + { echo "you must make all first"; exit 1; } sh $S/conf/systags.sh kernel-install: .PHONY Modified: projects/clang1000-import/sys/dev/tpm/tpm_crb.c ============================================================================== --- projects/clang1000-import/sys/dev/tpm/tpm_crb.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/dev/tpm/tpm_crb.c Sat Feb 1 17:03:31 2020 (r357368) @@ -298,7 +298,7 @@ tpmcrb_cancel_cmd(struct tpm_sc *sc) return (false); } - WR4(sc, TPM_CRB_CTRL_CANCEL, !TPM_CRB_CTRL_CANCEL_CMD); + WR4(sc, TPM_CRB_CTRL_CANCEL, ~TPM_CRB_CTRL_CANCEL_CMD); return (true); } @@ -330,7 +330,7 @@ tpmcrb_transmit(struct tpm_sc *sc, size_t length) return (EIO); } /* Clear cancellation bit */ - WR4(sc, TPM_CRB_CTRL_CANCEL, !TPM_CRB_CTRL_CANCEL_CMD); + WR4(sc, TPM_CRB_CTRL_CANCEL, ~TPM_CRB_CTRL_CANCEL_CMD); /* Switch device to idle state if necessary */ if (!(RD4(sc, TPM_CRB_CTRL_STS) & TPM_CRB_CTRL_STS_IDLE_BIT)) { Modified: projects/clang1000-import/sys/geom/geom_disk.c ============================================================================== --- projects/clang1000-import/sys/geom/geom_disk.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/geom/geom_disk.c Sat Feb 1 17:03:31 2020 (r357368) @@ -268,7 +268,6 @@ g_disk_ioctl(struct g_provider *pp, u_long cmd, void * { struct disk *dp; struct g_disk_softc *sc; - int error; sc = pp->private; dp = sc->dp; @@ -277,8 +276,7 @@ g_disk_ioctl(struct g_provider *pp, u_long cmd, void * if (dp->d_ioctl == NULL) return (ENOIOCTL); - error = dp->d_ioctl(dp, cmd, data, fflag, td); - return (error); + return (dp->d_ioctl(dp, cmd, data, fflag, td)); } static off_t Modified: projects/clang1000-import/sys/kern/kern_exec.c ============================================================================== --- projects/clang1000-import/sys/kern/kern_exec.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/kern/kern_exec.c Sat Feb 1 17:03:31 2020 (r357368) @@ -870,7 +870,7 @@ interpret: /* Set values passed into the program in registers. */ (*p->p_sysent->sv_setregs)(td, imgp, stack_base); - vfs_mark_atime(imgp->vp, td->td_ucred); + VOP_MMAPPED(imgp->vp); SDT_PROBE1(proc, , , exec__success, args->fname); Modified: projects/clang1000-import/sys/kern/subr_smr.c ============================================================================== --- projects/clang1000-import/sys/kern/subr_smr.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/kern/subr_smr.c Sat Feb 1 17:03:31 2020 (r357368) @@ -195,7 +195,7 @@ smr_advance(smr_t smr) * odd and an observed value of 0 in a particular CPU means * it is not currently in a read section. */ - s = smr->c_shared; + s = zpcpu_get(smr)->c_shared; goal = atomic_fetchadd_int(&s->s_wr_seq, SMR_SEQ_INCR) + SMR_SEQ_INCR; /* @@ -242,16 +242,21 @@ smr_poll(smr_t smr, smr_seq_t goal, bool wait) */ success = true; critical_enter(); - s = smr->c_shared; + s = zpcpu_get(smr)->c_shared; /* * Acquire barrier loads s_wr_seq after s_rd_seq so that we can not * observe an updated read sequence that is larger than write. */ s_rd_seq = atomic_load_acq_int(&s->s_rd_seq); - s_wr_seq = smr_current(smr); /* + * wr_seq must be loaded prior to any c_seq value so that a stale + * c_seq can only reference time after this wr_seq. + */ + s_wr_seq = atomic_load_acq_int(&s->s_wr_seq); + + /* * Detect whether the goal is valid and has already been observed. * * The goal must be in the range of s_wr_seq >= goal >= s_rd_seq for @@ -335,6 +340,12 @@ smr_poll(smr_t smr, smr_seq_t goal, bool wait) out: critical_exit(); + + /* + * Serialize with smr_advance()/smr_exit(). The caller is now free + * to modify memory as expected. + */ + atomic_thread_fence_acq(); return (success); } Modified: projects/clang1000-import/sys/kern/vfs_lookup.c ============================================================================== --- projects/clang1000-import/sys/kern/vfs_lookup.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/kern/vfs_lookup.c Sat Feb 1 17:03:31 2020 (r357368) @@ -254,7 +254,7 @@ namei_cleanup_cnp(struct componentname *cnp) } static int -namei_handle_root(struct nameidata *ndp, struct vnode **dpp) +namei_handle_root(struct nameidata *ndp, struct vnode **dpp, u_int n) { struct componentname *cnp; @@ -276,7 +276,7 @@ namei_handle_root(struct nameidata *ndp, struct vnode ndp->ni_pathlen--; } *dpp = ndp->ni_rootdir; - vrefact(*dpp); + vrefactn(*dpp, n); return (0); } @@ -395,8 +395,11 @@ namei(struct nameidata *ndp) * Get starting point for the translation. */ FILEDESC_SLOCK(fdp); + /* + * The reference on ni_rootdir is acquired in the block below to avoid + * back-to-back atomics for absolute lookups. + */ ndp->ni_rootdir = fdp->fd_rdir; - vrefact(ndp->ni_rootdir); ndp->ni_topdir = fdp->fd_jdir; /* @@ -412,15 +415,29 @@ namei(struct nameidata *ndp) cnp->cn_nameptr = cnp->cn_pnbuf; if (cnp->cn_pnbuf[0] == '/') { ndp->ni_resflags |= NIRES_ABS; - error = namei_handle_root(ndp, &dp); + error = namei_handle_root(ndp, &dp, 2); + if (error != 0) { + /* + * Simplify error handling, we should almost never be + * here. + */ + vrefact(ndp->ni_rootdir); + } } else { if (ndp->ni_startdir != NULL) { + vrefact(ndp->ni_rootdir); dp = ndp->ni_startdir; startdir_used = 1; } else if (ndp->ni_dirfd == AT_FDCWD) { dp = fdp->fd_cdir; - vrefact(dp); + if (dp == ndp->ni_rootdir) { + vrefactn(dp, 2); + } else { + vrefact(ndp->ni_rootdir); + vrefact(dp); + } } else { + vrefact(ndp->ni_rootdir); rights = ndp->ni_rightsneeded; cap_rights_set(&rights, CAP_LOOKUP); @@ -567,7 +584,7 @@ namei(struct nameidata *ndp) cnp->cn_nameptr = cnp->cn_pnbuf; if (*(cnp->cn_nameptr) == '/') { vrele(dp); - error = namei_handle_root(ndp, &dp); + error = namei_handle_root(ndp, &dp, 1); if (error != 0) goto out; } Modified: projects/clang1000-import/sys/kern/vfs_subr.c ============================================================================== --- projects/clang1000-import/sys/kern/vfs_subr.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/kern/vfs_subr.c Sat Feb 1 17:03:31 2020 (r357368) @@ -3046,6 +3046,19 @@ vrefact(struct vnode *vp) #endif } +void +vrefactn(struct vnode *vp, u_int n) +{ + + CTR2(KTR_VFS, "%s: vp %p", __func__, vp); +#ifdef INVARIANTS + int old = atomic_fetchadd_int(&vp->v_usecount, n); + VNASSERT(old > 0, vp, ("%s: wrong use count %d", __func__, old)); +#else + atomic_add_int(&vp->v_usecount, n); +#endif +} + /* * Return reference count of a vnode. * @@ -5940,23 +5953,6 @@ vfs_read_dirent(struct vop_readdir_args *ap, struct di (*ap->a_cookies)[*ap->a_ncookies] = off; *ap->a_ncookies += 1; return (0); -} - -/* - * Mark for update the access time of the file if the filesystem - * supports VOP_MARKATIME. This functionality is used by execve and - * mmap, so we want to avoid the I/O implied by directly setting - * va_atime for the sake of efficiency. - */ -void -vfs_mark_atime(struct vnode *vp, struct ucred *cred) -{ - struct mount *mp; - - mp = vp->v_mount; - ASSERT_VOP_LOCKED(vp, "vfs_mark_atime"); - if (mp != NULL && (mp->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0) - (void)VOP_MARKATIME(vp); } /* Modified: projects/clang1000-import/sys/kern/vnode_if.src ============================================================================== --- projects/clang1000-import/sys/kern/vnode_if.src Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/kern/vnode_if.src Sat Feb 1 17:03:31 2020 (r357368) @@ -181,9 +181,9 @@ vop_setattr { }; -%% markatime vp L L L +%% mmapped vp L L L -vop_markatime { +vop_mmapped { IN struct vnode *vp; }; Modified: projects/clang1000-import/sys/modules/tpm/Makefile ============================================================================== --- projects/clang1000-import/sys/modules/tpm/Makefile Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/modules/tpm/Makefile Sat Feb 1 17:03:31 2020 (r357368) @@ -11,5 +11,3 @@ SRCS+= tpm_isa.c tpm_acpi.c isa_if.h opt_acpi.h acpi_i SRCS+= tpm20.c tpm_crb.c tpm_tis.c opt_tpm.h .include <bsd.kmod.mk> - -CWARNFLAGS.tpm_crb.c+= ${NO_WINT_IN_BOOL_CONTEXT} Modified: projects/clang1000-import/sys/net/if_vlan.c ============================================================================== --- projects/clang1000-import/sys/net/if_vlan.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/net/if_vlan.c Sat Feb 1 17:03:31 2020 (r357368) @@ -921,7 +921,7 @@ vnet_vlan_uninit(const void *unused __unused) if_clone_detach(V_vlan_cloner); } -VNET_SYSUNINIT(vnet_vlan_uninit, SI_SUB_INIT_IF, SI_ORDER_FIRST, +VNET_SYSUNINIT(vnet_vlan_uninit, SI_SUB_INIT_IF, SI_ORDER_ANY, vnet_vlan_uninit, NULL); #endif Modified: projects/clang1000-import/sys/sys/smr.h ============================================================================== --- projects/clang1000-import/sys/sys/smr.h Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/sys/smr.h Sat Feb 1 17:03:31 2020 (r357368) @@ -70,10 +70,17 @@ struct smr { * Return the current write sequence number. */ static inline smr_seq_t +smr_shared_current(smr_shared_t s) +{ + + return (atomic_load_int(&s->s_wr_seq)); +} + +static inline smr_seq_t smr_current(smr_t smr) { - return (atomic_load_int(&smr->c_shared->s_wr_seq)); + return (smr_shared_current(zpcpu_get(smr)->c_shared)); } /* @@ -106,7 +113,7 @@ smr_enter(smr_t smr) * is detected and handled there. */ /* This is an add because we do not have atomic_store_acq_int */ - atomic_add_acq_int(&smr->c_seq, smr_current(smr)); + atomic_add_acq_int(&smr->c_seq, smr_shared_current(smr->c_shared)); } /* Modified: projects/clang1000-import/sys/sys/vnode.h ============================================================================== --- projects/clang1000-import/sys/sys/vnode.h Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/sys/vnode.h Sat Feb 1 17:03:31 2020 (r357368) @@ -900,6 +900,7 @@ void vrele(struct vnode *vp); void vref(struct vnode *vp); void vrefl(struct vnode *vp); void vrefact(struct vnode *vp); +void vrefactn(struct vnode *vp, u_int n); int vrefcnt(struct vnode *vp); void v_addpollinfo(struct vnode *vp); @@ -936,7 +937,6 @@ void vfs_hash_rehash(struct vnode *vp, u_int hash); void vfs_hash_remove(struct vnode *vp); int vfs_kqfilter(struct vop_kqfilter_args *); -void vfs_mark_atime(struct vnode *vp, struct ucred *cred); struct dirent; int vfs_read_dirent(struct vop_readdir_args *ap, struct dirent *dp, off_t off); int vfs_emptydir(struct vnode *vp); Modified: projects/clang1000-import/sys/ufs/ufs/ufs_vnops.c ============================================================================== --- projects/clang1000-import/sys/ufs/ufs/ufs_vnops.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/ufs/ufs/ufs_vnops.c Sat Feb 1 17:03:31 2020 (r357368) @@ -108,7 +108,7 @@ static vop_getattr_t ufs_getattr; static vop_ioctl_t ufs_ioctl; static vop_link_t ufs_link; static int ufs_makeinode(int mode, struct vnode *, struct vnode **, struct componentname *, const char *); -static vop_markatime_t ufs_markatime; +static vop_mmapped_t ufs_mmapped; static vop_mkdir_t ufs_mkdir; static vop_mknod_t ufs_mknod; static vop_open_t ufs_open; @@ -676,19 +676,22 @@ out: } #endif /* UFS_ACL */ -/* - * Mark this file's access time for update for vfs_mark_atime(). This - * is called from execve() and mmap(). - */ static int -ufs_markatime(ap) - struct vop_markatime_args /* { +ufs_mmapped(ap) + struct vop_mmapped_args /* { struct vnode *a_vp; } */ *ap; { - struct inode *ip = VTOI(ap->a_vp); + struct vnode *vp; + struct inode *ip; + struct mount *mp; - UFS_INODE_SET_FLAG_SHARED(ip, IN_ACCESS); + vp = ap->a_vp; + ip = VTOI(vp); + mp = vp->v_mount; + + if ((mp->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0) + UFS_INODE_SET_FLAG_SHARED(ip, IN_ACCESS); /* * XXXKIB No UFS_UPDATE(ap->a_vp, 0) there. */ @@ -2741,7 +2744,7 @@ struct vop_vector ufs_vnodeops = { .vop_ioctl = ufs_ioctl, .vop_link = ufs_link, .vop_lookup = vfs_cache_lookup, - .vop_markatime = ufs_markatime, + .vop_mmapped = ufs_mmapped, .vop_mkdir = ufs_mkdir, .vop_mknod = ufs_mknod, .vop_need_inactive = ufs_need_inactive, @@ -2783,7 +2786,6 @@ struct vop_vector ufs_fifoops = { .vop_getattr = ufs_getattr, .vop_inactive = ufs_inactive, .vop_kqfilter = ufsfifo_kqfilter, - .vop_markatime = ufs_markatime, .vop_pathconf = ufs_pathconf, .vop_print = ufs_print, .vop_read = VOP_PANIC, Modified: projects/clang1000-import/sys/vm/vm_mmap.c ============================================================================== --- projects/clang1000-import/sys/vm/vm_mmap.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/sys/vm/vm_mmap.c Sat Feb 1 17:03:31 2020 (r357368) @@ -1354,7 +1354,7 @@ vm_mmap_vnode(struct thread *td, vm_size_t objsize, *objp = obj; *flagsp = flags; - vfs_mark_atime(vp, cred); + VOP_MMAPPED(vp); done: if (error != 0 && *writecounted) { Modified: projects/clang1000-import/tests/sys/net/if_epair.c ============================================================================== --- projects/clang1000-import/tests/sys/net/if_epair.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/tests/sys/net/if_epair.c Sat Feb 1 17:03:31 2020 (r357368) @@ -25,17 +25,19 @@ * $FreeBSD$ */ +#include <sys/param.h> #include <sys/ioctl.h> #include <sys/linker.h> #include <sys/module.h> -#include <sys/param.h> #include <sys/socket.h> #include <sys/types.h> #include <net/if.h> +#include <errno.h> #include <fcntl.h> #include <stdio.h> +#include <strings.h> #include <atf-c.h> @@ -51,7 +53,7 @@ ATF_TC_BODY(params, tc) int s; s = kldload("if_epair"); - if (s != 0) + if (s != 0 && errno != EEXIST) atf_tc_fail("Failed to load if_epair"); s = socket(AF_INET, SOCK_DGRAM, 0); Modified: projects/clang1000-import/tools/uma/smrstress/smrstress.c ============================================================================== --- projects/clang1000-import/tools/uma/smrstress/smrstress.c Sat Feb 1 17:02:26 2020 (r357367) +++ projects/clang1000-import/tools/uma/smrstress/smrstress.c Sat Feb 1 17:03:31 2020 (r357368) @@ -84,7 +84,7 @@ smrs_read(void) /* Wait for the writer to exit. */ while (smrs_completed == 0) { smr_enter(smrs_smr); - cur = (void *)atomic_load_ptr(&smrs_current); + cur = (void *)atomic_load_acq_ptr(&smrs_current); if (cur->generation == -1) smrs_error(cur, "read early: Use after free!\n"); atomic_add_int(&cur->count, 1); @@ -107,6 +107,7 @@ smrs_write(void) for (i = 0; i < smrs_iterations; i++) { cur = uma_zalloc_smr(smrs_zone, M_WAITOK); + atomic_thread_fence_rel(); cur = (void *)atomic_swap_ptr(&smrs_current, (uintptr_t)cur); uma_zfree_smr(smrs_zone, cur); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202002011703.011H3VV8026644>