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...
Dimitry Andric
dim at FreeBSD.org
Sat Feb 1 17:03:37 UTC 2020
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);
}
More information about the svn-src-projects
mailing list