CVS commit: src/external/cddl/osnet/dev/fbt/x86
Module Name:src Committed By: riastradh Date: Wed Aug 18 11:26:17 UTC 2021 Modified Files: src/external/cddl/osnet/dev/fbt/x86: fbt_isa.c Log Message: PR/56355: Exclude the symbol trap, not all symbols other than trap. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.5 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.6 --- src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.5 Sun Aug 15 16:33:57 2021 +++ src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Wed Aug 18 11:26:17 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: fbt_isa.c,v 1.5 2021/08/15 16:33:57 christos Exp $ */ +/* $NetBSD: fbt_isa.c,v 1.6 2021/08/18 11:26:17 riastradh Exp $ */ /* * CDDL HEADER START @@ -251,7 +251,7 @@ fbt_provide_module_cb(const char *name, /* * Exclude some more symbols which can be called from probe context. */ - if (strcmp(name, "trap") || + if (strcmp(name, "trap") == 0 || strcmp(name, "x86_curcpu") == 0 || strcmp(name, "x86_curlwp") == 0) { return 0;
CVS commit: src/external/cddl/osnet/dev/fbt/x86
Module Name:src Committed By: christos Date: Sun Aug 15 16:33:57 UTC 2021 Modified Files: src/external/cddl/osnet/dev/fbt/x86: fbt_isa.c Log Message: PR/56355: Taylor Campbell: restore strcmp() over strncmp() To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.4 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.5 --- src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.4 Wed Aug 11 07:16:49 2021 +++ src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Sun Aug 15 12:33:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: fbt_isa.c,v 1.4 2021/08/11 11:16:49 christos Exp $ */ +/* $NetBSD: fbt_isa.c,v 1.5 2021/08/15 16:33:57 christos Exp $ */ /* * CDDL HEADER START @@ -251,9 +251,9 @@ fbt_provide_module_cb(const char *name, /* * Exclude some more symbols which can be called from probe context. */ - if (strncmp(name, "trap", 4) || - strncmp(name, "x86_curcpu", 10) == 0 || - strncmp(name, "x86_curlwp", 10) == 0) { + if (strcmp(name, "trap") || + strcmp(name, "x86_curcpu") == 0 || + strcmp(name, "x86_curlwp") == 0) { return 0; } #endif
CVS commit: src/external/cddl/osnet/dev/fbt/x86
Module Name:src Committed By: christos Date: Wed Aug 11 11:16:49 UTC 2021 Modified Files: src/external/cddl/osnet/dev/fbt/x86: fbt_isa.c Log Message: PR/56355: Brad Harder: dtrace triggers double-fault in supervisor mode To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.3 src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.4 --- src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c:1.3 Sat May 2 07:37:17 2020 +++ src/external/cddl/osnet/dev/fbt/x86/fbt_isa.c Wed Aug 11 07:16:49 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: fbt_isa.c,v 1.3 2020/05/02 11:37:17 maxv Exp $ */ +/* $NetBSD: fbt_isa.c,v 1.4 2021/08/11 11:16:49 christos Exp $ */ /* * CDDL HEADER START @@ -251,8 +251,9 @@ fbt_provide_module_cb(const char *name, /* * Exclude some more symbols which can be called from probe context. */ - if (strcmp(name, "x86_curcpu") == 0 || - strcmp(name, "x86_curlwp") == 0) { + if (strncmp(name, "trap", 4) || + strncmp(name, "x86_curcpu", 10) == 0 || + strncmp(name, "x86_curlwp", 10) == 0) { return 0; } #endif
CVS commit: src/external/cddl/osnet/sys/kern
Module Name:src Committed By: skrll Date: Sun Jul 25 06:07:42 UTC 2021 Modified Files: src/external/cddl/osnet/sys/kern: opensolaris.c Log Message: KNF To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/kern/opensolaris.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/kern/opensolaris.c diff -u src/external/cddl/osnet/sys/kern/opensolaris.c:1.2 src/external/cddl/osnet/sys/kern/opensolaris.c:1.3 --- src/external/cddl/osnet/sys/kern/opensolaris.c:1.2 Mon May 28 21:05:09 2018 +++ src/external/cddl/osnet/sys/kern/opensolaris.c Sun Jul 25 06:07:42 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: opensolaris.c,v 1.2 2018/05/28 21:05:09 chs Exp $ */ +/* $NetBSD: opensolaris.c,v 1.3 2021/07/25 06:07:42 skrll Exp $ */ /*- * Copyright 2007 John Birrell * @@ -28,11 +28,12 @@ */ #include +#include #include + #include #include #include -#include #include #include #include
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: kardel Date: Sun Jul 18 07:22:22 UTC 2021 Modified Files: src/external/cddl/osnet/sys/sys: vnode.h Log Message: PR kern/56316: vn_open doesn't follow symlinks remove setting of O_NOFOLLOW. restores ZFS being able to open devices via symlinks again. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 src/external/cddl/osnet/sys/sys/vnode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/vnode.h diff -u src/external/cddl/osnet/sys/sys/vnode.h:1.19 src/external/cddl/osnet/sys/sys/vnode.h:1.20 --- src/external/cddl/osnet/sys/sys/vnode.h:1.19 Tue Jun 29 22:40:53 2021 +++ src/external/cddl/osnet/sys/sys/vnode.h Sun Jul 18 07:22:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode.h,v 1.19 2021/06/29 22:40:53 dholland Exp $ */ +/* $NetBSD: vnode.h,v 1.20 2021/07/18 07:22:22 kardel Exp $ */ /* * CDDL HEADER START @@ -246,8 +246,6 @@ zfs_vn_open(const char *pnamep, enum uio ASSERT(crwhy == CRCREAT); ASSERT(umask == 0); - filemode |= O_NOFOLLOW; - pb = pathbuf_create(pnamep); error = vn_open(NULL, pb, 0, filemode, createmode, vpp, NULL, NULL); if (error == 0) {
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Sun Jul 4 11:25:07 UTC 2021 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_ctldir.c Log Message: Add VOP_PARSEPATH to zfs control dir vnode op table. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c:1.12 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c:1.13 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c:1.12 Sat May 16 18:31:46 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ctldir.c Sun Jul 4 11:25:07 2021 @@ -1825,6 +1825,7 @@ sfs_print(void *v) const struct vnodeopv_entry_desc zfs_sfsop_entries[] = { { _default_desc, vn_default_error }, + { _parsepath_desc, genfs_parsepath }, { _lookup_desc, sfs_lookup }, { _open_desc, sfs_open }, { _close_desc, sfs_close },
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: dholland Date: Fri Jul 2 17:14:37 UTC 2021 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Add VOP_PARSEPATH to zfs's vnode table. "oops" zfs not being under src/sys strikes again :-( To generate a diff of this commit: cvs rdiff -u -r1.71 -r1.72 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.71 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.72 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.71 Sun Nov 15 00:54:13 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Fri Jul 2 17:14:36 2021 @@ -6347,6 +6347,7 @@ const struct genfs_ops zfs_genfsops = { int (**zfs_vnodeop_p)(void *); const struct vnodeopv_entry_desc zfs_vnodeop_entries[] = { { _default_desc, vn_default_error }, + { _parsepath_desc, genfs_parsepath }, { _lookup_desc, zfs_netbsd_lookup }, { _create_desc, zfs_netbsd_create }, { _mknod_desc, zfs_netbsd_mknod },
CVS commit: src/external/cddl/osnet/dist/common/nvpair
Module Name:src Committed By: hannken Date: Fri May 21 17:32:49 UTC 2021 Modified Files: src/external/cddl/osnet/dist/common/nvpair: nvpair.c Log Message: Replace the Solaris style endian check (exactly one of _LITTLE_ENDIAN or _BIG_ENDIAN is defined) with standard check "#if BYTE_ORDER == BIG_ENDIAN" like we do it elseware. Should fix PR 56191 (ZFS tests fail on sparc64) To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dist/common/nvpair/nvpair.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/common/nvpair/nvpair.c diff -u src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.6 --- src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 Mon Mar 2 15:45:33 2020 +++ src/external/cddl/osnet/dist/common/nvpair/nvpair.c Fri May 21 17:32:49 2021 @@ -2255,11 +2255,11 @@ nvlist_common(nvlist_t *nvl, char *buf, int err = 0; nvstream_t nvs; int nvl_endian; -#ifdef _LITTLE_ENDIAN - int host_endian = 1; -#else +#if BYTE_ORDER == BIG_ENDIAN int host_endian = 0; -#endif /* _LITTLE_ENDIAN */ +#else + int host_endian = 1; +#endif /* BYTE_ORDER */ nvs_header_t *nvh = (void *)buf; if (buflen == NULL || nvl == NULL ||
CVS commit: src/external/cddl/osnet/dist/lib/libzfs/common
Module Name:src Committed By: nia Date: Thu May 13 09:05:19 UTC 2021 Modified Files: src/external/cddl/osnet/dist/lib/libzfs/common: libzfs_dataset.c Log Message: this is not FreeBSD To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c diff -u src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c:1.4 src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c:1.5 --- src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c:1.4 Mon May 28 21:05:06 2018 +++ src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_dataset.c Thu May 13 09:05:19 2021 @@ -1135,7 +1135,7 @@ badlabel: m_label_free(new_sl); /* OK if null */ #else /* !illumos */ zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, - "mlslabel is not supported on FreeBSD")); + "mlslabel is not supported on NetBSD")); (void) zfs_error(hdl, EZFS_BADPROP, errbuf); #endif /* illumos */ goto error; @@ -1644,7 +1644,7 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvl case ZFS_PROP_NBMAND: case ZFS_PROP_MLSLABEL: (void) snprintf(errbuf, sizeof (errbuf), - "property '%s' not supported on FreeBSD", + "property '%s' not supported on NetBSD", nvpair_name(elem)); ret = zfs_error(hdl, EZFS_PERM, errbuf); goto error;
CVS commit: src/external/cddl/osnet/dist/cmd/zfs
Module Name:src Committed By: nia Date: Thu May 13 09:03:35 UTC 2021 Modified Files: src/external/cddl/osnet/dist/cmd/zfs: zfs_main.c Log Message: zfs: this is not FreeBSD To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c diff -u src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c:1.7 src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c:1.8 --- src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c:1.7 Sun Sep 15 19:38:09 2019 +++ src/external/cddl/osnet/dist/cmd/zfs/zfs_main.c Thu May 13 09:03:35 2021 @@ -6130,7 +6130,7 @@ share_mount(int op, int argc, char **arg break; case 'O': - warnx("no overlay mounts support on FreeBSD, ignoring"); + warnx("no overlay mounts support on NetBSD, ignoring"); break; case ':': (void) fprintf(stderr, gettext("missing argument for "
CVS commit: src/external/cddl/osnet/dist/cmd
Module Name:src Committed By: nia Date: Fri Apr 30 18:59:31 UTC 2021 Modified Files: src/external/cddl/osnet/dist/cmd/zfs: zfs.8 src/external/cddl/osnet/dist/cmd/zpool: zpool.8 Log Message: zfs: Fix up references to FreeBSD To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/dist/cmd/zfs/zfs.8 cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/dist/cmd/zpool/zpool.8 Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/cmd/zfs/zfs.8 diff -u src/external/cddl/osnet/dist/cmd/zfs/zfs.8:1.1 src/external/cddl/osnet/dist/cmd/zfs/zfs.8:1.2 --- src/external/cddl/osnet/dist/cmd/zfs/zfs.8:1.1 Mon Jun 24 08:27:20 2019 +++ src/external/cddl/osnet/dist/cmd/zfs/zfs.8 Fri Apr 30 18:59:30 2021 @@ -285,12 +285,6 @@ .Op Fl FHt .Ar snapshot .Op Ar snapshot Ns | Ns Ar filesystem -.Nm -.Cm jail -.Ar jailid Ns | Ns Ar jailname filesystem -.Nm -.Cm unjail -.Ar jailid Ns | Ns Ar jailname filesystem .Sh DESCRIPTION The .Nm @@ -445,32 +439,6 @@ If a file system's mount point is set to .Tn ZFS makes no attempt to manage the file system, and the administrator is responsible for mounting and unmounting the file system. -.Ss Jails -.No A Tn ZFS -dataset can be attached to a jail by using the -.Qq Nm Cm jail -subcommand. You cannot attach a dataset to one jail and the children of the -same dataset to another jails. To allow management of the dataset from within -a jail, the -.Sy jailed -property has to be set and the jail needs access to the -.Pa /dev/zfs -device. The -.Sy quota -property cannot be changed from within a jail. See -.Xr jail 8 -for information on how to allow mounting -.Tn ZFS -datasets from within a jail. -.Pp -.No A Tn ZFS -dataset can be detached from a jail using the -.Qq Nm Cm unjail -subcommand. -.Pp -After a dataset is attached to a jail and the jailed property is set, a jailed -file system cannot be mounted outside the jail, since the jail administrator -might have set the mount point to an unacceptable value. .Ss Deduplication Deduplication is the process for removing redundant data at the block-level, reducing the total amount of data stored. If a file system has the @@ -1070,7 +1038,7 @@ signature to make sure the block content The .Sy devices property is currently not supported on -.Fx . +.Nx . .It Sy exec Ns = Ns Cm on | off Controls whether processes can be executed from within this file system. The default value is @@ -1079,7 +1047,7 @@ default value is The .Sy mlslabel property is currently not supported on -.Fx . +.Nx . .It Sy filesystem_limit Ns = Ns Ar count | Cm none Limits the number of filesystems and volumes that can exist under this point in the dataset tree. @@ -1118,7 +1086,7 @@ shared file systems are unshared and sha The .Sy nbmand property is currently not supported on -.Fx . +.Nx . .It Sy primarycache Ns = Ns Cm all | none | metadata Controls what is cached in the primary cache (ARC). If this property is set to .Cm all , @@ -1343,7 +1311,7 @@ bit is respected for the file system. Th The .Sy sharesmb property currently has no effect on -.Fx . +.Nx . .It Sy sharenfs Ns = Ns Cm on | off | Ar opts Controls whether the file system is shared via .Tn NFS , @@ -1493,17 +1461,12 @@ during volume creation and pool import. The .Sy vscan property is currently not supported on -.Fx . +.Nx . .It Sy xattr Ns = Ns Cm off | on The .Sy xattr property is currently not supported on -.Fx . -.It Sy jailed Ns = Ns Cm off | on -Controls whether the dataset is managed from a jail. See the -.Qq Sx Jails -section for more information. The default value is -.Cm off . +.Nx . .El .Pp The following three properties cannot be changed after the file system is @@ -2360,7 +2323,7 @@ The default is The default can be changed to include group types. .It Fl i Translate SID to POSIX ID. This flag currently has no effect on -.Fx . +.Nx . .El .It Xo .Nm @@ -2405,7 +2368,7 @@ file systems. Report mount progress. .It Fl O Perform an overlay mount. Overlay mounts are not supported on -.Fx . +.Nx . .It Fl o Ar property Ns Oo , Ns Ar property Oc Ns ... An optional, comma-separated list of mount options to use temporarily for the duration of the mount. See the @@ -2416,7 +2379,7 @@ Mount all available .Tn ZFS file systems. This command may be executed on -.Fx +.Nx system startup by .Pa /etc/rc.d/zfs . For more information, see variable @@ -2467,7 +2430,7 @@ file systems that have the .Sy sharenfs property set. This command may be executed on -.Fx +.Nx system startup by .Pa /etc/rc.d/zfs . For more information, see variable @@ -2500,7 +2463,7 @@ file systems that have the .Sy sharenfs property set. This command may be executed on -.Fx +.Nx system shutdown by .Pa /etc/rc.d/zfs . For more information, see variable @@ -3034,7 +2997,6 @@ protocol .It exec Ta property .It filesystem_limit Ta
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Wed Apr 21 10:02:34 UTC 2021 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: arc.c Log Message: Prevent blocking l2arc_feed_thread() forever, skip the cv_timedwait() for negative or zero ticks. To generate a diff of this commit: cvs rdiff -u -r1.19 -r1.20 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.19 src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.20 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.19 Thu Jun 11 19:20:42 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c Wed Apr 21 10:02:34 2021 @@ -7246,8 +7246,15 @@ l2arc_feed_thread(void *dummy __unused) while (l2arc_thread_exit == 0) { CALLB_CPR_SAFE_BEGIN(); +#ifdef __NetBSD__ + clock_t now = ddi_get_lbolt(); + if (next > now) + (void) cv_timedwait(_feed_thr_cv, + _feed_thr_lock, next - now); +#else (void) cv_timedwait(_feed_thr_cv, _feed_thr_lock, next - ddi_get_lbolt()); +#endif CALLB_CPR_SAFE_END(, _feed_thr_lock); next = ddi_get_lbolt() + hz;
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: christos Date: Thu Apr 15 07:00:50 UTC 2021 Modified Files: src/external/cddl/osnet/sys/sys: opentypes.h Log Message: avoid second typedef for boolean_t in kernel code originally defined in To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/sys/sys/opentypes.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/opentypes.h diff -u src/external/cddl/osnet/sys/sys/opentypes.h:1.5 src/external/cddl/osnet/sys/sys/opentypes.h:1.6 --- src/external/cddl/osnet/sys/sys/opentypes.h:1.5 Wed Dec 4 22:21:42 2019 +++ src/external/cddl/osnet/sys/sys/opentypes.h Thu Apr 15 03:00:50 2021 @@ -36,7 +36,9 @@ typedef id_t ctid_t; #define B_FALSE 0 #define B_TRUE 1 +#ifndef _KERNEL typedef int boolean_t; +#endif #ifndef __defined_hr_t #define __defined_hr_t
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: christos Date: Thu Apr 15 06:59:57 UTC 2021 Modified Files: src/external/cddl/osnet/sys/sys: vnode.h Log Message: remove extra typedef for vnode_t done in To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/external/cddl/osnet/sys/sys/vnode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/vnode.h diff -u src/external/cddl/osnet/sys/sys/vnode.h:1.17 src/external/cddl/osnet/sys/sys/vnode.h:1.18 --- src/external/cddl/osnet/sys/sys/vnode.h:1.17 Tue May 26 04:39:27 2020 +++ src/external/cddl/osnet/sys/sys/vnode.h Thu Apr 15 02:59:57 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode.h,v 1.17 2020/05/26 08:39:27 hannken Exp $ */ +/* $NetBSD: vnode.h,v 1.18 2021/04/15 06:59:57 christos Exp $ */ /* * CDDL HEADER START @@ -99,10 +99,7 @@ #ifdef _KERNEL -struct vnode; struct vattr; - -typedef struct vnode vnode_t; typedef struct vattr vattr_t; typedef enum vtype vtype_t;
CVS commit: src/external/cddl/osnet/usr.bin/ctfconvert
Module Name:src Committed By: mrg Date: Tue Apr 13 09:28:42 UTC 2021 Modified Files: src/external/cddl/osnet/usr.bin/ctfconvert: Makefile Log Message: ignore a "should be impossible" uninitialised variable error. To generate a diff of this commit: cvs rdiff -u -r1.9 -r1.10 src/external/cddl/osnet/usr.bin/ctfconvert/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/usr.bin/ctfconvert/Makefile diff -u src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.9 src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.10 --- src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.9 Sun Feb 9 07:55:13 2020 +++ src/external/cddl/osnet/usr.bin/ctfconvert/Makefile Tue Apr 13 09:28:42 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.9 2020/02/09 07:55:13 fox Exp $ +# $NetBSD: Makefile,v 1.10 2021/04/13 09:28:42 mrg Exp $ # $FreeBSD: head/cddl/usr.bin/ctfconvert/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -37,5 +37,6 @@ SRCS= alist.c \ COPTS.dwarf.c += ${GCC_NO_STRINGOP_TRUNCATION} COPTS.st_parse.c += -Wno-format-nonliteral COPTS.util.c += -Wno-format-nonliteral +COPTS.st_parse.c += ${GCC_NO_MAYBE_UNINITIALIZED} .include
CVS commit: src/external/cddl/osnet/lib/libdtrace
Module Name:src Committed By: mrg Date: Tue Apr 13 09:20:55 UTC 2021 Modified Files: src/external/cddl/osnet/lib/libdtrace: Makefile Log Message: XXX: ignore warning about overlapping buffers for sprintf(). To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/external/cddl/osnet/lib/libdtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/lib/libdtrace/Makefile diff -u src/external/cddl/osnet/lib/libdtrace/Makefile:1.29 src/external/cddl/osnet/lib/libdtrace/Makefile:1.30 --- src/external/cddl/osnet/lib/libdtrace/Makefile:1.29 Mon Mar 29 05:18:02 2021 +++ src/external/cddl/osnet/lib/libdtrace/Makefile Tue Apr 13 09:20:55 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.29 2021/03/29 05:18:02 simonb Exp $ +# $NetBSD: Makefile,v 1.30 2021/04/13 09:20:55 mrg Exp $ # $FreeBSD: head/cddl/lib/libdtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -145,4 +145,6 @@ beforedepend: dt_errtags.c dt_names.c LIBDPLIBS= proc ${NETBSDSRCDIR}/external/bsd/libproc/lib +COPTS.dt_link.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-restrict :} + .include
CVS commit: src/external/cddl/osnet
Module Name:src Committed By: mrg Date: Tue Apr 13 04:52:01 UTC 2021 Modified Files: src/external/cddl/osnet: Makefile.inc Makefile.zfs Log Message: use -fcommon here. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/Makefile.inc cvs rdiff -u -r1.9 -r1.10 src/external/cddl/osnet/Makefile.zfs Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/Makefile.inc diff -u src/external/cddl/osnet/Makefile.inc:1.5 src/external/cddl/osnet/Makefile.inc:1.6 --- src/external/cddl/osnet/Makefile.inc:1.5 Sat Jun 29 20:50:01 2019 +++ src/external/cddl/osnet/Makefile.inc Tue Apr 13 04:52:00 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.inc,v 1.5 2019/06/29 20:50:01 sevan Exp $ +# $NetBSD: Makefile.inc,v 1.6 2021/04/13 04:52:00 mrg Exp $ # $FreeBSD: head/cddl/Makefile.inc 270358 2014-08-22 20:04:51Z delphij $ WARNS?=5 @@ -9,3 +9,5 @@ OPENSOLARIS_USR_DISTDIR=${OSNETDIR}/dist OPENSOLARIS_SYS_DISTDIR=${OSNETDIR}/dist CPPFLAGS+=-Wno-unknown-pragmas -Wno-sign-compare -D_KERNTYPES + +COPTS+= -fcommon Index: src/external/cddl/osnet/Makefile.zfs diff -u src/external/cddl/osnet/Makefile.zfs:1.9 src/external/cddl/osnet/Makefile.zfs:1.10 --- src/external/cddl/osnet/Makefile.zfs:1.9 Sat Jun 22 09:48:39 2019 +++ src/external/cddl/osnet/Makefile.zfs Tue Apr 13 04:52:00 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.zfs,v 1.9 2019/06/22 09:48:39 hannken Exp $ +# $NetBSD: Makefile.zfs,v 1.10 2021/04/13 04:52:00 mrg Exp $ .include @@ -56,3 +56,5 @@ LIBUUTIL_SRCDIR= ${ZFSDIR}/lib/libuutil LIBZFS_SRCDIR= ${ZFSDIR}/lib/libzfs LIBZFS_CORE_SRCDIR= ${ZFSDIR}/lib/libzfs_core LIBZPOOL_SRCDIR= ${ZFSDIR}/lib/libzpool + +COPTS+= -fcommon
CVS commit: src/external/cddl/osnet/dev/dtrace/mips
Module Name:src Committed By: simonb Date: Wed Apr 7 01:54:32 UTC 2021 Modified Files: src/external/cddl/osnet/dev/dtrace/mips: dtrace_isa.c Log Message: Use NAL (nop-and-link) to get the current PC. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c diff -u src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c:1.1 src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c:1.2 --- src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c:1.1 Mon Mar 29 05:17:09 2021 +++ src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c Wed Apr 7 01:54:31 2021 @@ -107,9 +107,8 @@ dtrace_getpcstack(pc_t *pcstack, int pcs ra = (register_t)(intptr_t)__builtin_return_address(0); __asm __volatile( - "jal 99f\n" - "nop\n" - "99:\n" + "nal\n" + " nop\n" "move %0, $31\n" /* get ra */ "move $31, %1\n" /* restore ra */ : "=r" (pc)
CVS commit: src/external/cddl/osnet/dev/dtrace
Module Name:src Committed By: simonb Date: Tue Apr 6 12:48:59 UTC 2021 Modified Files: src/external/cddl/osnet/dev/dtrace/amd64: dtrace_subr.c src/external/cddl/osnet/dev/dtrace/arm: dtrace_subr.c src/external/cddl/osnet/dev/dtrace/i386: dtrace_subr.c Log Message: sizeof(*var) instead of sizeof(type) To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 \ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c cvs rdiff -u -r1.12 -r1.13 \ src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.14 src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.15 --- src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c:1.14 Fri Nov 8 11:06:21 2019 +++ src/external/cddl/osnet/dev/dtrace/amd64/dtrace_subr.c Tue Apr 6 12:48:59 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dtrace_subr.c,v 1.14 2019/11/08 11:06:21 hannken Exp $ */ +/* $NetBSD: dtrace_subr.c,v 1.15 2021/04/06 12:48:59 simonb Exp $ */ /* * CDDL HEADER START @@ -78,7 +78,7 @@ dtrace_invop_add(int (*func)(uintptr_t, { dtrace_invop_hdlr_t *hdlr; - hdlr = kmem_alloc(sizeof (dtrace_invop_hdlr_t), KM_SLEEP); + hdlr = kmem_alloc(sizeof(*hdlr), KM_SLEEP); hdlr->dtih_func = func; hdlr->dtih_next = dtrace_invop_hdlr; dtrace_invop_hdlr = hdlr; @@ -108,7 +108,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, sizeof (dtrace_invop_hdlr_t)); + kmem_free(hdlr, sizeof(*hdlr)); } /*ARGSUSED*/ Index: src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c:1.4 src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c:1.5 --- src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c:1.4 Mon May 28 21:05:03 2018 +++ src/external/cddl/osnet/dev/dtrace/arm/dtrace_subr.c Tue Apr 6 12:48:59 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dtrace_subr.c,v 1.4 2018/05/28 21:05:03 chs Exp $ */ +/* $NetBSD: dtrace_subr.c,v 1.5 2021/04/06 12:48:59 simonb Exp $ */ /* * CDDL HEADER START @@ -94,7 +94,7 @@ dtrace_invop_add(int (*func)(uintptr_t, { dtrace_invop_hdlr_t *hdlr; - hdlr = kmem_alloc(sizeof (dtrace_invop_hdlr_t), KM_SLEEP); + hdlr = kmem_alloc(sizeof(*hdlr), KM_SLEEP); hdlr->dtih_func = func; hdlr->dtih_next = dtrace_invop_hdlr; dtrace_invop_hdlr = hdlr; @@ -124,7 +124,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, sizeof (dtrace_invop_hdlr_t)); + kmem_free(hdlr, sizeof(*hdlr)); } /*ARGSUSED*/ Index: src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c:1.12 src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c:1.13 --- src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c:1.12 Wed Feb 13 08:46:40 2019 +++ src/external/cddl/osnet/dev/dtrace/i386/dtrace_subr.c Tue Apr 6 12:48:59 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: dtrace_subr.c,v 1.12 2019/02/13 08:46:40 rin Exp $ */ +/* $NetBSD: dtrace_subr.c,v 1.13 2021/04/06 12:48:59 simonb Exp $ */ /* * CDDL HEADER START @@ -86,7 +86,7 @@ dtrace_invop_add(int (*func)(uintptr_t, { dtrace_invop_hdlr_t *hdlr; - hdlr = kmem_alloc(sizeof (dtrace_invop_hdlr_t), KM_SLEEP); + hdlr = kmem_alloc(sizeof(*hdlr), KM_SLEEP); hdlr->dtih_func = func; hdlr->dtih_next = dtrace_invop_hdlr; dtrace_invop_hdlr = hdlr; @@ -116,7 +116,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, sizeof (dtrace_invop_hdlr_t)); + kmem_free(hdlr, sizeof(*hdlr)); } void
CVS commit: src/external/cddl/osnet/dev/dtrace/aarch64
Module Name:src Committed By: simonb Date: Tue Apr 6 12:48:36 UTC 2021 Modified Files: src/external/cddl/osnet/dev/dtrace/aarch64: dtrace_subr.c Log Message: sizeof(*var) instead of sizeof(type) Call kmem_free() with size of data being freed. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.4 src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.5 --- src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.4 Thu Nov 12 02:15:56 2020 +++ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Tue Apr 6 12:48:36 2021 @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.4 2020/11/12 02:15:56 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.5 2021/04/06 12:48:36 simonb Exp $"); #include #include @@ -87,7 +87,7 @@ dtrace_invop_add(int (*func)(uintptr_t, { dtrace_invop_hdlr_t *hdlr; - hdlr = kmem_alloc(sizeof (dtrace_invop_hdlr_t), KM_SLEEP); + hdlr = kmem_alloc(sizeof(*hdlr), KM_SLEEP); hdlr->dtih_func = func; hdlr->dtih_next = dtrace_invop_hdlr; dtrace_invop_hdlr = hdlr; @@ -120,7 +120,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, 0); + kmem_free(hdlr, sizeof(*hdlr)); } /*ARGSUSED*/
CVS commit: src/external/cddl/osnet/dev/dtrace/mips
Module Name:src Committed By: christos Date: Tue Apr 6 12:10:21 UTC 2021 Modified Files: src/external/cddl/osnet/dev/dtrace/mips: dtrace_subr.c Log Message: sizeof(*var) instead of sizeof(type) To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.2 src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.3 --- src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.2 Tue Apr 6 04:19:15 2021 +++ src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c Tue Apr 6 08:10:21 2021 @@ -88,7 +88,7 @@ dtrace_invop_add(int (*func)(uintptr_t, { dtrace_invop_hdlr_t *hdlr; - hdlr = kmem_alloc(sizeof (dtrace_invop_hdlr_t), KM_SLEEP); + hdlr = kmem_alloc(sizeof(*hdlr), KM_SLEEP); hdlr->dtih_func = func; hdlr->dtih_next = dtrace_invop_hdlr; dtrace_invop_hdlr = hdlr; @@ -121,7 +121,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, sizeof (dtrace_invop_hdlr_t)); + kmem_free(hdlr, sizeof(*hdlr)); } /*ARGSUSED*/
CVS commit: src/external/cddl/osnet/dev/dtrace/mips
Module Name:src Committed By: simonb Date: Tue Apr 6 08:19:15 UTC 2021 Modified Files: src/external/cddl/osnet/dev/dtrace/mips: dtrace_subr.c Log Message: Call kmem_free() with the size of the thing we are freeing. Fixes panic when unloading the ktrace module on MIPS. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.1 src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.2 --- src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c:1.1 Mon Mar 29 05:17:09 2021 +++ src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c Tue Apr 6 08:19:15 2021 @@ -121,7 +121,7 @@ dtrace_invop_remove(int (*func)(uintptr_ prev->dtih_next = hdlr->dtih_next; } - kmem_free(hdlr, 0); + kmem_free(hdlr, sizeof (dtrace_invop_hdlr_t)); } /*ARGSUSED*/
CVS commit: src/external/cddl/osnet/sbin
Module Name:src Committed By: simonb Date: Wed Mar 31 06:27:58 UTC 2021 Modified Files: src/external/cddl/osnet/sbin/zfs: Makefile src/external/cddl/osnet/sbin/zpool: Makefile Log Message: Use compat/exec.mk - zfs isn't compat32 friendly (yet?). To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/sbin/zfs/Makefile cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/sbin/zpool/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sbin/zfs/Makefile diff -u src/external/cddl/osnet/sbin/zfs/Makefile:1.5 src/external/cddl/osnet/sbin/zfs/Makefile:1.6 --- src/external/cddl/osnet/sbin/zfs/Makefile:1.5 Sun Sep 15 19:38:09 2019 +++ src/external/cddl/osnet/sbin/zfs/Makefile Wed Mar 31 06:27:58 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2019/09/15 19:38:09 brad Exp $ +# $NetBSD: Makefile,v 1.6 2021/03/31 06:27:58 simonb Exp $ .include "../../Makefile.zfs" @@ -30,4 +30,6 @@ LDADD+= -lm -lutil -lpthread .PATH: ${.CURDIR} .PATH: ${ZFSDIR}/dist/cmd/zfs +.include "../../compat/exec.mk" + .include Index: src/external/cddl/osnet/sbin/zpool/Makefile diff -u src/external/cddl/osnet/sbin/zpool/Makefile:1.6 src/external/cddl/osnet/sbin/zpool/Makefile:1.7 --- src/external/cddl/osnet/sbin/zpool/Makefile:1.6 Mon May 28 21:05:09 2018 +++ src/external/cddl/osnet/sbin/zpool/Makefile Wed Mar 31 06:27:58 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.6 2018/05/28 21:05:09 chs Exp $ +# $NetBSD: Makefile,v 1.7 2021/03/31 06:27:58 simonb Exp $ .include "../../Makefile.zfs" @@ -36,4 +36,6 @@ LDADD+= -lm -lutil -lpthread .PATH: ${ZFSDIR}/dist/cmd/zpool +.include "../../compat/exec.mk" + .include
CVS commit: src/external/cddl/osnet/dist/tools/ctf/cvt
Module Name:src Committed By: simonb Date: Wed Mar 31 06:26:27 UTC 2021 Modified Files: src/external/cddl/osnet/dist/tools/ctf/cvt: dwarf.c Log Message: Simplify the CTF float encoding type logic: all floating point types of 4 bytes or less are "float", 8 bytes or less are "double" and 16 bytes or less are "long double". Make ctfconvert much happier with N32 ABI where we have 4 byte pointers and 16 byte long doubles. Will also help ctfconvert if ever used on m68k or 32-bit RISC-V. @christos: LGTM To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c diff -u src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c:1.25 src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c:1.26 --- src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c:1.25 Mon May 28 21:05:06 2018 +++ src/external/cddl/osnet/dist/tools/ctf/cvt/dwarf.c Wed Mar 31 06:26:27 2021 @@ -1419,41 +1419,53 @@ die_base_name_parse(const char *name, ch return (intr); } +/* + * Return the CTF float encoding type. The logic is all floating + * point types of 4 bytes or less are "float", 8 bytes or less are + * "double" and 16 bytes or less are "long double". Anything bigger + * will error. + */ +#define FLOAT_SIZE_SINGLE 4 +#define FLOAT_SIZE_DOUBLE 8 +#define FLOAT_SIZE_LONG_DOUBLE 16 + typedef struct fp_size_map { - size_t fsm_typesz[2]; /* size of {32,64} type */ + size_t fsm_typesz; /* size of type */ uint_t fsm_enc[3]; /* CTF_FP_* for {bare,cplx,imagry} type */ } fp_size_map_t; static const fp_size_map_t fp_encodings[] = { - { { 4, 4 }, { CTF_FP_SINGLE, CTF_FP_CPLX, CTF_FP_IMAGRY } }, - { { 8, 8 }, { CTF_FP_DOUBLE, CTF_FP_DCPLX, CTF_FP_DIMAGRY } }, -#ifdef __sparc - { { 16, 16 }, { CTF_FP_LDOUBLE, CTF_FP_LDCPLX, CTF_FP_LDIMAGRY } }, -#else - { { 12, 16 }, { CTF_FP_LDOUBLE, CTF_FP_LDCPLX, CTF_FP_LDIMAGRY } }, -#endif - { { 0, 0 }, { 0, 0, 0 } } + { FLOAT_SIZE_SINGLE, { CTF_FP_SINGLE, CTF_FP_CPLX, CTF_FP_IMAGRY } }, + { FLOAT_SIZE_DOUBLE, { CTF_FP_DOUBLE, CTF_FP_DCPLX, CTF_FP_DIMAGRY } }, + { FLOAT_SIZE_LONG_DOUBLE, + { CTF_FP_LDOUBLE, CTF_FP_LDCPLX, CTF_FP_LDIMAGRY } }, + { 0, { 0, 0, 0 } } }; static uint_t die_base_type2enc(dwarf_t *dw, Dwarf_Off off, Dwarf_Signed enc, size_t sz) { const fp_size_map_t *map = fp_encodings; - uint_t szidx = dw->dw_ptrsz == sizeof (uint64_t); uint_t mult = 1, col = 0; - if (enc == DW_ATE_complex_float) { + switch (enc) { + case DW_ATE_complex_float: +#if defined(DW_ATE_SUN_interval_float) + case DW_ATE_SUN_interval_float: +#endif mult = 2; col = 1; - } else if (enc == DW_ATE_imaginary_float -#if defined(sun) - || enc == DW_ATE_SUN_imaginary_float + break; + case DW_ATE_imaginary_float: +#if defined(DW_ATE_SUN_imaginary_float) + case DW_ATE_SUN_imaginary_float: #endif - ) col = 2; + break; + } - while (map->fsm_typesz[szidx] != 0) { - if (map->fsm_typesz[szidx] * mult == sz) + while (map->fsm_typesz != 0) { + if (sz <= map->fsm_typesz * mult) return (map->fsm_enc[col]); map++; }
CVS commit: src/external/cddl/osnet/lib/libdtrace
Module Name:src Committed By: simonb Date: Mon Mar 29 05:18:02 UTC 2021 Modified Files: src/external/cddl/osnet/lib/libdtrace: Makefile Log Message: Compile MIPS specific code. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/external/cddl/osnet/lib/libdtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/lib/libdtrace/Makefile diff -u src/external/cddl/osnet/lib/libdtrace/Makefile:1.28 src/external/cddl/osnet/lib/libdtrace/Makefile:1.29 --- src/external/cddl/osnet/lib/libdtrace/Makefile:1.28 Tue Mar 17 01:36:29 2020 +++ src/external/cddl/osnet/lib/libdtrace/Makefile Mon Mar 29 05:18:02 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.28 2020/03/17 01:36:29 fox Exp $ +# $NetBSD: Makefile,v 1.29 2021/03/29 05:18:02 simonb Exp $ # $FreeBSD: head/cddl/lib/libdtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -115,6 +115,9 @@ CPPFLAGS+= -I${OPENSOLARIS_SYS_DISTDIR}/ .elif ${MACHINE_CPU} == "arm" CPPFLAGS+= -I${OPENSOLARIS_SYS_DISTDIR}/uts/arm .PATH: ${.CURDIR}/../../dist/lib/libdtrace/arm +.elif ${MACHINE_CPU} == "mips" +CPPFLAGS+= -I${OPENSOLARIS_SYS_DISTDIR}/uts/mips +.PATH: ${.CURDIR}/../../dist/lib/libdtrace/mips .endif COPTS.dt_link.c += ${GCC_NO_FORMAT_TRUNCATION}
CVS commit: src/external/cddl/osnet/dev
Module Name:src Committed By: simonb Date: Mon Mar 29 05:17:09 UTC 2021 Added Files: src/external/cddl/osnet/dev/dtrace/mips: dtrace_asm.S dtrace_isa.c dtrace_subr.c regset.h src/external/cddl/osnet/dev/fbt/mips: fbt_isa.c fbt_isa.h Log Message: Work in progress dtrace for MIPS. MIPS support mostly copied from FreeBSD, with NetBSD-specific changes largely based on aarch64 dtrace support. Working well enough for system call tracing. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/external/cddl/osnet/dev/dtrace/mips/dtrace_asm.S \ src/external/cddl/osnet/dev/dtrace/mips/dtrace_isa.c \ src/external/cddl/osnet/dev/dtrace/mips/dtrace_subr.c \ src/external/cddl/osnet/dev/dtrace/mips/regset.h cvs rdiff -u -r0 -r1.1 src/external/cddl/osnet/dev/fbt/mips/fbt_isa.c \ src/external/cddl/osnet/dev/fbt/mips/fbt_isa.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/external/cddl/osnet/dev/dtrace/mips/dtrace_asm.S diff -u /dev/null src/external/cddl/osnet/dev/dtrace/mips/dtrace_asm.S:1.1 --- /dev/null Mon Mar 29 05:17:09 2021 +++ src/external/cddl/osnet/dev/dtrace/mips/dtrace_asm.S Mon Mar 29 05:17:09 2021 @@ -0,0 +1,233 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License, Version 1.0 only + * (the "License"). You may not use this file except in compliance + * with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [] [name of copyright owner] + * + * CDDL HEADER END + * + * $FreeBSD$ + */ +/* + * Copyright 2004 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#define _ASM +#define _LOCORE + +#include +#include + +#include +#include +#include + +.setnoreorder # Noreorder is default style! + +/* + * Primitives + */ + +.text + +/* +void dtrace_membar_producer(void) +*/ +LEAF(dtrace_membar_producer) + j ra + nop +END(dtrace_membar_producer) + +/* +void dtrace_membar_consumer(void) +*/ +LEAF(dtrace_membar_consumer) + j ra + nop +END(dtrace_membar_consumer) + +/* +dtrace_icookie_t dtrace_interrupt_disable(void) +*/ +LEAF(dtrace_interrupt_disable) + mfc0 t0, MIPS_COP_0_STATUS + move v0, t0 + and v0, v0, MIPS_SR_INT_IE + and t0, t0, ~MIPS_SR_INT_IE + mtc0 t0, MIPS_COP_0_STATUS + j ra + nop +END(dtrace_interrupt_disable) + +/* +void dtrace_interrupt_enable(dtrace_icookie_t cookie) +*/ +LEAF(dtrace_interrupt_enable) + mfc0 t0, MIPS_COP_0_STATUS + beqz a0, not_enabled + or t0, t0, MIPS_SR_INT_IE + mtc0 t0, MIPS_COP_0_STATUS +not_enabled: + j ra + nop +END(dtrace_interrupt_enable) + +/* +uint32_t dtrace_cas32(uint32_t *target, uint32_t cmp, uint32_t new) +*/ +LEAF(dtrace_cas32) +1: + move t1, a2 + ll t0, 0(a0) + bne t0, a1, 2f + nop + sc t1, 0(a0) + beqz t1, 1b + nop +2: move v0, t0 + j ra + nop +END(dtrace_cas32) + +/* +void * +dtrace_casptr(void *target, void *cmp, void *new) +*/ +LEAF(dtrace_casptr) +1: + move t1, a2 + PTR_LL t0, 0(a0) + bne t0, a1, 2f + nop + PTR_SC t1, 0(a0) + beqz t1, 1b + nop +2: move v0, t0 + j ra + nop +END(dtrace_casptr) + + +/* +uintptr_t +dtrace_fulword(void *addr) +*/ +LEAF(dtrace_fulword) +END(dtrace_fulword) + +/* +uint8_t +dtrace_fuword8_nocheck(void *addr) +*/ +LEAF(dtrace_fuword8_nocheck) + lbu v0, 0(a0) + j ra + nop +END(dtrace_fuword8_nocheck) + +/* +uint16_t +dtrace_fuword16_nocheck(void *addr) +*/ +LEAF(dtrace_fuword16_nocheck) + lhu v0, 0(a0) + j ra + nop +END(dtrace_fuword16_nocheck) + +/* +uint32_t +dtrace_fuword32_nocheck(void *addr) +*/ +LEAF(dtrace_fuword32_nocheck) + lw v0, 0(a0) + j ra + nop +END(dtrace_fuword32_nocheck) + +/* +uint64_t +dtrace_fuword64_nocheck(void *addr) +*/ +LEAF(dtrace_fuword64_nocheck) +#if defined(__mips_n64) || defined(__mips_n32) + ld v0, 0(a0) +#else + lw v1,4(a0) + lw v0,0(a0) +#endif + j ra + nop +END(dtrace_fuword64_nocheck) + +/* +XXX: unoptimized +void +dtrace_copy(uintptr_t src, uintptr_t dest, size_t size) +*/ +LEAF(dtrace_copy) +1: + beqz a2, 2f + nop + lbu t0, 0(a0) + sb t0, 0(a1) + PTR_ADDU a0, a0, 1 + PTR_ADDU a1, a1, 1 + INT_SUBU a2, a2, 1 + j 1b + nop +2: + j ra + nop +END(dtrace_copy) + +/* +XXX: Unoptimized. Check for flags on page boundaries only(?) +void +dtrace_copystr(uintptr_t uaddr, uintptr_t kaddr, size_t size, +volatile uint16_t *flags) +*/ +LEAF(dtrace_copystr) +1: + lbu t0, 0(a0) + sb t0,
CVS commit: src/external/cddl/osnet/dev/cyclic/mips
Module Name:src Committed By: simonb Date: Mon Mar 29 03:27:38 UTC 2021 Added Files: src/external/cddl/osnet/dev/cyclic/mips: cyclic_machdep.c Log Message: Add cyclic_machdep.c for MIPS The code is identical to i386's one. To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 \ src/external/cddl/osnet/dev/cyclic/mips/cyclic_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Added files: Index: src/external/cddl/osnet/dev/cyclic/mips/cyclic_machdep.c diff -u /dev/null src/external/cddl/osnet/dev/cyclic/mips/cyclic_machdep.c:1.1 --- /dev/null Mon Mar 29 03:27:38 2021 +++ src/external/cddl/osnet/dev/cyclic/mips/cyclic_machdep.c Mon Mar 29 03:27:38 2021 @@ -0,0 +1,148 @@ +/* $NetBSD: cyclic_machdep.c,v 1.1 2021/03/29 03:27:38 simonb Exp $ */ + +/*- + * Copyright 2006-2008 John Birrell + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD: head/sys/cddl/dev/cyclic/i386/cyclic_machdep.c 222813 2011-06-07 08:46:13Z attilio $ + * + */ + +static void enable(cyb_arg_t); +static void disable(cyb_arg_t); +static void reprogram(cyb_arg_t, hrtime_t); +static void xcall(cyb_arg_t, cpu_t *, cyc_func_t, void *); + +static cyc_backend_t be = { + NULL, /* cyb_configure */ + NULL, /* cyb_unconfigure */ + enable, + disable, + reprogram, + xcall, + NULL /* cyb_arg_t cyb_arg */ +}; + +static void +cyclic_ap_start(void *dummy) +{ + /* Initialise the rest of the CPUs. */ + cyclic_mp_init(); +} + +SYSINIT(cyclic_ap_start, SI_SUB_SMP, SI_ORDER_ANY, cyclic_ap_start, NULL); + +/* + * Machine dependent cyclic subsystem initialisation. + */ +static void +cyclic_machdep_init(void) +{ + /* Register the cyclic backend. */ + cyclic_init(); +#ifdef __NetBSD__ + cyclic_ap_start(NULL); +#endif +} + +static void +cyclic_machdep_uninit(void) +{ + int i; + + for (i = 0; i <= mp_maxid; i++) + /* Reset the cyclic clock callback hook. */ + cyclic_clock_func[i] = NULL; + + /* De-register the cyclic backend. */ + cyclic_uninit(); +} + +static hrtime_t exp_due[MAXCPU]; + +/* + * This function is the one registered by the machine dependent + * initialiser as the callback for high speed timer events. + */ +static void +cyclic_clock(struct clockframe *frame) +{ + cpu_t *c = _cpu[cpu_number()]; + + if (c->cpu_cyclic != NULL && gethrtime() >= exp_due[cpu_number()]) { + if (TRAPF_USERMODE(frame)) { + c->cpu_profile_pc = 0; + c->cpu_profile_upc = TRAPF_PC(frame); + } else { + c->cpu_profile_pc = TRAPF_PC(frame); + c->cpu_profile_upc = 0; + } + + c->cpu_intr_actv = 1; + + /* Fire any timers that are due. */ + cyclic_fire(c); + + c->cpu_intr_actv = 0; + } +} + +static void enable(cyb_arg_t arg) +{ + /* Register the cyclic clock callback function. */ + cyclic_clock_func[cpu_number()] = cyclic_clock; +} + +static void disable(cyb_arg_t arg) +{ + /* Reset the cyclic clock callback function. */ + cyclic_clock_func[cpu_number()] = NULL; +} + +static void reprogram(cyb_arg_t arg, hrtime_t exp) +{ + exp_due[cpu_number()] = exp; +} + +#ifdef __NetBSD__ +static void xcall_func(void *arg0, void *arg1) +{ + cyc_func_t func; + + func = arg0; + (*func)(arg1); +} +#endif + +static void xcall(cyb_arg_t arg, cpu_t *c, cyc_func_t func, void *param) +{ +#ifdef __NetBSD__ + uint64_t xc; + + xc = xc_unicast(XC_HIGHPRI, xcall_func, func, param, cpu_lookup(c->cpuid)); + xc_wait(xc); +#else + smp_rendezvous_cpus((cpumask_t) (1 << c->cpuid), + smp_no_rendevous_barrier, func, smp_no_rendevous_barrier, param); +#endif +}
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: simonb Date: Mon Mar 29 01:43:18 UTC 2021 Modified Files: src/external/cddl/osnet/sys/sys: mutex_impl.h Log Message: Don't define mtx_owner here. mtx_owner is always available, and not all architecutres use the same structure for a kernel mutex. OK thorpej@ To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/sys/sys/mutex_impl.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/mutex_impl.h diff -u src/external/cddl/osnet/sys/sys/mutex_impl.h:1.1 src/external/cddl/osnet/sys/sys/mutex_impl.h:1.2 --- src/external/cddl/osnet/sys/sys/mutex_impl.h:1.1 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/mutex_impl.h Mon Mar 29 01:43:18 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mutex_impl.h,v 1.1 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: mutex_impl.h,v 1.2 2021/03/29 01:43:18 simonb Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -35,7 +35,6 @@ #define __MUTEX_PRIVATE #include -#define mtx_owner u.mtxa_owner #define MUTEX_THREAD ((uintptr_t)-16L) #define MUTEX_OWNER(mtx) \ ((mtx)->mtx_owner & MUTEX_THREAD)
CVS commit: src/external/cddl/osnet/usr.sbin/dtrace
Module Name:src Committed By: simonb Date: Sat Mar 27 02:58:39 UTC 2021 Modified Files: src/external/cddl/osnet/usr.sbin/dtrace: Makefile Log Message: Use LDADD/DPADD instead of PROGDPLIBS - we are linking against installed libraries. Use compat/exec.mk - dtrace isn't compat32 friendly (yet?). To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/external/cddl/osnet/usr.sbin/dtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/usr.sbin/dtrace/Makefile diff -u src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.14 src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.15 --- src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.14 Sat Apr 4 13:15:48 2020 +++ src/external/cddl/osnet/usr.sbin/dtrace/Makefile Sat Mar 27 02:58:39 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.14 2020/04/04 13:15:48 christos Exp $ +# $NetBSD: Makefile,v 1.15 2021/03/27 02:58:39 simonb Exp $ # $FreeBSD: head/cddl/usr.sbin/dtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -39,13 +39,9 @@ COPTS.dtrace.c += -Wno-missing-field-ini COPTS.dtrace.c += -Wno-format LDFLAGS+= -pthread +LDADD+= -lctf -ldtrace -lelf -lproc -ly -ll -lz +DPADD+= ${LIBCTF} ${LIBDTRACE} ${LIBELF} ${LIBPROC} ${LIBY} ${LIBL} ${LIBZ} -PROGDPLIBS+= ctf ${.CURDIR}/../../lib/libctf -PROGDPLIBS+= dtrace ${.CURDIR}/../../lib/libdtrace -PROGDPLIBS+= elf ${NETBSDSRCDIR}/external/bsd/elftoolchain/lib/libelf -PROGDPLIBS+= proc ${NETBSDSRCDIR}/external/bsd/libproc/lib -PROGDPLIBS+= y ${NETBSDSRCDIR}/lib/liby -PROGDPLIBS+= l ${NETBSDSRCDIR}/external/bsd/flex/lib -PROGDPLIBS+= z ${NETBSDSRCDIR}/lib/libz +.include "../../compat/exec.mk" .include
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: gdt Date: Thu Mar 25 18:41:29 UTC 2021 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_ioctl.c Log Message: zfs_ioctl.c: Drop WARNING that ZFS is under development Following discussions on current-users@, it seems many rely on ZFS to store data, and there are not particularly large issues with ZFS. ATF tests with /tmp as tmpfs, ffs2, and zfs are similar, with only a slight increase in failures under zfs. (This commit should probably NOT be pulled up to 9.) To generate a diff of this commit: cvs rdiff -u -r1.22 -r1.23 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.22 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.23 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.22 Fri Feb 28 03:52:26 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c Thu Mar 25 18:41:29 2021 @@ -7194,7 +7194,6 @@ zfs_modcmd(modcmd_t cmd, void *arg) /* XXXNETBSD trim is not supported yet */ zfs_trim_enabled = B_FALSE; - printf("WARNING: ZFS on NetBSD is under development\n"); availrmem = (uint64_t)physmem * PAGE_SIZE / 1048576; if (availrmem < ZFS_MIN_MEGS * 80 / 100) { printf("ERROR: at least %dMB of memory required to "
CVS commit: src/external/cddl/osnet/dev/fbt/aarch64
Module Name:src Committed By: simonb Date: Wed Mar 24 04:46:41 UTC 2021 Modified Files: src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c fbt_isa.h Log Message: Add NetBSD CVS IDs. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.6 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.7 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.6 Wed Feb 12 06:05:31 2020 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Mar 24 04:46:41 2021 @@ -1,3 +1,5 @@ +/* $NetBSD: fbt_isa.c,v 1.7 2021/03/24 04:46:41 simonb Exp $ */ + /* * CDDL HEADER START * Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h:1.1 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h:1.2 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h:1.1 Tue Dec 3 22:10:56 2019 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h Wed Mar 24 04:46:41 2021 @@ -1,3 +1,5 @@ +/* $NetBSD: fbt_isa.h,v 1.2 2021/03/24 04:46:41 simonb Exp $ */ + /* * CDDL HEADER START *
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys
Module Name:src Committed By: hannken Date: Tue Feb 16 09:54:17 UTC 2021 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys: zfs_context.h Log Message: Use the right uid / gid for nobody:nobody like FreeBSD does. Prevents null pointer dereferences when ZFS replaces this illegal (according to IS_EPHEMERAL()) id with another illegal id in operation zfs_fuid_create_cred() and finally zfs_log_create() dereferences fuidp being NULL. Adresses PR misc/55042 (Panic when creating a directory on a NFS served ZFS) To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h:1.3 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h:1.2 Sat Jun 22 09:48:39 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/sys/zfs_context.h Tue Feb 16 09:54:17 2021 @@ -157,13 +157,13 @@ extern "C" { #define fm_panic panic #define getffd_getfile #define getminor(a) minor(a) -#define GID_NOBODY (-2) +#define GID_NOBODY (39) #define issig(x) (sigispending(curlwp, 0)) #define kmem_debugging() 0 #define releasef fd_putfile #define strfree(str) kmem_free((str), strlen(str)+1) #define td_rul_ru -#define UID_NOBODY (-2) +#define UID_NOBODY (32767) #define vnode_pager_setsize(vp, size) zfs_netbsd_setsize(vp, size) #define zone_get_hostid(a) 0
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: yhardy Date: Sat Nov 28 22:53:06 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: Use vn_close to release the vnodes in the error handling blocks, since the vnodes were opened for writing. Fix proposed on current-users and improved by hannken@. To generate a diff of this commit: cvs rdiff -u -r1.18 -r1.19 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.18 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.19 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.18 Thu Jun 25 09:39:15 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Sat Nov 28 22:53:06 2020 @@ -215,7 +215,11 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi return (SET_ERROR(error)); } if (vp->v_type != VBLK) { +#ifdef __NetBSD__ + vn_close(vp, FREAD|FWRITE, kcred); +#else vrele(vp); +#endif vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; return (SET_ERROR(EINVAL)); } @@ -247,7 +251,11 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi error = workqueue_create(>vd_wq, "vdevsync", vdev_disk_flush, dvd, PRI_NONE, IPL_NONE, WQ_MPSAFE); if (error != 0) { +#ifdef __NetBSD__ + vn_close(vp, FREAD|FWRITE, kcred); +#else vrele(vp); +#endif return (SET_ERROR(error)); }
CVS commit: src/external/cddl/osnet/dist/uts/common/dtrace
Module Name:src Committed By: chs Date: Tue Nov 17 03:20:33 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/dtrace: dtrace.c Log Message: Remove a pointless printf. To generate a diff of this commit: cvs rdiff -u -r1.40 -r1.41 \ src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c diff -u src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.40 src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.41 --- src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c:1.40 Sat May 23 23:42:41 2020 +++ src/external/cddl/osnet/dist/uts/common/dtrace/dtrace.c Tue Nov 17 03:20:33 2020 @@ -13840,7 +13840,6 @@ doferr: return (NULL); #endif /* __FreeBSD__ */ #ifdef __NetBSD__ - printf("dtrace: XXX %s not implemented (name=%s)\n", __func__, name); return (NULL); #endif /* __NetBSD__ */ }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: chs Date: Sun Nov 15 00:54:13 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Commit the ZFS file that I forgot in this previous commit: Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to handle this flag separately. Split out the pages part of uvm_aio_aiodone() into uvm_aio_aiodone_pages() in rump just like in the real kernel. In ZFS functions that can fail to copy data between the ARC and VM pages, use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can handle these "I/O" errors. Fixes PR 55702. To generate a diff of this commit: cvs rdiff -u -r1.70 -r1.71 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.70 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.71 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.70 Thu Aug 27 09:57:33 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sun Nov 15 00:54:13 2020 @@ -6049,20 +6049,13 @@ zfs_netbsd_getpages(void *v) PAGE_SIZE, va, DMU_READ_PREFETCH); zfs_unmap_page(pg, va); - rw_enter(rw, RW_WRITER); if (err != 0) { -for (i = 0; i < npages; i++) { - pg = ap->a_m[i]; - if ((pg->flags & PG_FAKE) != 0) { - uvm_pagefree(pg); - } else { - uvm_page_unbusy(, 1); - } -} +uvm_aio_aiodone_pages(ap->a_m, npages, false, err); memset(ap->a_m, 0, sizeof(ap->a_m[0]) * npages); break; } + rw_enter(rw, RW_WRITER); pg->flags &= ~(PG_FAKE); } @@ -6089,14 +6082,13 @@ zfs_putapage(vnode_t *vp, page_t **pp, i voff_t len, klen; int err; - bool async = (flags & PGO_SYNCIO) == 0; bool *cleanedp; struct uvm_object *uobj = >v_uobj; krwlock_t *rw = uobj->vmobjlock; if (zp->z_sa_hdl == NULL) { err = 0; - goto out_unbusy; + goto out; } /* @@ -6170,12 +6162,8 @@ zfs_putapage(vnode_t *vp, page_t **pp, i } dmu_tx_commit(tx); -out_unbusy: - rw_enter(rw, RW_WRITER); - uvm_page_unbusy(pp, count); - rw_exit(rw); - out: + uvm_aio_aiodone_pages(pp, count, true, err); return (err); }
CVS commit: src/external/cddl/osnet/dev/dtrace/aarch64
Module Name:src Committed By: rin Date: Thu Nov 12 02:15:56 UTC 2020 Modified Files: src/external/cddl/osnet/dev/dtrace/aarch64: dtrace_subr.c Log Message: One more catch up with ``aarch64 is not mips'' change. Fix evbarm-aarch64 build. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 \ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.3 src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.4 --- src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.3 Wed Feb 12 06:05:23 2020 +++ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Thu Nov 12 02:15:56 2020 @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.3 2020/02/12 06:05:23 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.4 2020/11/12 02:15:56 rin Exp $"); #include #include @@ -128,7 +128,7 @@ void dtrace_toxic_ranges(void (*func)(uintptr_t base, uintptr_t limit)) { - (*func)(0, (uintptr_t)AARCH64_KSEG_START); + (*func)(0, (uintptr_t)AARCH64_DIRECTMAP_START); (*func)((uintptr_t)VM_KERNEL_IO_ADDRESS, ~(uintptr_t)0); }
CVS commit: src/external/cddl/osnet/sys/kern
Module Name:src Committed By: chs Date: Wed Nov 11 03:31:04 UTC 2020 Modified Files: src/external/cddl/osnet/sys/kern: kmem.c Log Message: kmem_cache_create()'s "name" parameter can be on the stack, so make a copy of it rather than keeping a pointer to it. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/kern/kmem.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/kern/kmem.c diff -u src/external/cddl/osnet/sys/kern/kmem.c:1.2 src/external/cddl/osnet/sys/kern/kmem.c:1.3 --- src/external/cddl/osnet/sys/kern/kmem.c:1.2 Thu May 23 08:32:30 2019 +++ src/external/cddl/osnet/sys/kern/kmem.c Wed Nov 11 03:31:04 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: kmem.c,v 1.2 2019/05/23 08:32:30 hannken Exp $ */ +/* $NetBSD: kmem.c,v 1.3 2020/11/11 03:31:04 chs Exp $ */ /*- * Copyright (c) 2017 The NetBSD Foundation, Inc. @@ -30,6 +30,7 @@ struct kmem_cache { pool_cache_t km_pool; + char km_name[32]; void *km_private; int (*km_constructor)(void *, void *, int); void (*km_destructor)(void *, void *); @@ -78,11 +79,12 @@ kmem_cache_create(char *name, size_t buf KASSERT(vmp == NULL); km = kmem_zalloc(sizeof(*km), KM_SLEEP); + strlcpy(km->km_name, name, sizeof(km->km_name)); km->km_private = private; km->km_constructor = constructor; km->km_destructor = destructor; km->km_reclaim = reclaim; - km->km_pool = pool_cache_init(bufsize, align, 0, 0, name, NULL, + km->km_pool = pool_cache_init(bufsize, align, 0, 0, km->km_name, NULL, IPL_NONE, solaris_constructor, solaris_destructor, km); if (km->km_pool == NULL) { kmem_free(km, sizeof(*km));
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: hannken Date: Mon Oct 12 08:21:21 UTC 2020 Modified Files: src/external/cddl/osnet/sys/sys: cred.h Log Message: Stub groupmember() has to test both group list and current group id. Fixes kern/55675: ZFS mounts do not work with setuid programs To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/external/cddl/osnet/sys/sys/cred.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/cred.h diff -u src/external/cddl/osnet/sys/sys/cred.h:1.7 src/external/cddl/osnet/sys/sys/cred.h:1.8 --- src/external/cddl/osnet/sys/sys/cred.h:1.7 Wed Apr 29 05:54:37 2020 +++ src/external/cddl/osnet/sys/sys/cred.h Mon Oct 12 08:21:21 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: cred.h,v 1.7 2020/04/29 05:54:37 riastradh Exp $ */ +/* $NetBSD: cred.h,v 1.8 2020/10/12 08:21:21 hannken Exp $ */ /*- * Copyright (c) 2007 Pawel Jakub Dawidek @@ -70,10 +70,12 @@ extern kauth_cred_t cred0; static __inline int groupmember(gid_t gid, cred_t *cr) { - int result; + int result, error; - kauth_cred_ismember_gid(cr, gid, ); - return result; + error = kauth_cred_ismember_gid(cr, gid, ); + if (error) + return 0; + return (kauth_cred_getegid(cr) == gid || result); } #endif /* _KERNEL */
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: kardel Date: Fri Oct 9 08:18:01 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: dmu_tx.c Log Message: PR kern/55705: don't attempt to sleep for negative time, we are late anyway - avoids DIAGNOSTIC panic To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.5 src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.6 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.5 Mon Mar 9 15:37:46 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c Fri Oct 9 08:18:01 2020 @@ -1153,6 +1153,9 @@ dmu_tx_delay(dmu_tx_t *tx, uint64_t dirt #ifdef __NetBSD__ int timo = (wakeup - now) * hz / 10; + if (timo < 0) + return; + if (timo == 0) timo = 1; kpause("dmu_tx_delay", false, timo, NULL);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: christos Date: Mon Sep 7 19:04:27 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: dnode_sync.c Log Message: Comment out index out of bounds debugging code. To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c:1.6 src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c:1.7 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c:1.6 Mon May 28 17:05:07 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dnode_sync.c Mon Sep 7 15:04:27 2020 @@ -689,6 +689,7 @@ dnode_sync(dnode_t *dn, dmu_tx_t *tx) bzero(dnp->dn_blkptr + dnp->dn_nblkptr, sizeof (blkptr_t) * (dn->dn_next_nblkptr[txgoff] - dnp->dn_nblkptr)); +#ifdef notyet /* XXX: gcc-9 */ #ifdef ZFS_DEBUG } else { int i; @@ -698,6 +699,7 @@ dnode_sync(dnode_t *dn, dmu_tx_t *tx) i < dnp->dn_nblkptr; i++) ASSERT(BP_IS_HOLE(>dn_blkptr[i])); #endif +#endif } mutex_enter(>dn_mtx); dnp->dn_nblkptr = dn->dn_next_nblkptr[txgoff];
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: mrg Date: Mon Sep 7 07:44:53 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_raidz.c Log Message: i can't confirm or deny that GCC 9 is wrong about parity_valid[] having uninitialised members, but since setting up reconstruct isn't a hot path, just zero init the whole thing to be sure. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c:1.3 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c:1.2 Mon May 28 21:05:07 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_raidz.c Mon Sep 7 07:44:53 2020 @@ -1412,7 +1412,7 @@ vdev_raidz_reconstruct(raidz_map_t *rm, int i, c; int code; int nbadparity, nbaddata; - int parity_valid[VDEV_RAIDZ_MAXPARITY]; + int parity_valid[VDEV_RAIDZ_MAXPARITY] = {0}; /* * The tgts list must already be sorted.
CVS commit: src/external/cddl/osnet/dist/lib/libdtrace/common
Module Name:src Committed By: christos Date: Sun Sep 6 21:49:32 UTC 2020 Modified Files: src/external/cddl/osnet/dist/lib/libdtrace/common: dt_subr.c Log Message: Adjust string sizes To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c:1.13 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c:1.14 --- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c:1.13 Mon May 28 17:05:05 2018 +++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_subr.c Sun Sep 6 17:49:32 2020 @@ -956,7 +956,7 @@ int dtrace_uaddr2str(dtrace_hdl_t *dtp, pid_t pid, uint64_t addr, char *str, int nbytes) { - char name[PATH_MAX], objname[PATH_MAX], c[PATH_MAX * 2]; + char name[PATH_MAX / 2], objname[PATH_MAX], c[PATH_MAX * 2]; struct ps_prochandle *P = NULL; GElf_Sym sym; char *obj; @@ -977,8 +977,8 @@ dtrace_uaddr2str(dtrace_hdl_t *dtp, pid_ obj = dt_basename(objname); if (addr > sym.st_value) { - (void) snprintf(c, sizeof (c), "%s`%s+0x%llx", obj, - name, (u_longlong_t)(addr - sym.st_value)); + (void) snprintf(c, sizeof (c), "%s`%s+0x%jx", obj, + name, (uintmax_t)(addr - sym.st_value)); } else { (void) snprintf(c, sizeof (c), "%s`%s", obj, name); }
CVS commit: src/external/cddl/osnet/dist/lib/libdtrace/common
Module Name:src Committed By: christos Date: Sun Sep 6 21:49:44 UTC 2020 Modified Files: src/external/cddl/osnet/dist/lib/libdtrace/common: dt_options.c Log Message: Stop using alloca To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c:1.8 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c:1.9 --- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c:1.8 Mon May 28 17:05:05 2018 +++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_options.c Sun Sep 6 17:49:44 2020 @@ -904,8 +904,9 @@ dt_options_load(dtrace_hdl_t *dtp) if (hdr.dofh_loadsz < sizeof (dof_hdr_t)) return (dt_set_errno(dtp, EINVAL)); - dof = alloca(hdr.dofh_loadsz); - bzero(dof, sizeof (dof_hdr_t)); + dof = calloc(hdr.dofh_loadsz, 1); + if (dof == NULL) + return (dt_set_errno(dtp, errno)); dof->dofh_loadsz = hdr.dofh_loadsz; for (i = 0; i < DTRACEOPT_MAX; i++) @@ -916,7 +917,10 @@ dt_options_load(dtrace_hdl_t *dtp) #else if (dt_ioctl(dtp, DTRACEIOC_DOFGET, ) == -1) #endif + { + free(dof); return (dt_set_errno(dtp, errno)); + } for (i = 0; i < dof->dofh_secnum; i++) { sec = (dof_sec_t *)(uintptr_t)((uintptr_t)dof + @@ -940,7 +944,7 @@ dt_options_load(dtrace_hdl_t *dtp) dtp->dt_options[opt->dofo_option] = opt->dofo_value; } - + free(dof); return (0); }
CVS commit: src/external/cddl/osnet/dist/lib/libctf/common
Module Name:src Committed By: christos Date: Sun Sep 6 16:44:17 UTC 2020 Modified Files: src/external/cddl/osnet/dist/lib/libctf/common: ctf_lib.c Log Message: fix zeroing To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c diff -u src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c:1.8 src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c:1.9 --- src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c:1.8 Thu Aug 20 11:54:11 2020 +++ src/external/cddl/osnet/dist/lib/libctf/common/ctf_lib.c Sun Sep 6 12:44:16 2020 @@ -234,7 +234,7 @@ ctf_fdopen(int fd, int *errp) bzero(, sizeof (ctf_sect_t)); bzero(, sizeof (ctf_sect_t)); bzero(, sizeof (ctf_sect_t)); - bzero(, sizeof (hdr)); + bzero(, sizeof (hdr)); if (fstat64(fd, ) == -1) return (ctf_set_open_errno(errp, errno));
CVS commit: src/external/cddl/osnet/sys/kern
Module Name:src Committed By: hannken Date: Fri Aug 28 16:13:48 UTC 2020 Modified Files: src/external/cddl/osnet/sys/kern: policy.c Log Message: Glue operation secpolicy_fs_mount() passes wrong arguments to operation kauth_authorize_system(). KAUTH_SYSTEM_MOUNT / KAUTH_REQ_SYSTEM_MOUNT_NEW wants the to be covered vnode and the mount flags, not the mount structure. Fix for PR kern/55602: zpool panic on mounting zfs filesystem To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/external/cddl/osnet/sys/kern/policy.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/kern/policy.c diff -u src/external/cddl/osnet/sys/kern/policy.c:1.8 src/external/cddl/osnet/sys/kern/policy.c:1.9 --- src/external/cddl/osnet/sys/kern/policy.c:1.8 Sat May 16 18:31:46 2020 +++ src/external/cddl/osnet/sys/kern/policy.c Fri Aug 28 16:13:48 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: policy.c,v 1.8 2020/05/16 18:31:46 christos Exp $ */ +/* $NetBSD: policy.c,v 1.9 2020/08/28 16:13:48 hannken Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -119,7 +119,7 @@ secpolicy_fs_mount(cred_t *cred, vnode_t { return kauth_authorize_system(cred, KAUTH_SYSTEM_MOUNT, - KAUTH_REQ_SYSTEM_MOUNT_NEW, vfsp, NULL, NULL); + KAUTH_REQ_SYSTEM_MOUNT_NEW, mvp, KAUTH_ARG(vfsp->mnt_flag), NULL); } int
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Thu Aug 27 09:57:34 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vfsops.c zfs_vnops.c zfs_znode.c Log Message: Enable NCLOOKUP for ZFS. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c cvs rdiff -u -r1.69 -r1.70 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c cvs rdiff -u -r1.33 -r1.34 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.28 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.29 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.28 Tue May 26 08:39:27 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c Thu Aug 27 09:57:33 2020 @@ -1517,7 +1517,7 @@ zfs_domount(vfs_t *vfsp, char *osname) #endif #ifdef __NetBSD__ vfsp->mnt_flag |= MNT_LOCAL; - vfsp->mnt_iflag |= IMNT_MPSAFE; + vfsp->mnt_iflag |= IMNT_MPSAFE | IMNT_NCLOOKUP; #endif /* @@ -2078,7 +2078,7 @@ zfs_mount(vfs_t *vfsp, const char *path, vfsp->vfs_flag |= MNT_NFS4ACLS; #endif #ifdef __NetBSD__ - vfsp->mnt_iflag |= IMNT_MPSAFE; + vfsp->mnt_iflag |= IMNT_MPSAFE | IMNT_NCLOOKUP; #endif /* Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.69 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.70 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.69 Thu May 21 20:43:23 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Thu Aug 27 09:57:33 2020 @@ -1354,6 +1354,10 @@ zfs_write(vnode_t *vp, uio_t *uio, int i newmode = zp->z_mode; (void) sa_update(zp->z_sa_hdl, SA_ZPL_MODE(zfsvfs), (void *), sizeof (uint64_t), tx); +#ifdef __NetBSD__ + cache_enter_id(vp, zp->z_mode, zp->z_uid, zp->z_gid, + true); +#endif } mutex_exit(>z_acl_lock); @@ -5645,8 +5649,11 @@ zfs_netbsd_setattr(void *v) } error = zfs_setattr(vp, (vattr_t *), flags, cred, NULL); - if (error == 0) - VN_KNOTE(vp, NOTE_ATTRIB); + if (error) + return error; + + VN_KNOTE(vp, NOTE_ATTRIB); + cache_enter_id(vp, zp->z_mode, zp->z_uid, zp->z_gid, true); return error; } Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.33 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.34 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.33 Thu May 7 09:13:06 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Thu Aug 27 09:57:33 2020 @@ -871,6 +871,7 @@ zfs_loadvnode(struct mount *mp, struct v return (SET_ERROR(ENOENT)); } ASSERT(zp == VTOZ(vp)); + cache_enter_id(vp, zp->z_mode, zp->z_uid, zp->z_gid, true); ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); @@ -891,6 +892,8 @@ zfs_newvnode(struct mount *mp, vnode_t * zfs_mknode1(dzp, vap, tx, cr, flag, , acl_ids, vp); ASSERT(zp == VTOZ(vp)); + cache_enter_id(vp, zp->z_mode, zp->z_uid, zp->z_gid, true); + *key_len = sizeof(zp->z_id); *new_key = >z_id;
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jdolecek Date: Sat Jun 27 21:21:11 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_queue.c Log Message: fix bug introduced in conversion to kmem(9), passing address of the local variable instead of pointer to allocated memory should fix PR kern/55426 by Andreas Gustafsson To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.3 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.2 Wed Jun 24 16:16:01 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c Sat Jun 27 21:21:11 2020 @@ -820,7 +820,7 @@ again: search = kmem_zalloc(sizeof (*search), KM_NOSLEEP); if (search) { search->io_offset = vq->vq_last_offset + 1; - VERIFY3P(avl_find(tree, , ), ==, NULL); + VERIFY3P(avl_find(tree, search, ), ==, NULL); kmem_free(search, sizeof (*search)); zio = avl_nearest(tree, idx, AVL_AFTER); } else {
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: mlelstv Date: Thu Jun 25 09:39:15 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: Don't assume everything is a wedge and has a parent device. On non-wedges this crashes. Instead, just talk to the referenced device and rely on the dk driver to pass requests correctly. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.17 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.18 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.17 Sun Jun 21 21:29:11 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Thu Jun 25 09:39:15 2020 @@ -222,19 +222,18 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi pdk = NULL; if (getdiskinfo(vp, ) == 0) - pdk = disk_find(dkw.dkw_parent); + pdk = disk_find(dkw.dkw_devname); /* XXXNETBSD Once tls-maxphys gets merged this block becomes: dvd->vd_maxphys = (pdk ? disk_maxphys(pdk) : MACHINE_MAXPHYS); */ { struct buf buf = { + .b_dev = vp->v_rdev, .b_bcount = MAXPHYS, }; - if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) { - buf.b_dev = pdk->dk_rawvp->v_rdev; + if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) (*pdk->dk_driver->d_minphys)(); - } dvd->vd_maxphys = buf.b_bcount; }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jdolecek Date: Wed Jun 24 16:29:34 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: dsl_scan.c Log Message: reduce stack usage in dsl_scan_recurse() - allocate memory for temporary zbookmark_phys_t using kmem_alloc() rather than stack; this recuses several times usually, and this saves 2x sizeof(zbookmark_phys_t) == 64 bytes per recursion part of fix for PR kern/55402 by Frank Kardel To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.2 src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.3 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.2 Wed Jun 24 16:23:16 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c Wed Jun 24 16:29:34 2020 @@ -397,7 +397,7 @@ static void dsl_scan_visitbp(blkptr_t *b dmu_objset_type_t ostype, dmu_tx_t *tx); static void dsl_scan_visitdnode(dsl_scan_t *, dsl_dataset_t *ds, dmu_objset_type_t ostype, -dnode_phys_t *dnp, uint64_t object, dmu_tx_t *tx); +dnode_phys_t *dnp, uint64_t object, dmu_tx_t *tx, zbookmark_phys_t *); void dsl_free(dsl_pool_t *dp, uint64_t txg, const blkptr_t *bp) @@ -585,9 +585,8 @@ dsl_scan_zil(dsl_pool_t *dp, zil_header_ /* ARGSUSED */ static void dsl_scan_prefetch(dsl_scan_t *scn, arc_buf_t *buf, blkptr_t *bp, -uint64_t objset, uint64_t object, uint64_t blkid) +uint64_t objset, uint64_t object, uint64_t blkid, zbookmark_phys_t *czb) { - zbookmark_phys_t czb; arc_flags_t flags = ARC_FLAG_NOWAIT | ARC_FLAG_PREFETCH; if (zfs_no_scrub_prefetch) @@ -597,11 +596,11 @@ dsl_scan_prefetch(dsl_scan_t *scn, arc_b (BP_GET_LEVEL(bp) == 0 && BP_GET_TYPE(bp) != DMU_OT_DNODE)) return; - SET_BOOKMARK(, objset, object, BP_GET_LEVEL(bp), blkid); + SET_BOOKMARK(czb, objset, object, BP_GET_LEVEL(bp), blkid); (void) arc_read(scn->scn_zio_root, scn->scn_dp->dp_spa, bp, NULL, NULL, ZIO_PRIORITY_ASYNC_READ, - ZIO_FLAG_CANFAIL | ZIO_FLAG_SCAN_THREAD, , ); + ZIO_FLAG_CANFAIL | ZIO_FLAG_SCAN_THREAD, , czb); } static boolean_t @@ -659,6 +658,7 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_da blkptr_t *cbp; int epb = BP_GET_LSIZE(bp) >> SPA_BLKPTRSHIFT; arc_buf_t *buf; + zbookmark_phys_t *czb; err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, , ZIO_PRIORITY_ASYNC_READ, zio_flags, , zb); @@ -666,19 +666,19 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_da scn->scn_phys.scn_errors++; return (err); } + czb = kmem_alloc(sizeof (*czb), KM_SLEEP); for (i = 0, cbp = buf->b_data; i < epb; i++, cbp++) { dsl_scan_prefetch(scn, buf, cbp, zb->zb_objset, - zb->zb_object, zb->zb_blkid * epb + i); + zb->zb_object, zb->zb_blkid * epb + i, czb); } for (i = 0, cbp = buf->b_data; i < epb; i++, cbp++) { - zbookmark_phys_t czb; - - SET_BOOKMARK(, zb->zb_objset, zb->zb_object, + SET_BOOKMARK(czb, zb->zb_objset, zb->zb_object, zb->zb_level - 1, zb->zb_blkid * epb + i); - dsl_scan_visitbp(cbp, , dnp, + dsl_scan_visitbp(cbp, czb, dnp, ds, scn, ostype, tx); } + kmem_free(czb, sizeof (*czb)); arc_buf_destroy(buf, ); } else if (BP_GET_TYPE(bp) == DMU_OT_DNODE) { arc_flags_t flags = ARC_FLAG_WAIT; @@ -686,6 +686,7 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_da int i, j; int epb = BP_GET_LSIZE(bp) >> DNODE_SHIFT; arc_buf_t *buf; + zbookmark_phys_t *czb; err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, , ZIO_PRIORITY_ASYNC_READ, zio_flags, , zb); @@ -693,23 +694,27 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_da scn->scn_phys.scn_errors++; return (err); } + czb = kmem_alloc(sizeof (*czb), KM_SLEEP); for (i = 0, cdnp = buf->b_data; i < epb; i++, cdnp++) { for (j = 0; j < cdnp->dn_nblkptr; j++) { blkptr_t *cbp = >dn_blkptr[j]; dsl_scan_prefetch(scn, buf, cbp, -zb->zb_objset, zb->zb_blkid * epb + i, j); +zb->zb_objset, zb->zb_blkid * epb + i, j, +czb); } } for (i = 0, cdnp = buf->b_data; i < epb; i++, cdnp++) { dsl_scan_visitdnode(scn, ds, ostype, - cdnp, zb->zb_blkid * epb + i, tx); + cdnp, zb->zb_blkid * epb + i, tx, czb); } + kmem_free(czb, sizeof (*czb)); arc_buf_destroy(buf, ); } else if (BP_GET_TYPE(bp) == DMU_OT_OBJSET) { arc_flags_t flags = ARC_FLAG_WAIT; objset_phys_t *osp; arc_buf_t *buf; + zbookmark_phys_t *czb; err = arc_read(NULL, dp->dp_spa, bp, arc_getbuf_func, , ZIO_PRIORITY_ASYNC_READ, zio_flags, , zb); @@ -720,8 +725,9 @@ dsl_scan_recurse(dsl_scan_t *scn, dsl_da osp = buf->b_data; + czb = kmem_alloc(sizeof (*czb), KM_SLEEP);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jdolecek Date: Wed Jun 24 16:23:16 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: dsl_scan.c Log Message: change dsl_scan_visitbp() to allocate blkptr_t dynamically rather than on-stack - this function is called recursively, and the 120 bytes per call add up; also remove unused variable part of fix for PR kern/55402 by Frank Kardel To generate a diff of this commit: cvs rdiff -u -r1.1.1.1 -r1.2 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.1.1.1 src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.2 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c:1.1.1.1 Mon May 28 20:52:57 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dsl_scan.c Wed Jun 24 16:23:16 2020 @@ -778,10 +778,7 @@ dsl_scan_visitbp(blkptr_t *bp, const zbo dmu_objset_type_t ostype, dmu_tx_t *tx) { dsl_pool_t *dp = scn->scn_dp; - arc_buf_t *buf = NULL; - blkptr_t bp_toread = *bp; - - /* ASSERT(pbuf == NULL || arc_released(pbuf)); */ + blkptr_t *bp_toread = NULL; if (dsl_scan_check_pause(scn, zb)) return; @@ -803,8 +800,11 @@ dsl_scan_visitbp(blkptr_t *bp, const zbo if (bp->blk_birth <= scn->scn_phys.scn_cur_min_txg) return; - if (dsl_scan_recurse(scn, ds, ostype, dnp, _toread, zb, tx) != 0) - return; + bp_toread = kmem_alloc(sizeof (blkptr_t), KM_SLEEP); + *bp_toread = *bp; + + if (dsl_scan_recurse(scn, ds, ostype, dnp, bp_toread, zb, tx) != 0) + goto out; /* * If dsl_scan_ddt() has aready visited this block, it will have @@ -813,8 +813,7 @@ dsl_scan_visitbp(blkptr_t *bp, const zbo */ if (ddt_class_contains(dp->dp_spa, scn->scn_phys.scn_ddt_class_max, bp)) { - ASSERT(buf == NULL); - return; + goto out; } /* @@ -827,6 +826,9 @@ dsl_scan_visitbp(blkptr_t *bp, const zbo if (BP_PHYSICAL_BIRTH(bp) <= scn->scn_phys.scn_cur_max_txg) { scan_funcs[scn->scn_phys.scn_func](dp, bp, zb); } + +out: + kmem_free(bp_toread, sizeof (blkptr_t)); } static void
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jdolecek Date: Wed Jun 24 16:16:01 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_queue.c Log Message: reduce stack usage in vdev_queue_io_to_issue() - zio_t is about 1KB, and the function potentially recurses into itself part of fix for PR kern/55402 by Frank Kardel To generate a diff of this commit: cvs rdiff -u -r1.1.1.3 -r1.2 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.1.1.3 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.2 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c:1.1.1.3 Mon May 28 20:52:59 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_queue.c Wed Jun 24 16:16:01 2020 @@ -798,7 +798,7 @@ vdev_queue_io_to_issue(vdev_queue_t *vq) zio_priority_t p; avl_index_t idx; avl_tree_t *tree; - zio_t search; + zio_t *search; again: ASSERT(MUTEX_HELD(>vq_lock)); @@ -817,10 +817,16 @@ again: * For FIFO queues (sync), issue the i/o with the lowest timestamp. */ tree = vdev_queue_class_tree(vq, p); - search.io_timestamp = 0; - search.io_offset = vq->vq_last_offset + 1; - VERIFY3P(avl_find(tree, , ), ==, NULL); - zio = avl_nearest(tree, idx, AVL_AFTER); + search = kmem_zalloc(sizeof (*search), KM_NOSLEEP); + if (search) { + search->io_offset = vq->vq_last_offset + 1; + VERIFY3P(avl_find(tree, , ), ==, NULL); + kmem_free(search, sizeof (*search)); + zio = avl_nearest(tree, idx, AVL_AFTER); + } else { + /* Can't find nearest, fallback to first */ + zio = NULL; + } if (zio == NULL) zio = avl_first(tree); ASSERT3U(zio->io_priority, ==, p);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jmcneill Date: Sun Jun 21 21:29:11 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: If calling d_minphys on the parent disk device, make sure we use the parent disk device's dev_t. Fixes zfs on wedges on ld(4). XXX pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.16 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.17 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.16 Wed Apr 29 04:30:40 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Sun Jun 21 21:29:11 2020 @@ -229,11 +229,12 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi */ { struct buf buf = { - .b_dev = vp->v_rdev, .b_bcount = MAXPHYS, }; - if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) + if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) { + buf.b_dev = pdk->dk_rawvp->v_rdev; (*pdk->dk_driver->d_minphys)(); + } dvd->vd_maxphys = buf.b_bcount; }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: jdolecek Date: Fri Jun 19 14:13:23 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zio.c Log Message: use pool_cache for (meta)data buffers also on NetBSD this should generally slightly improve performance on MP systems, and specifically for xbd(4) storage avoids slow unaligned I/O buffer handling this change requires updated kernel, to allow up to SPA_MAXBLOCKSHIFT item size for pools fixes PR kern/55397 by Frank Kardel To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c:1.6 src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c:1.7 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c:1.6 Tue May 7 08:49:59 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zio.c Fri Jun 19 14:13:23 2020 @@ -46,7 +46,7 @@ SYSCTL_DECL(_vfs_zfs); SYSCTL_NODE(_vfs_zfs, OID_AUTO, zio, CTLFLAG_RW, 0, "ZFS ZIO"); #ifdef __NetBSD__ -const int zio_use_uma = 0; +const int zio_use_uma = 1; #else #if defined(__amd64__) static int zio_use_uma = 1; @@ -156,7 +156,6 @@ zio_init(void) zio_link_cache = kmem_cache_create("zio_link_cache", sizeof (zio_link_t), 0, NULL, NULL, NULL, NULL, NULL, 0); -#ifndef __NetBSD__ if (!zio_use_uma) goto out; @@ -220,7 +219,6 @@ zio_init(void) zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; } out: -#endif /* __NetBSD__ */ zio_inject_init(); @@ -242,7 +240,6 @@ zio_fini(void) kmem_cache_t *last_cache = NULL; kmem_cache_t *last_data_cache = NULL; -#ifndef __NetBSD__ for (c = 0; c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; c++) { if (zio_buf_cache[c] != last_cache) { last_cache = zio_buf_cache[c]; @@ -256,7 +253,6 @@ zio_fini(void) } zio_data_buf_cache[c] = NULL; } -#endif /* __NetBSD__ */ kmem_cache_destroy(zio_link_cache); kmem_cache_destroy(zio_cache);
CVS commit: src/external/cddl/osnet/usr.bin/ctfmerge
Module Name:src Committed By: fox Date: Sun Jun 7 23:26:54 UTC 2020 Modified Files: src/external/cddl/osnet/usr.bin/ctfmerge: Makefile Log Message: external/cddl/osnet: Suppress -Werror=stringop-truncation error This logic correctly uses strncpy(3) to fully initialize a fixed-width field, and also ensures NUL-termination on the next line as other users of the field expect. Add -Werror=stringop-truncation to prevent build failure, when run with MKSANITIZER=yes. Error was reported when build.sh was run with MKSANITIZER=yes flag. Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/external/cddl/osnet/usr.bin/ctfmerge/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/usr.bin/ctfmerge/Makefile diff -u src/external/cddl/osnet/usr.bin/ctfmerge/Makefile:1.10 src/external/cddl/osnet/usr.bin/ctfmerge/Makefile:1.11 --- src/external/cddl/osnet/usr.bin/ctfmerge/Makefile:1.10 Mon May 28 21:05:11 2018 +++ src/external/cddl/osnet/usr.bin/ctfmerge/Makefile Sun Jun 7 23:26:54 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.10 2018/05/28 21:05:11 chs Exp $ +# $NetBSD: Makefile,v 1.11 2020/06/07 23:26:54 fox Exp $ # $FreeBSD: head/cddl/usr.bin/ctfmerge/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -36,4 +36,6 @@ LDADD+=-lpthread DPADD+=${LIBPTHREAD} .endif +COPTS.ctfmerge.c+= ${GCC_NO_STRINGOP_TRUNCATION} + .include
CVS commit: src/external/cddl/osnet
Module Name:src Committed By: hannken Date: Tue May 26 08:39:27 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vfsops.c src/external/cddl/osnet/sys/sys: vnode.h Log Message: Replace vp->v_count with vrefcnt(vp) and remove now unneeded "#define v_count ...". To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c cvs rdiff -u -r1.16 -r1.17 src/external/cddl/osnet/sys/sys/vnode.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.27 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.28 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c:1.27 Mon Apr 13 19:23:17 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vfsops.c Tue May 26 08:39:27 2020 @@ -2311,7 +2311,11 @@ zfsvfs_teardown(zfsvfs_t *zfsvfs, boolea for (zp = list_head(>z_all_znodes); zp != NULL; zp = list_next(>z_all_znodes, zp)) if (zp->z_sa_hdl) { +#ifdef __NetBSD__ + ASSERT(vrefcnt(ZTOV(zp)) >= 0); +#else ASSERT(ZTOV(zp)->v_count >= 0); +#endif zfs_znode_dmu_fini(zp); } mutex_exit(>z_znodes_lock); Index: src/external/cddl/osnet/sys/sys/vnode.h diff -u src/external/cddl/osnet/sys/sys/vnode.h:1.16 src/external/cddl/osnet/sys/sys/vnode.h:1.17 --- src/external/cddl/osnet/sys/sys/vnode.h:1.16 Mon Apr 13 19:23:17 2020 +++ src/external/cddl/osnet/sys/sys/vnode.h Tue May 26 08:39:27 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: vnode.h,v 1.16 2020/04/13 19:23:17 ad Exp $ */ +/* $NetBSD: vnode.h,v 1.17 2020/05/26 08:39:27 hannken Exp $ */ /* * CDDL HEADER START @@ -135,7 +135,6 @@ typedef int (**vnodeops_t)(void *); #define vop_fid_args vop_vptofh_args #define a_fid a_fhp -#define v_count v_usecount #define v_object v_uobj struct vop_vptofh_args {
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: ad Date: Thu May 21 20:43:23 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Fix bugs in previous. To generate a diff of this commit: cvs rdiff -u -r1.68 -r1.69 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.68 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.69 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.68 Wed May 20 20:47:18 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Thu May 21 20:43:23 2020 @@ -5971,7 +5971,6 @@ zfs_netbsd_getpages(void *v) } */ * const ap = v; vnode_t *const vp = ap->a_vp; - off_t offset = ap->a_offset + (ap->a_centeridx << PAGE_SHIFT); const int flags = ap->a_flags; const bool async = (flags & PGO_SYNCIO) == 0; const bool memwrite = (ap->a_access_type & VM_PROT_WRITE) != 0; @@ -5983,12 +5982,13 @@ zfs_netbsd_getpages(void *v) vfs_t *mp; struct vm_page *pg; caddr_t va; - int npages, found, err = 0; + int npages = *ap->a_count, found, err = 0; if (flags & PGO_LOCKED) { - uvn_findpages(uobj, ap->a_offset, ap->a_count, ap->a_m, NULL, + uvn_findpages(uobj, ap->a_offset, , ap->a_m, NULL, UFP_NOWAIT | UFP_NOALLOC | UFP_NOBUSY | (memwrite ? UFP_NORDONLY : 0)); + KASSERT(npages == *ap->a_count); if (memwrite) { KASSERT(rw_write_held(uobj->vmobjlock)); for (int i = 0; i < npages; i++) { @@ -6010,9 +6010,6 @@ zfs_netbsd_getpages(void *v) if (async) { return 0; } - if (*ap->a_count != 1) { - return EBUSY; - } mp = vp->v_mount; fstrans_start(mp); @@ -6024,18 +6021,20 @@ zfs_netbsd_getpages(void *v) ZFS_VERIFY_ZP(zp); rw_enter(rw, RW_WRITER); - if (offset >= vp->v_size) { + if (ap->a_offset + (npages << PAGE_SHIFT) > round_page(vp->v_size)) { rw_exit(rw); ZFS_EXIT(zfsvfs); fstrans_done(mp); return EINVAL; } - npages = *ap->a_count; - uvn_findpages(uobj, offset, , ap->a_m, NULL, UFP_ALL); + uvn_findpages(uobj, ap->a_offset, , ap->a_m, NULL, UFP_ALL); + KASSERT(npages == *ap->a_count); for (int i = 0; i < npages; i++) { pg = ap->a_m[i]; if (pg->flags & PG_FAKE) { + voff_t offset = pg->offset; + KASSERT(pg->offset == ap->a_offset + (i << PAGE_SHIFT)); rw_exit(rw); va = zfs_map_page(pg, S_WRITE);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: ad Date: Wed May 20 20:47:18 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: zfs_netbsd_getpages: - implement the PGO_LOCKED case - handle npages > 1 for PGO_SYNCIO To generate a diff of this commit: cvs rdiff -u -r1.67 -r1.68 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.67 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.68 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.67 Sat May 16 18:31:46 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Wed May 20 20:47:18 2020 @@ -755,15 +755,14 @@ mappedread(vnode_t *vp, int nbytes, uio_ va = zfs_map_page(pp, S_READ); error = uiomove(va + off, bytes, UIO_READ, uio); zfs_unmap_page(pp, va); + rw_enter(rw, RW_WRITER); + uvm_page_unbusy(, 1); + rw_exit(rw); } else { error = dmu_read_uio_dbuf(sa_get_db(zp->z_sa_hdl), uio, bytes); } - rw_enter(rw, RW_WRITER); - uvm_page_unbusy(, 1); - rw_exit(rw); - len -= bytes; off = 0; if (error) @@ -5987,9 +5986,24 @@ zfs_netbsd_getpages(void *v) int npages, found, err = 0; if (flags & PGO_LOCKED) { - *ap->a_count = 0; - ap->a_m[ap->a_centeridx] = NULL; - return EBUSY; + uvn_findpages(uobj, ap->a_offset, ap->a_count, ap->a_m, NULL, + UFP_NOWAIT | UFP_NOALLOC | UFP_NOBUSY | + (memwrite ? UFP_NORDONLY : 0)); + if (memwrite) { + KASSERT(rw_write_held(uobj->vmobjlock)); + for (int i = 0; i < npages; i++) { +pg = ap->a_m[i]; +if (pg == NULL || pg == PGO_DONTCARE) { + continue; +} +if (uvm_pagegetdirty(pg) == +UVM_PAGE_STATUS_CLEAN) { + uvm_pagemarkdirty(pg, + UVM_PAGE_STATUS_UNKNOWN); +} + } + } + return ap->a_m[ap->a_centeridx] == NULL ? EBUSY : 0; } rw_exit(rw); @@ -6016,28 +6030,42 @@ zfs_netbsd_getpages(void *v) fstrans_done(mp); return EINVAL; } - npages = 1; - pg = NULL; - uvn_findpages(uobj, offset, , , NULL, UFP_ALL); + npages = *ap->a_count; + uvn_findpages(uobj, offset, , ap->a_m, NULL, UFP_ALL); - if (pg->flags & PG_FAKE) { - rw_exit(rw); + for (int i = 0; i < npages; i++) { + pg = ap->a_m[i]; + if (pg->flags & PG_FAKE) { + rw_exit(rw); - va = zfs_map_page(pg, S_WRITE); - err = dmu_read(zfsvfs->z_os, zp->z_id, offset, PAGE_SIZE, - va, DMU_READ_PREFETCH); - zfs_unmap_page(pg, va); + va = zfs_map_page(pg, S_WRITE); + err = dmu_read(zfsvfs->z_os, zp->z_id, offset, + PAGE_SIZE, va, DMU_READ_PREFETCH); + zfs_unmap_page(pg, va); - rw_enter(rw, RW_WRITER); - pg->flags &= ~(PG_FAKE); - } + rw_enter(rw, RW_WRITER); + if (err != 0) { +for (i = 0; i < npages; i++) { + pg = ap->a_m[i]; + if ((pg->flags & PG_FAKE) != 0) { + uvm_pagefree(pg); + } else { + uvm_page_unbusy(, 1); + } +} +memset(ap->a_m, 0, sizeof(ap->a_m[0]) * +npages); +break; + } + pg->flags &= ~(PG_FAKE); + } - if (memwrite && uvm_pagegetdirty(pg) == UVM_PAGE_STATUS_CLEAN) { - /* For write faults, start dirtiness tracking. */ - uvm_pagemarkdirty(pg, UVM_PAGE_STATUS_UNKNOWN); + if (memwrite && uvm_pagegetdirty(pg) == UVM_PAGE_STATUS_CLEAN) { + /* For write faults, start dirtiness tracking. */ + uvm_pagemarkdirty(pg, UVM_PAGE_STATUS_UNKNOWN); + } } rw_exit(rw); - ap->a_m[ap->a_centeridx] = pg; ZFS_EXIT(zfsvfs); fstrans_done(mp);
CVS commit: src/external/cddl/osnet/dev/profile
Module Name:src Committed By: ad Date: Fri May 15 23:57:17 UTC 2020 Modified Files: src/external/cddl/osnet/dev/profile: profile.c Log Message: Bump PROF_ARTIFICIAL_FRAMES to 4 now that cyclics are run from statclock(). To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/external/cddl/osnet/dev/profile/profile.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/profile/profile.c diff -u src/external/cddl/osnet/dev/profile/profile.c:1.10 src/external/cddl/osnet/dev/profile/profile.c:1.11 --- src/external/cddl/osnet/dev/profile/profile.c:1.10 Fri Jun 29 11:33:46 2018 +++ src/external/cddl/osnet/dev/profile/profile.c Fri May 15 23:57:17 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: profile.c,v 1.10 2018/06/29 11:33:46 kamil Exp $ */ +/* $NetBSD: profile.c,v 1.11 2020/05/15 23:57:17 ad Exp $ */ /* * CDDL HEADER START @@ -169,7 +169,7 @@ struct profile_probe_percpu; #endif /* __FreeBSD__ */ #ifdef __NetBSD__ -#define PROF_ARTIFICIAL_FRAMES 3 +#define PROF_ARTIFICIAL_FRAMES 4 #endif typedef struct profile_probe {
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: chs Date: Wed May 13 05:52:54 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: fix the handling in putpage of the page containing EOF. To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.65 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.66 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.65 Thu May 7 09:12:03 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Wed May 13 05:52:54 2020 @@ -6066,9 +6066,29 @@ zfs_putapage(vnode_t *vp, page_t **pp, i goto out_unbusy; } + /* + * Calculate the length and assert that no whole pages are past EOF. + * This check is equivalent to "off + len <= round_page(zp->z_size)", + * with gyrations to avoid signed integer overflow. + */ + off = pp[0]->offset; len = count * PAGESIZE; - KASSERT(off + len <= round_page(zp->z_size)); + KASSERT(off <= zp->z_size); + KASSERT(len <= round_page(zp->z_size)); + KASSERT(off <= round_page(zp->z_size) - len); + + /* + * If EOF is within the last page, reduce len to avoid writing past + * the file size in the ZFS buffer. Assert that + * "off + len <= zp->z_size", again avoiding signed integer overflow. + */ + + if (len > zp->z_size - off) { + len = zp->z_size - off; + } + KASSERT(len <= zp->z_size); + KASSERT(off <= zp->z_size - len); if (zfs_owner_overquota(zfsvfs, zp, B_FALSE) || zfs_owner_overquota(zfsvfs, zp, B_TRUE)) {
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Thu May 7 09:13:06 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_znode.c Log Message: Operation zfs_zget_cleaner() cannot fail, comment and add assertions. To generate a diff of this commit: cvs rdiff -u -r1.32 -r1.33 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.32 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.33 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.32 Thu May 7 09:12:31 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Thu May 7 09:13:06 2020 @@ -1288,6 +1288,12 @@ zfs_zget(zfsvfs_t *zfsvfs, uint64_t obj_ return error; } +/* + * Get a known cached znode, to be used from zil_commit()->zfs_get_data() + * to resolve log entries. Doesn't take a reference, will never fail and + * depends on zfs_vnops.c::zfs_netbsd_reclaim() running a zil_commit() + * before the znode gets freed. + */ int zfs_zget_cleaner(zfsvfs_t *zfsvfs, uint64_t obj_num, znode_t **zpp) { @@ -1295,31 +1301,26 @@ zfs_zget_cleaner(zfsvfs_t *zfsvfs, uint6 sa_handle_t *hdl; dmu_object_info_t doi; znode_t *zp; - int err; ZFS_OBJ_HOLD_ENTER(zfsvfs, obj_num); - err = sa_buf_hold(zfsvfs->z_os, obj_num, NULL, ); - if (err) { - ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); - return (SET_ERROR(err)); - } + VERIFY(0 == sa_buf_hold(zfsvfs->z_os, obj_num, NULL, )); dmu_object_info_from_db(db, ); - if (doi.doi_bonus_type != DMU_OT_SA && - (doi.doi_bonus_type != DMU_OT_ZNODE || + ASSERT(doi.doi_bonus_type == DMU_OT_SA || (doi.doi_bonus_type == DMU_OT_ZNODE && - doi.doi_bonus_size < sizeof (znode_phys_t { - sa_buf_rele(db, NULL); - ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); - return (SET_ERROR(EINVAL)); - } + doi.doi_bonus_size >= sizeof (znode_phys_t))); + hdl = dmu_buf_get_user(db); ASSERT3P(hdl, !=, NULL); + zp = sa_get_userdata(hdl); ASSERT3U(zp->z_id, ==, obj_num); + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); + *zpp = zp; return (0); }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Thu May 7 09:12:03 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Revert Rev. 1.63 and add a comment why we have to zil_commit() here: Operation zfs_znode.c::zfs_zget_cleaner() depends on this zil_commit() as a barrier to guarantee the znode cannot get freed before its log entries are resolved. To generate a diff of this commit: cvs rdiff -u -r1.64 -r1.65 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.64 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.65 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.64 Sat Mar 14 20:45:23 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Thu May 7 09:12:03 2020 @@ -5858,11 +5858,16 @@ zfs_netbsd_reclaim(void *v) zp->z_atime_dirty = 0; dmu_tx_commit(tx); } - - if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) - zil_commit(zfsvfs->z_log, zp->z_id); } + /* + * Operation zfs_znode.c::zfs_zget_cleaner() depends on this + * zil_commit() as a barrier to guarantee the znode cannot + * get freed before its log entries are resolved. + */ + if (zfsvfs->z_log) + zil_commit(zfsvfs->z_log, zp->z_id); + if (zp->z_sa_hdl == NULL) zfs_znode_free(zp); else
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Thu May 7 09:12:32 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_znode.c Log Message: Revert Rev. 1.31 as it is no longer possible for the handle to be NULL. To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.31 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.32 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.31 Fri Mar 20 08:26:01 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Thu May 7 09:12:31 2020 @@ -1315,11 +1315,7 @@ zfs_zget_cleaner(zfsvfs_t *zfsvfs, uint6 return (SET_ERROR(EINVAL)); } hdl = dmu_buf_get_user(db); - if (hdl == NULL) { - sa_buf_rele(db, NULL); - ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); - return (SET_ERROR(EINVAL)); - } + ASSERT3P(hdl, !=, NULL); zp = sa_get_userdata(hdl); ASSERT3U(zp->z_id, ==, obj_num); sa_buf_rele(db, NULL);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Wed Apr 29 04:30:40 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: Set up more of a fake struct buf, for ldminphys. Fixes: arm64# zpool create rpool ld4 [ 198.4376097] panic: Trap: Data Abort (EL1): Translation Fault L1 with read access for 0178: pc c017acf4: opcode f940bc00: ldr x0, [x0,#376] [ 198.4694793] fp c00073026660 ldminphys() at c017acf4 netbsd:ldminphys+0x34 [ 198.4792624] fp c00073026680 vdev_disk_open.part.4() at c13d4c4c zfs:vdev_disk_open.part.4+0x37c [ 198.4792624] fp c000730268d0 vdev_open() at c13d2530 zfs:vdev_open+0x68 [ 198.4792624] fp c00073026920 vdev_open_children() at c13d2958 zfs:vdev_open_children+0x40 [ 198.4792624] fp c00073026950 vdev_root_open() at c13dad48 zfs:vdev_root_open+0x30 XXX pullup-9 To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.15 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.16 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.15 Mon Mar 2 16:01:56 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Wed Apr 29 04:30:40 2020 @@ -228,7 +228,10 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi dvd->vd_maxphys = (pdk ? disk_maxphys(pdk) : MACHINE_MAXPHYS); */ { - struct buf buf = { .b_bcount = MAXPHYS }; + struct buf buf = { + .b_dev = vp->v_rdev, + .b_bcount = MAXPHYS, + }; if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) (*pdk->dk_driver->d_minphys)(); dvd->vd_maxphys = buf.b_bcount;
CVS commit: src/external/cddl/osnet/dist/lib/libzfs/common
Module Name:src Committed By: mlelstv Date: Sat Apr 4 13:45:22 UTC 2020 Modified Files: src/external/cddl/osnet/dist/lib/libzfs/common: libzfs_import.c Log Message: When collecting zpool devices, skip disks with wedges so that a concurrent test of a wedge on that disk doesn't fail. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c diff -u src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c:1.5 src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c:1.6 --- src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c:1.5 Tue Aug 20 08:11:21 2019 +++ src/external/cddl/osnet/dist/lib/libzfs/common/libzfs_import.c Sat Apr 4 13:45:22 2020 @@ -1095,8 +1095,16 @@ zpool_open_func(void *arg) } #endif /* __FreeBSD__ */ #ifdef __NetBSD__ + struct dkwedge_list dkwl; off_t size; + /* skip devices with wedges */ + if (native_ioctl(fd, DIOCLWEDGES, ) == 0 && + dkwl.dkwl_nwedges > 0) { + (void) close(fd); + return; + } + if (native_ioctl(fd, DIOCGMEDIASIZE, ) < 0 || size < SPA_MINDEVSIZE) { (void) close(fd);
CVS commit: src/external/cddl/osnet/usr.sbin/dtrace
Module Name:src Committed By: christos Date: Sat Apr 4 13:15:48 UTC 2020 Modified Files: src/external/cddl/osnet/usr.sbin/dtrace: Makefile Log Message: Add libproc To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 src/external/cddl/osnet/usr.sbin/dtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/usr.sbin/dtrace/Makefile diff -u src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.13 src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.14 --- src/external/cddl/osnet/usr.sbin/dtrace/Makefile:1.13 Fri Jun 29 07:33:47 2018 +++ src/external/cddl/osnet/usr.sbin/dtrace/Makefile Sat Apr 4 09:15:48 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.13 2018/06/29 11:33:47 kamil Exp $ +# $NetBSD: Makefile,v 1.14 2020/04/04 13:15:48 christos Exp $ # $FreeBSD: head/cddl/usr.sbin/dtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -43,6 +43,7 @@ LDFLAGS+= -pthread PROGDPLIBS+= ctf ${.CURDIR}/../../lib/libctf PROGDPLIBS+= dtrace ${.CURDIR}/../../lib/libdtrace PROGDPLIBS+= elf ${NETBSDSRCDIR}/external/bsd/elftoolchain/lib/libelf +PROGDPLIBS+= proc ${NETBSDSRCDIR}/external/bsd/libproc/lib PROGDPLIBS+= y ${NETBSDSRCDIR}/lib/liby PROGDPLIBS+= l ${NETBSDSRCDIR}/external/bsd/flex/lib PROGDPLIBS+= z ${NETBSDSRCDIR}/lib/libz
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Fri Mar 20 08:26:01 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_znode.c Log Message: With zfs_netbsd_reclaim() no longer doing an unconditional zil commit dmu_buf_get_user() may return a NULL handle when the znode already disappeared. To generate a diff of this commit: cvs rdiff -u -r1.30 -r1.31 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.30 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.31 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c:1.30 Sun Feb 23 15:46:38 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_znode.c Fri Mar 20 08:26:01 2020 @@ -1315,7 +1315,11 @@ zfs_zget_cleaner(zfsvfs_t *zfsvfs, uint6 return (SET_ERROR(EINVAL)); } hdl = dmu_buf_get_user(db); - ASSERT3P(hdl, !=, NULL); + if (hdl == NULL) { + sa_buf_rele(db, NULL); + ZFS_OBJ_HOLD_EXIT(zfsvfs, obj_num); + return (SET_ERROR(EINVAL)); + } zp = sa_get_userdata(hdl); ASSERT3U(zp->z_id, ==, obj_num); sa_buf_rele(db, NULL);
CVS commit: src/external/cddl/osnet/lib/libdtrace
Module Name:src Committed By: fox Date: Tue Mar 17 01:36:29 UTC 2020 Modified Files: src/external/cddl/osnet/lib/libdtrace: Makefile Log Message: external/cddl/osnet: Do not suppress the warning output for libdtrace. Changed -Wno-maybe-uninitialized to -Wno-error=maybe-uninitialized to allow warnings to be printed out during build. Suggested by: christos@ To generate a diff of this commit: cvs rdiff -u -r1.27 -r1.28 src/external/cddl/osnet/lib/libdtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/lib/libdtrace/Makefile diff -u src/external/cddl/osnet/lib/libdtrace/Makefile:1.27 src/external/cddl/osnet/lib/libdtrace/Makefile:1.28 --- src/external/cddl/osnet/lib/libdtrace/Makefile:1.27 Tue Mar 17 00:50:12 2020 +++ src/external/cddl/osnet/lib/libdtrace/Makefile Tue Mar 17 01:36:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.27 2020/03/17 00:50:12 fox Exp $ +# $NetBSD: Makefile,v 1.28 2020/03/17 01:36:29 fox Exp $ # $FreeBSD: head/cddl/lib/libdtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -96,7 +96,7 @@ COPTS.dt_isadep.c += -Wno-unused-variabl .if (${MKLIBCSANITIZER:Uno} == "yes") .if (${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} == 8) -COPTS.dt_proc.c+= -Wno-maybe-uninitialized +COPTS.dt_proc.c+= -Wno-error=maybe-uninitialized .endif .endif
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: fox Date: Tue Mar 17 00:54:03 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_acl.c Log Message: external/cddl/osnet: Fix -Werror=maybe-uninitialized error in zfs_acl.c. Detected by build.sh with MKLIBCSANITIZER=yes and fixed upstream, pick only the fix from the commit. Upstream commits https://github.com/zfsonfreebsd/ZoF/commit/100a91aa3e9773f2a2a373c5cb066b52c780716c https://github.com/openzfs/zfs/commit/100a91aa3e9773f2a2a373c5cb066b52c780716c Cherry-pick: >From 100a91aa3e9773f2a2a373c5cb066b52c780716c Mon Sep 17 00:00:00 2001 From: Chunwei Chen Date: Fri, 17 Jun 2016 17:36:01 -0700 Subject: [PATCH] Fix NFS credential Signed-off-by: Chunwei Chen Signed-off-by: Brian Behlendorf Closes #4772 Closes #4758 Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c:1.5 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c:1.6 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c:1.5 Fri Sep 7 02:25:40 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_acl.c Tue Mar 17 00:54:03 2020 @@ -1598,7 +1598,7 @@ zfs_acl_ids_create(znode_t *dzp, int fla int error; zfsvfs_t *zfsvfs = dzp->z_zfsvfs; zfs_acl_t *paclp; - gid_t gid; + gid_t gid = vap->va_gid; boolean_t trim = B_FALSE; boolean_t inherited = B_FALSE;
CVS commit: src/external/cddl/osnet/lib/libdtrace
Module Name:src Committed By: fox Date: Tue Mar 17 00:50:12 UTC 2020 Modified Files: src/external/cddl/osnet/lib/libdtrace: Makefile Log Message: external/cddl/osnet: Supress -Werror=maybe-uninitialized error in libdtrace. It looks like this is a false positive, since the section of code triggering the error external/cddl/osnet/dist/lib/libdtrace/common/dt_proc.c:400:42: is only accessed after "err" is initialized. Error was reported when build.sh was run with MKLIBCSANITIZER=yes flag. Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.26 -r1.27 src/external/cddl/osnet/lib/libdtrace/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/lib/libdtrace/Makefile diff -u src/external/cddl/osnet/lib/libdtrace/Makefile:1.26 src/external/cddl/osnet/lib/libdtrace/Makefile:1.27 --- src/external/cddl/osnet/lib/libdtrace/Makefile:1.26 Tue Dec 3 22:10:56 2019 +++ src/external/cddl/osnet/lib/libdtrace/Makefile Tue Mar 17 00:50:12 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.26 2019/12/03 22:10:56 jmcneill Exp $ +# $NetBSD: Makefile,v 1.27 2020/03/17 00:50:12 fox Exp $ # $FreeBSD: head/cddl/lib/libdtrace/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -94,6 +94,12 @@ COPTS.dt_options.c += -Wno-parentheses COPTS.dt_pid.c += ${${ACTIVE_CC} == "gcc" :? -Wno-unused-but-set-variable :} COPTS.dt_isadep.c += -Wno-unused-variable +.if (${MKLIBCSANITIZER:Uno} == "yes") +.if (${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} == 8) +COPTS.dt_proc.c+= -Wno-maybe-uninitialized +.endif +.endif + .if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" CPPFLAGS+= -I${OPENSOLARIS_SYS_DISTDIR}/uts/intel CPPFLAGS+= -I${.CURDIR}/../../dev/dtrace/x86
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: fox Date: Mon Mar 9 15:40:50 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: metaslab.c Log Message: external/cddl/osnet: Fix possible null pointer access. Detected by UBSan and fixed upstream, pick only the fix from the commit. Cherry-pick: >From 928e8ad47d3478a3d5d01f0dd6ae74a9371af65e Mon Sep 17 00:00:00 2001 From: Serapheim Dimitropoulos Date: Wed, 20 Feb 2019 09:59:57 -0800 Subject: [PATCH] Introduce auxiliary metaslab histograms Reviewed by: Paul Dagnelie Reviewed-by: Brian Behlendorf Reviewed by: Matt Ahrens Signed-off-by: Serapheim Dimitropoulos Closes #8358 Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.1.1.3 -r1.2 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c:1.1.1.3 src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c:1.2 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c:1.1.1.3 Mon May 28 20:52:58 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/metaslab.c Mon Mar 9 15:40:50 2020 @@ -3370,7 +3370,7 @@ metaslab_alloc(spa_t *spa, metaslab_clas zio_alloc_list_t *zal, zio_t *zio) { dva_t *dva = bp->blk_dva; - dva_t *hintdva = hintbp->blk_dva; + dva_t *hintdva = (hintbp != NULL) ? hintbp->blk_dva : NULL; int error = 0; ASSERT(bp->blk_birth == 0);
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: fox Date: Mon Mar 9 15:37:46 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: dmu_tx.c spa.c Log Message: external/cddl/osnet: Fix possible signed integer overflow Detected by UBSan and fixed upstream Cherry-pick: >From 05852b3467b44cdf88541ec67624cd1f5f2ded1d Mon Sep 17 00:00:00 2001 From: luozhengzheng Date: Fri, 14 Oct 2016 05:25:05 +0800 Subject: [PATCH] Fix coverity defects: CID 147571, 147574 CID 147571: Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN) CID 147574: Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN) Reviewed-by: Brian Behlendorf Signed-off-by: luozhengzheng Closes #5268 Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c cvs rdiff -u -r1.10 -r1.11 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.4 src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.5 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c:1.4 Fri Jun 21 10:59:50 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/dmu_tx.c Mon Mar 9 15:37:46 2020 @@ -412,7 +412,7 @@ dmu_tx_count_dnode(dmu_tx_hold_t *txh) dnode_t *dn = txh->txh_dnode; dnode_t *mdn = DMU_META_DNODE(txh->txh_tx->tx_objset); uint64_t space = mdn->dn_datablksz + - ((mdn->dn_nlevels-1) << mdn->dn_indblkshift); + ((uint64_t)(mdn->dn_nlevels-1) << mdn->dn_indblkshift); if (dn && dn->dn_dbuf->db_blkptr && dsl_dataset_block_freeable(dn->dn_objset->os_dsl_dataset, Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c:1.10 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c:1.11 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c:1.10 Tue Jul 23 07:46:22 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa.c Mon Mar 9 15:37:46 2020 @@ -6293,7 +6293,7 @@ spa_async_tasks_pending(spa_t *spa) } else { config_task_suspended = (gethrtime() - spa->spa_ccw_fail_time) < - (zfs_ccw_retry_interval * NANOSEC); + ((hrtime_t)zfs_ccw_retry_interval * NANOSEC); } return (non_config_tasks || (config_task && !config_task_suspended));
CVS commit: src/external/cddl/osnet/lib/libdtrace
Module Name:src Committed By: mgorny Date: Sun Mar 8 22:11:48 UTC 2020 Modified Files: src/external/cddl/osnet/lib/libdtrace: errno.d Added Files: src/external/cddl/osnet/lib/libdtrace: make-errno-d.awk Log Message: Update dtrace errno.d mapping and add a script for it Add a new script to autogenerate errno.d from errno.h, and use it to regenerate the list to match NetBSD errno codes. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/lib/libdtrace/errno.d cvs rdiff -u -r0 -r1.1 src/external/cddl/osnet/lib/libdtrace/make-errno-d.awk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/lib/libdtrace/errno.d diff -u src/external/cddl/osnet/lib/libdtrace/errno.d:1.3 src/external/cddl/osnet/lib/libdtrace/errno.d:1.4 --- src/external/cddl/osnet/lib/libdtrace/errno.d:1.3 Mon May 28 21:05:09 2018 +++ src/external/cddl/osnet/lib/libdtrace/errno.d Sun Mar 8 22:11:48 2020 @@ -1,4 +1,10 @@ -/* $NetBSD: errno.d,v 1.3 2018/05/28 21:05:09 chs Exp $ */ +/* $NetBSD: errno.d,v 1.4 2020/03/08 22:11:48 mgorny Exp $ */ + +/* + * This file is autogenerated. Please call: + * awk make-errno-d.awk < ../../../../../sys/sys/errno.h + * to get new data. + */ /* * CDDL HEADER START @@ -122,8 +128,6 @@ inline int ESOCKTNOSUPPORT = 44; #pragma D binding "1.0" ESOCKTNOSUPPORT inline int EOPNOTSUPP = 45; #pragma D binding "1.0" EOPNOTSUPP -inline int ENOTSUP = EOPNOTSUPP; -#pragma D binding "1.0" ENOTSUP inline int EPFNOSUPPORT = 46; #pragma D binding "1.0" EPFNOSUPPORT inline int EAFNOSUPPORT = 47; @@ -202,29 +206,43 @@ inline int ENOMSG = 83; #pragma D binding "1.0" ENOMSG inline int EOVERFLOW = 84; #pragma D binding "1.0" EOVERFLOW -inline int ECANCELED = 85; -#pragma D binding "1.0" ECANCELED -inline int EILSEQ = 86; +inline int EILSEQ = 85; #pragma D binding "1.0" EILSEQ -inline int ENOATTR = 87; -#pragma D binding "1.0" ENOATTR -inline int EDOOFUS = 88; -#pragma D binding "1.0" EDOOFUS -inline int EBADMSG = 89; +inline int ENOTSUP = 86; +#pragma D binding "1.0" ENOTSUP +inline int ECANCELED = 87; +#pragma D binding "1.0" ECANCELED +inline int EBADMSG = 88; #pragma D binding "1.0" EBADMSG -inline int EMULTIHOP = 90; +inline int ENODATA = 89; +#pragma D binding "1.0" ENODATA +inline int ENOSR = 90; +#pragma D binding "1.0" ENOSR +inline int ENOSTR = 91; +#pragma D binding "1.0" ENOSTR +inline int ETIME = 92; +#pragma D binding "1.0" ETIME +inline int ENOATTR = 93; +#pragma D binding "1.0" ENOATTR +inline int EMULTIHOP = 94; #pragma D binding "1.0" EMULTIHOP -inline int ENOLINK = 91; +inline int ENOLINK = 95; #pragma D binding "1.0" ENOLINK -inline int EPROTO = 92; +inline int EPROTO = 96; #pragma D binding "1.0" EPROTO -inline int ELAST = 92; +inline int EOWNERDEAD = 97; +#pragma D binding "1.0" EOWNERDEAD +inline int ENOTRECOVERABLE = 98; +#pragma D binding "1.0" ENOTRECOVERABLE +inline int ELAST = 98; #pragma D binding "1.0" ELAST -inline int ERESTART = -1; -#pragma D binding "1.0" ERESTART inline int EJUSTRETURN = -2; #pragma D binding "1.0" EJUSTRETURN -inline int ENOIOCTL = -3; -#pragma D binding "1.0" ENOIOCTL -inline int EDIRIOCTL = -4; -#pragma D binding "1.0" EDIRIOCTL +inline int ERESTART = -3; +#pragma D binding "1.0" ERESTART +inline int EPASSTHROUGH = -4; +#pragma D binding "1.0" EPASSTHROUGH +inline int EDUPFD = -5; +#pragma D binding "1.0" EDUPFD +inline int EMOVEFD = -6; +#pragma D binding "1.0" EMOVEFD Added files: Index: src/external/cddl/osnet/lib/libdtrace/make-errno-d.awk diff -u /dev/null src/external/cddl/osnet/lib/libdtrace/make-errno-d.awk:1.1 --- /dev/null Sun Mar 8 22:11:48 2020 +++ src/external/cddl/osnet/lib/libdtrace/make-errno-d.awk Sun Mar 8 22:11:48 2020 @@ -0,0 +1,45 @@ +BEGIN { + print "/* $NetBSD: make-errno-d.awk,v 1.1 2020/03/08 22:11:48 mgorny Exp $ */" + print "" + print "/*" + print " * This file is autogenerated. Please call:" + print " * awk make-errno-d.awk < ../../../../../sys/sys/errno.h" + print " * to get new data." + print " */" + print "" + print "/*" + print " * CDDL HEADER START" + print " *" + print " * The contents of this file are subject to the terms of the" + print " * Common Development and Distribution License, Version 1.0 only" + print " * (the \"License\"). You may not use this file except in compliance" + print " * with the License." + print " *" + print " * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE" + print " * or http://www.opensolaris.org/os/licensing.; + print " * See the License for the specific language governing permissions" + print " * and limitations under the License." + print " *" + print " * When distributing Covered Code, include this CDDL HEADER in each" + print " * file and include the License file at usr/src/OPENSOLARIS.LICENSE." + print " * If applicable, add the following below this CDDL HEADER, with the" + print " *
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Sun Mar 8 19:59:45 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Avoid unnecessary zil_commit on rm. 1. Issue zil_commit only if we're actually updating something -- there's no need to commit if we're unlinking the file or if there's no atime update being applied. 2. Issue zil_commit only if the zfs has sync=always set -- for sync=standard there's no need for us to commit anything here since no application asked for an explicit sync. Speeds up untarring base.tgz on top of itself by a factor of about 2x, and speeds up rm by a factor of about 10x, on my system with an SSD SLOG over SATA. Histogram of unlink, rmdir, and rename timing shows dramatic reduction in latency for most samples. (To be fair, this was not an improvement over zfs; issuing the unnecessary zil_commit was a self-inflicted performance wound.) To generate a diff of this commit: cvs rdiff -u -r1.62 -r1.63 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.62 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.63 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.62 Sun Feb 23 15:46:38 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sun Mar 8 19:59:45 2020 @@ -5858,10 +5858,10 @@ zfs_netbsd_reclaim(void *v) zp->z_atime_dirty = 0; dmu_tx_commit(tx); } - } - if (zfsvfs->z_log) - zil_commit(zfsvfs->z_log, zp->z_id); + if (zfsvfs->z_os->os_sync == ZFS_SYNC_ALWAYS) + zil_commit(zfsvfs->z_log, zp->z_id); + } if (zp->z_sa_hdl == NULL) zfs_znode_free(zp);
CVS commit: src/external/cddl/osnet/dist/tools/ctf/cvt
Module Name:src Committed By: riastradh Date: Thu Mar 5 16:05:06 UTC 2020 Modified Files: src/external/cddl/osnet/dist/tools/ctf/cvt: fixup_tdescs.c Log Message: Revert "Add fixup operation to remove private mutex types for x86." The x86 (and arm) definitions of struct kmutex are no longer defined differently depending on __MUTEX_PRIVATE. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c diff -u src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c:1.5 src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c:1.6 --- src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c:1.5 Tue Jul 16 07:27:35 2019 +++ src/external/cddl/osnet/dist/tools/ctf/cvt/fixup_tdescs.c Thu Mar 5 16:05:05 2020 @@ -280,48 +280,6 @@ fix_small_cpu_struct(tdata_t *td, size_t #ifdef __NetBSD__ /* - * The kmutex structure comes in two flavours, with or without __MUTEX_PRIVATE - * defined. Since many structures include kmutexes this causes massive amounts - * of duplication on merge (~ 40% for a GENERIC kernel). Remove the private - * fields if we see them. - */ -static void -fix_kmutex_private(tdata_t *td, size_t ptrsize) -{ - tdesc_t *desc; - mlist_t *ml; - - /* - * X86 kmutex is either - * union { - * volatile uintptr_t mtxa_owner; - * } u - * or - * union { - * volatile uintptr_t mtxa_owner; - * struct { - * ... - * } s; - * } u - * so we remove "struct s" if we find it. - */ - if ((desc = lookup_tdesc(td, "kmutex")) != NULL && - desc->t_type == STRUCT && - (ml = desc->t_members) != NULL && - streq(ml->ml_name, "u") && - (desc = ml->ml_type) != NULL && - desc->t_type == UNION && - (ml = desc->t_members) != NULL && - streq(ml->ml_name, "mtxa_owner") && - (ml = ml->ml_next) != NULL && - streq(ml->ml_name, "s") && - ml->ml_next == NULL) { - /* Found, delete member "s". */ - desc->t_members->ml_next = NULL; - } -} - -/* * XXX: A crude hack to bring down the number of types for a * GENRIC kernel below 2**15-1 (from ~34000 to ~29800). * @@ -377,7 +335,6 @@ cvt_fixups(tdata_t *td, size_t ptrsize) { fix_small_cpu_struct(td, ptrsize); #ifdef __NetBSD__ - fix_kmutex_private(td, ptrsize); fix_kill_attr(td, ptrsize); #endif }
CVS commit: src/external/cddl/osnet/sys/kern
Module Name:src Committed By: riastradh Date: Tue Mar 3 06:44:38 UTC 2020 Modified Files: src/external/cddl/osnet/sys/kern: printf.c Log Message: Use vpanic, not vprintf and then panic. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/kern/printf.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/kern/printf.c diff -u src/external/cddl/osnet/sys/kern/printf.c:1.2 src/external/cddl/osnet/sys/kern/printf.c:1.3 --- src/external/cddl/osnet/sys/kern/printf.c:1.2 Mon May 28 21:05:09 2018 +++ src/external/cddl/osnet/sys/kern/printf.c Tue Mar 3 06:44:38 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: printf.c,v 1.2 2018/05/28 21:05:09 chs Exp $ */ +/* $NetBSD: printf.c,v 1.3 2020/03/03 06:44:38 riastradh Exp $ */ /* * CDDL HEADER START @@ -41,10 +41,8 @@ vcmn_err(int ce, const char *fmt, va_lis char buf[256]; size_t len; - if (ce == CE_PANIC) { - vprintf(fmt, adx); - panic("panic"); - } + if (ce == CE_PANIC) + vpanic(fmt, adx); if ((uint_t)ce < CE_IGNORE) { strcpy(buf, ce_prefix[ce]);
CVS commit: src/external/cddl/osnet/dist/common/nvpair
Module Name:src Committed By: kamil Date: Mon Mar 2 15:45:33 UTC 2020 Modified Files: src/external/cddl/osnet/dist/common/nvpair: nvpair.c Log Message: Fix undefined behavior in misaligned pointer usage Detected by UBSan and already fixed upstream. Cherry-pick: >From aa0218d6a12814fac50b287214f9f3b0b99e11b1 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Tue, 7 Jan 2014 23:24:37 +0100 Subject: [PATCH] Fix nvlist 'Bus Error' for Sparc The mis-aligned memory accesses in nvpair_native_embedded() and nvpair_native_embedded_array() will cause a 'Bus Error' for architectures such as Sparc which not fully byte addressible. To avoid this issue care is taken to avoid dereferencing the potentially mis-aligned packed nvlist_t. Signed-off-by: Brian Behlendorf Signed-off-by: Ned Bass Signed-off-by: marku89 Issue #1700 To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dist/common/nvpair/nvpair.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/common/nvpair/nvpair.c diff -u src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.4 src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.5 --- src/external/cddl/osnet/dist/common/nvpair/nvpair.c:1.4 Mon May 28 21:05:04 2018 +++ src/external/cddl/osnet/dist/common/nvpair/nvpair.c Mon Mar 2 15:45:33 2020 @@ -2586,7 +2586,8 @@ nvpair_native_embedded(nvstream_t *nvs, * structure. The address may not be aligned, so we have * to use bzero. */ - bzero(>nvl_priv, sizeof (packed->nvl_priv)); + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); } return (nvs_embedded(nvs, EMBEDDED_NVL(nvp))); @@ -2614,7 +2615,8 @@ nvpair_native_embedded_array(nvstream_t * packed structure. The address may not be aligned, * so we have to use bzero. */ - bzero(>nvl_priv, sizeof (packed->nvl_priv)); + bzero((char *)packed + offsetof(nvlist_t, nvl_priv), + sizeof (uint64_t)); } return (nvs_embedded_nvl_array(nvs, nvp, NULL));
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: mlelstv Date: Sat Feb 29 17:15:43 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: vdev_disk.c Log Message: Use utility functions to handle disk geometry. To generate a diff of this commit: cvs rdiff -u -r1.13 -r1.14 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.13 src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.14 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c:1.13 Sun Dec 1 20:25:31 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/vdev_disk.c Sat Feb 29 17:15:43 2020 @@ -35,7 +35,6 @@ #include #include #include -#include #include #include @@ -147,10 +146,11 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi spa_t *spa = vd->vdev_spa; vdev_disk_t *dvd; vnode_t *vp; - struct dkwedge_info dkw; - struct disk *pdk; int error, cmd; - struct partinfo pinfo; + uint64_t numsecs; + unsigned secsize; + struct disk *pdk; + struct dkwedge_info dkw; /* * We must have a pathname, and it must be absolute. @@ -219,33 +219,15 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi return (SET_ERROR(EINVAL)); } + pdk = NULL; + if (getdiskinfo(vp, ) == 0) + pdk = disk_find(dkw.dkw_parent); + /* XXXNETBSD Once tls-maxphys gets merged this block becomes: - if (VOP_IOCTL(vp, DIOCGWEDGEINFO, , FREAD, NOCRED) == 0) - pdk = disk_find(dkw.dkw_parent); - else - pdk = disk_find_blk(vp->v_rdev); dvd->vd_maxphys = (pdk ? disk_maxphys(pdk) : MACHINE_MAXPHYS); */ { struct buf buf = { .b_bcount = MAXPHYS }; - - if (VOP_IOCTL(vp, DIOCGWEDGEINFO, , FREAD, NOCRED) == 0) { - pdk = disk_find(dkw.dkw_parent); - } else { - const char *dev_name; - - dev_name = devsw_blk2name(major(vp->v_rdev)); - if (dev_name) { -char disk_name[16]; - -snprintf(disk_name, sizeof(disk_name), "%s%d", -dev_name, DISKUNIT(vp->v_rdev)); -pdk = disk_find(disk_name); - } else { -pdk = NULL; - } - buf.b_dev = vp->v_rdev; - } if (pdk && pdk->dk_driver && pdk->dk_driver->d_minphys) (*pdk->dk_driver->d_minphys)(); dvd->vd_maxphys = buf.b_bcount; @@ -268,32 +250,22 @@ vdev_disk_open(vdev_t *vd, uint64_t *psi dvd->vd_vp = vp; skip_open: - /* - * Determine the actual size of the device. - * Try wedge info first as it supports larger disks. - */ - error = VOP_IOCTL(vp, DIOCGWEDGEINFO, , FREAD, NOCRED); - if (error == 0) { - pdk = disk_find(dkw.dkw_parent); - if (pdk) { - pinfo.pi_secsize = (1 << pdk->dk_byteshift); - pinfo.pi_size = dkw.dkw_size; - pinfo.pi_offset = dkw.dkw_offset; - } else - error = ENODEV; - } - if (error) - error = VOP_IOCTL(vp, DIOCGPARTINFO, , FREAD, kcred); + error = getdisksize(vp, , ); if (error != 0) { vd->vdev_stat.vs_aux = VDEV_AUX_OPEN_FAILED; return (SET_ERROR(error)); } - *psize = pinfo.pi_size * pinfo.pi_secsize; + + *psize = numsecs * secsize; *max_psize = *psize; - *ashift = highbit(MAX(pinfo.pi_secsize, SPA_MINBLOCKSIZE)) - 1; + *ashift = highbit(MAX(secsize, SPA_MINBLOCKSIZE)) - 1; *pashift = *ashift; - vd->vdev_wholedisk = (pinfo.pi_offset == 0); /* XXXNETBSD */ + + vd->vdev_wholedisk = 0; + if (getdiskinfo(vp, ) != 0 && + dkw.dkw_offset == 0 && dkw.dkw_size == numsecs) + vd->vdev_wholedisk = 1, /* * Clear the nowritecache bit, so that on a vdev_reopen() we will
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: mlelstv Date: Sat Feb 29 17:03:33 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zvol.c Log Message: Fix disk geometry calculation. Add DIOCGPARTINFO to support getdisksize() used by other drivers, filesystems and specfs. To generate a diff of this commit: cvs rdiff -u -r1.12 -r1.13 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.12 src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.13 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c:1.12 Wed May 22 08:47:02 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zvol.c Sat Feb 29 17:03:33 2020 @@ -72,6 +72,9 @@ #include #include #include +#ifdef __NetBSD__ +#include +#endif #include #include #include @@ -316,12 +319,17 @@ zvol_size_changed(zvol_state_t *zv, uint #endif /* __FreeBSD__ */ #ifdef __NetBSD__ struct disk_geom *dg = >zv_dk.dk_geom; + objset_t *os = zv->zv_objset; + spa_t *spa = dmu_objset_spa(os); + unsigned secsize; zv->zv_volsize = volsize; + secsize = MAX(DEV_BSIZE, 1U << spa->spa_max_ashift); + memset(dg, 0, sizeof(*dg)); - dg->dg_secsize = DEV_BSIZE; /* XXX 512? */ - dg->dg_secperunit = zv->zv_volsize / dg->dg_secsize;; + dg->dg_secsize = secsize; + dg->dg_secperunit = volsize / secsize; disk_set_info(NULL, >zv_dk, "ZVOL"); #endif } @@ -3589,19 +3597,47 @@ zvol_ioctl(dev_t dev, int cmd, intptr_t case DIOCGWEDGEINFO: { struct dkwedge_info *dkw = (void *) arg; - + struct disk_geom *dg = >zv_dk.dk_geom; + memset(dkw, 0, sizeof(*dkw)); strlcpy(dkw->dkw_devname, zv->zv_name, sizeof(dkw->dkw_devname)); + + /* + * dkw_parent is interpreted as disk device name by the kernel + * to locate the disk driver and its geometry data. The faked + * name "ZFS" must never match a device name. The kernel will + * then call DIOCGPARTINFO below to retrieve the missing + * information. + * + * Userland will also be confused, but it can use the + * proplib based DIOCGDISKINFO to get the geometry + * information. + */ strlcpy(dkw->dkw_parent, "ZFS", sizeof(dkw->dkw_parent)); - + dkw->dkw_offset = 0; - dkw->dkw_size = zv->zv_volsize / DEV_BSIZE; + dkw->dkw_size = dg->dg_secperunit; strcpy(dkw->dkw_ptype, DKW_PTYPE_FFS); break; } + case DIOCGPARTINFO: + { + struct partinfo *pi = (void *) arg; + struct disk_geom *dg = >zv_dk.dk_geom; + + memset(pi, 0, sizeof(*pi)); + pi->pi_offset = 0; + pi->pi_secsize = dg->dg_secsize; + pi->pi_size = dg->dg_secperunit; + pi->pi_fstype = FS_OTHER; + pi->pi_bsize = MAX(BLKDEV_IOSIZE, pi->pi_secsize); + + break; + } + default: dprintf("unknown disk_ioctl called\n"); error = ENOTTY;
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Fri Feb 28 03:52:26 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_ioctl.c Log Message: Teach zfs bdevsw to do b_psize. This is needed, among other things, to swap on zvols. Attempting to swap on zvols currently deadlocks but that's a separate issue that needs to be fixed too! To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.21 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.22 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c:1.21 Mon Oct 14 13:18:00 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c Fri Feb 28 03:52:26 2020 @@ -7062,6 +7062,29 @@ nb_zvol_strategy(struct buf *bp) (void) zvol_strategy(bp); } +static int +nb_zvol_psize(dev_t dev) +{ + minor_t minor = getminor(dev); + off_t nbytes; + unsigned bytespersector; + + if (minor == 0) /* /dev/zfs */ + return -1; + + if (zvol_ioctl(dev, DIOCGMEDIASIZE, (intptr_t), 0, + NOCRED, NULL)) + return -1; + if (zvol_ioctl(dev, DIOCGSECTORSIZE, (intptr_t), 0, + NOCRED, NULL)) + return -1; + if (bytespersector == 0) /* paranoia */ + return -1; + if (nbytes/bytespersector > INT_MAX) /* paranoia */ + return -1; + return nbytes/bytespersector; +} + static const struct fileops zfs_fileops = { .fo_name = "zfs", .fo_read = fbadop_read, @@ -7081,7 +7104,7 @@ const struct bdevsw zfs_bdevsw = { .d_strategy = nb_zvol_strategy, .d_ioctl = nb_zfsdev_ioctl, .d_dump = nodump, - .d_psize = nosize, + .d_psize = nb_zvol_psize, .d_flag = D_DISK | D_MPSAFE };
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Sun Feb 23 06:15:27 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Teach device nodes on zfs to handle fsync by calling spec_fsync too. To generate a diff of this commit: cvs rdiff -u -r1.60 -r1.61 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.60 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.61 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.60 Sun Feb 23 05:50:25 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sun Feb 23 06:15:27 2020 @@ -5509,6 +5509,19 @@ zfs_netbsd_fsync(void *v) } static int +zfs_spec_fsync(void *v) +{ + struct vop_fsync_args *ap = v; + int error; + + error = spec_fsync(v); + if (error) + return error; + + return (zfs_fsync(ap->a_vp, ap->a_flags, ap->a_cred, NULL)); +} + +static int zfs_netbsd_getattr(void *v) { struct vop_getattr_args *ap = v; @@ -6355,7 +6368,7 @@ const struct vnodeopv_entry_desc zfs_spe { _poll_desc, spec_poll }, { _kqfilter_desc, spec_kqfilter }, { _revoke_desc, spec_revoke }, - { _fsync_desc, zfs_netbsd_fsync }, + { _fsync_desc, zfs_spec_fsync }, { _remove_desc, spec_remove }, { _link_desc, spec_link }, { _lock_desc, zfs_netbsd_lock },
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Sun Feb 23 05:50:25 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Teach zfs spec nodes to VOP_BWRITE too. Fixes hang on writing to, e.g., ffs mounted on a device node that lives on zfs. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.59 -r1.60 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.59 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.60 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.59 Wed Feb 19 05:52:52 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sun Feb 23 05:50:25 2020 @@ -6376,6 +6376,7 @@ const struct vnodeopv_entry_desc zfs_spe { _islocked_desc, zfs_netbsd_islocked }, { _advlock_desc, spec_advlock }, { _strategy_desc, spec_strategy }, + { _bwrite_desc, spec_bwrite }, { _print_desc, zfs_netbsd_print }, { _fcntl_desc, zfs_netbsd_fcntl }, { NULL, NULL }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Wed Feb 19 17:05:06 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: spa_history.c Log Message: Mark previous #ifdef __NetBSD__, per request from hannken. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.5 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.6 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.5 Wed Feb 19 16:11:19 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c Wed Feb 19 17:05:06 2020 @@ -540,9 +540,17 @@ spa_history_log_internal_dd(dsl_dir_t *d void spa_history_log_version(spa_t *spa, const char *operation) { +#ifdef __NetBSD__ spa_history_log_internal(spa, operation, NULL, "pool version %llu; software version %llu/%d; %s %s %s %s %s", (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION, utsname.sysname, utsname.nodename, utsname.release, utsname.version, utsname.machine); +#else + spa_history_log_internal(spa, operation, NULL, + "pool version %llu; software version %llu/%d; uts %s %s %s %s", + (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION, + utsname.nodename, utsname.release, utsname.version, + utsname.machine); +#endif }
CVS commit: src/external/cddl/osnet
Module Name:src Committed By: riastradh Date: Wed Feb 19 16:11:19 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: spa_history.c src/external/cddl/osnet/sys/kern: misc.c Log Message: Report the OS name and release appropriately for NetBSD. We are not OpenSolaris or uts! To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c cvs rdiff -u -r1.7 -r1.8 src/external/cddl/osnet/sys/kern/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.4 src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.5 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c:1.4 Mon May 28 21:05:07 2018 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/spa_history.c Wed Feb 19 16:11:19 2020 @@ -541,8 +541,8 @@ void spa_history_log_version(spa_t *spa, const char *operation) { spa_history_log_internal(spa, operation, NULL, - "pool version %llu; software version %llu/%d; uts %s %s %s %s", + "pool version %llu; software version %llu/%d; %s %s %s %s %s", (u_longlong_t)spa_version(spa), SPA_VERSION, ZPL_VERSION, - utsname.nodename, utsname.release, utsname.version, + utsname.sysname, utsname.nodename, utsname.release, utsname.version, utsname.machine); } Index: src/external/cddl/osnet/sys/kern/misc.c diff -u src/external/cddl/osnet/sys/kern/misc.c:1.7 src/external/cddl/osnet/sys/kern/misc.c:1.8 --- src/external/cddl/osnet/sys/kern/misc.c:1.7 Tue Dec 31 14:51:29 2019 +++ src/external/cddl/osnet/sys/kern/misc.c Wed Feb 19 16:11:19 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.7 2019/12/31 14:51:29 pgoyette Exp $ */ +/* $NetBSD: misc.c,v 1.8 2020/02/19 16:11:19 riastradh Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -82,7 +82,7 @@ opensolaris_utsname_init(void *arg) strlcpy(utsname.sysname, ostype, sizeof(utsname.sysname)); strlcpy(utsname.nodename, hostname, sizeof(utsname.nodename)); strlcpy(utsname.release, osrelease, sizeof(utsname.release)); - strlcpy(utsname.version, "OpenSolaris", sizeof(utsname.version)); + strlcpy(utsname.version, version, sizeof(utsname.version)); strlcpy(utsname.machine, machine, sizeof(utsname.machine)); }
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Wed Feb 19 05:52:52 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Define VOP_STRATEGY on zfs device nodes too. Fixes eternal hangs in attempts to do I/O on device nodes on zfs. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.58 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.59 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.58 Sat Feb 15 19:03:15 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Wed Feb 19 05:52:52 2020 @@ -6375,6 +6375,7 @@ const struct vnodeopv_entry_desc zfs_spe { _mmap_desc, spec_mmap }, { _islocked_desc, zfs_netbsd_islocked }, { _advlock_desc, spec_advlock }, + { _strategy_desc, spec_strategy }, { _print_desc, zfs_netbsd_print }, { _fcntl_desc, zfs_netbsd_fcntl }, { NULL, NULL }
CVS commit: src/external/cddl/osnet/dist/cmd/zpool
Module Name:src Committed By: roy Date: Sun Feb 16 14:06:10 UTC 2020 Modified Files: src/external/cddl/osnet/dist/cmd/zpool: zpool_vdev.c Log Message: zpool: The NetBSD specific ioctl needs to include sys/ioctl.h To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c diff -u src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c:1.4 src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c:1.5 --- src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c:1.4 Mon May 28 21:05:04 2018 +++ src/external/cddl/osnet/dist/cmd/zpool/zpool_vdev.c Sun Feb 16 14:06:10 2020 @@ -80,6 +80,7 @@ #endif #ifdef __NetBSD__ #include +#include #endif #include "zpool_util.h"
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: riastradh Date: Sat Feb 15 19:03:15 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Teach zfs to revoke vnodes the usual way. XXX pullup To generate a diff of this commit: cvs rdiff -u -r1.57 -r1.58 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.57 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.58 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.57 Thu Feb 13 16:53:32 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sat Feb 15 19:03:15 2020 @@ -6309,6 +6309,7 @@ const struct vnodeopv_entry_desc zfs_vno { _ioctl_desc, zfs_netbsd_ioctl }, { _poll_desc, genfs_poll }, { _kqfilter_desc, genfs_kqfilter }, + { _revoke_desc, genfs_revoke }, { _fsync_desc, zfs_netbsd_fsync }, { _remove_desc, zfs_netbsd_remove }, { _link_desc, zfs_netbsd_link }, @@ -6353,6 +6354,7 @@ const struct vnodeopv_entry_desc zfs_spe { _ioctl_desc, spec_ioctl }, { _poll_desc, spec_poll }, { _kqfilter_desc, spec_kqfilter }, + { _revoke_desc, spec_revoke }, { _fsync_desc, zfs_netbsd_fsync }, { _remove_desc, spec_remove }, { _link_desc, spec_link }, @@ -6397,6 +6399,7 @@ const struct vnodeopv_entry_desc zfs_fif { _ioctl_desc, vn_fifo_bypass }, { _poll_desc, vn_fifo_bypass }, { _kqfilter_desc, vn_fifo_bypass }, + { _revoke_desc, vn_fifo_bypass }, { _fsync_desc, zfs_netbsd_fsync }, { _remove_desc, vn_fifo_bypass }, { _link_desc, vn_fifo_bypass },
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: hannken Date: Thu Feb 13 16:53:32 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: zfs_netbsd_setattr: ignore size changes on device nodes. To generate a diff of this commit: cvs rdiff -u -r1.56 -r1.57 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.56 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.57 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.56 Sat Jan 18 15:21:32 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Thu Feb 13 16:53:32 2020 @@ -5575,6 +5575,9 @@ zfs_netbsd_setattr(void *v) zflags = VTOZ(vp)->z_pflags; + /* Ignore size changes on device nodes. */ + if (vp->v_type == VBLK || vp->v_type == VCHR) + xvap.xva_vattr.va_mask &= ~AT_SIZE; if (vap->va_flags != VNOVAL) { int error;
CVS commit: src/external/cddl/osnet/dev/dtrace/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 06:05:23 UTC 2020 Modified Files: src/external/cddl/osnet/dev/dtrace/aarch64: dtrace_subr.c Log Message: Change the address ranges that aarch64 considers toxic for dtrace. `Toxic' means dtrace forbids D scripts from even attempting to read or write at them. Previously we considered [0, VM_MIN_KERNEL_ADDRESS) toxic, but VM_MIN_KERNEL_ADDRESS is only the minimum address of the kernel map; the direct-mapped region lies below it, and with PMAP_MAP_POOLPAGE we allocate virtual pages for pool backing directly from physical pages through the direct-mapped region. Also, this did not consider I/O mappings to be toxic, which they probably should be. Instead, treat: [0, AARCH64_KSEG_START) and [VM_KERNEL_IO_ADDRESS, 0xfff...ff) as toxic. (The upper bound for 0xfff...ff ought to be inclusive, not exclusive, but I think we'll need another mechanism for expressing that to dtrace!) To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.2 src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.3 --- src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.2 Wed Feb 12 01:09:38 2020 +++ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Wed Feb 12 06:05:23 2020 @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.2 2020/02/12 01:09:38 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.3 2020/02/12 06:05:23 riastradh Exp $"); #include #include @@ -128,7 +128,8 @@ void dtrace_toxic_ranges(void (*func)(uintptr_t base, uintptr_t limit)) { - (*func)(0, (uintptr_t)VM_MIN_KERNEL_ADDRESS); + (*func)(0, (uintptr_t)AARCH64_KSEG_START); + (*func)((uintptr_t)VM_KERNEL_IO_ADDRESS, ~(uintptr_t)0); } static void
CVS commit: src/external/cddl/osnet/dev/fbt/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 06:05:31 UTC 2020 Modified Files: src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c Log Message: Switch from db_write_bytes to using direct-mapping. This way there's no dependency on ddb. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.5 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.6 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.5 Wed Feb 12 01:10:25 2020 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 06:05:31 2020 @@ -37,7 +37,9 @@ #include #include -#include +#include + +#include #include @@ -92,9 +94,14 @@ fbt_invop(uintptr_t addr, struct trapfra void fbt_patch_tracepoint(fbt_probe_t *fbt, fbt_patchval_t val) { + paddr_t pa; + vaddr_t va; - db_write_bytes((db_addr_t)fbt->fbtp_patchpoint, sizeof(val), - (const void *)); + if (!pmap_extract(pmap_kernel(), (vaddr_t)fbt->fbtp_patchpoint, )) + return; + if (!mm_md_direct_mapped_phys(pa, )) + return; + *(fbt_patchval_t *)va = val; cpu_icache_sync_range((vm_offset_t)fbt->fbtp_patchpoint, sizeof(val)); }
CVS commit: src/external/cddl/osnet/dev/fbt/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:10:25 UTC 2020 Modified Files: src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c Log Message: Count the number of artificial frames in aarch64 fbt probe correctly. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.4 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.5 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.4 Wed Feb 12 01:09:48 2020 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:10:25 2020 @@ -52,6 +52,17 @@ #define FBT_ENTRY "entry" #define FBT_RETURN "return" +/* + * How many artificial frames appear between dtrace_probe and the + * interrupted function call? + * + * fbt_invop + * dtrace_invop + * dtrace_invop_start + * el1_trap_exit + */ +#define FBT_AFRAMES 4 + int fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t r0) { @@ -152,7 +163,7 @@ fbt_provide_module_cb(const char *name, #endif fbt->fbtp_name = name; fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, - name, FBT_ENTRY, 3, fbt); + name, FBT_ENTRY, FBT_AFRAMES, fbt); fbt->fbtp_patchpoint = instr; #ifdef __FreeBSD__ fbt->fbtp_ctl = lf; @@ -206,7 +217,7 @@ again: fbt->fbtp_name = name; if (retfbt == NULL) { fbt->fbtp_id = dtrace_probe_create(fbt_id, modname, - name, FBT_RETURN, 3, fbt); + name, FBT_RETURN, FBT_AFRAMES, fbt); } else { retfbt->fbtp_next = fbt; fbt->fbtp_id = retfbt->fbtp_id;
CVS commit: src/external/cddl/osnet/dev/fbt/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:09:48 UTC 2020 Modified Files: src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c Log Message: Tidy up a bit: don't set things we won't use; assert nonzeroness. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.3 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.4 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.3 Wed Feb 12 01:09:39 2020 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:09:48 2020 @@ -70,6 +70,7 @@ fbt_invop(uintptr_t addr, struct trapfra frame->tf_regs.r_reg[3], frame->tf_regs.r_reg[4]); cpu->cpu_dtrace_caller = 0; + KASSERT(fbt->fbtp_savedval != 0); return (fbt->fbtp_savedval); } } @@ -142,6 +143,7 @@ fbt_provide_module_cb(const char *name, if (instr >= limit) return (0); + KASSERT(*instr != 0); #ifdef __FreeBSD__ fbt = malloc(sizeof (fbt_probe_t), M_FBT, M_WAITOK | M_ZERO); @@ -161,7 +163,6 @@ fbt_provide_module_cb(const char *name, #endif fbt->fbtp_savedval = *instr; fbt->fbtp_patchval = FBT_PATCHVAL; - fbt->fbtp_rval = DTRACE_INVOP_PUSHM; fbt->fbtp_symindx = symindx; fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; @@ -192,6 +193,7 @@ again: if (instr >= limit) return (0); + KASSERT(*instr != 0); /* * We have a winner! @@ -219,13 +221,10 @@ again: #ifdef __NetBSD__ fbt->fbtp_ctl = mod; #endif - fbt->fbtp_symindx = symindx; - if ((*instr & B_MASK) == B_INSTR) - fbt->fbtp_rval = DTRACE_INVOP_B; - else - fbt->fbtp_rval = DTRACE_INVOP_RET; fbt->fbtp_savedval = *instr; fbt->fbtp_patchval = FBT_PATCHVAL; + fbt->fbtp_symindx = symindx; + fbt->fbtp_hashnext = fbt_probetab[FBT_ADDR2NDX(instr)]; fbt_probetab[FBT_ADDR2NDX(instr)] = fbt;
CVS commit: src/external/cddl/osnet/dev
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:09:39 UTC 2020 Modified Files: src/external/cddl/osnet/dev/dtrace/aarch64: dtrace_subr.c src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c Log Message: Tidy up a bit. No functional change intended. aarch64 fbt_invop doesn't actually use the argument, but it would make more sense for it to be the return value and/or first argument register. Certainly it's not `eax'! To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c diff -u src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.1 src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.2 --- src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c:1.1 Tue Dec 3 22:10:56 2019 +++ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c Wed Feb 12 01:09:38 2020 @@ -28,7 +28,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.1 2019/12/03 22:10:56 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dtrace_subr.c,v 1.2 2020/02/12 01:09:38 riastradh Exp $"); #include #include @@ -69,13 +69,13 @@ typedef struct dtrace_invop_hdlr { dtrace_invop_hdlr_t *dtrace_invop_hdlr; int -dtrace_invop(uintptr_t addr, struct trapframe *frame, uintptr_t eax) +dtrace_invop(uintptr_t addr, struct trapframe *frame, uintptr_t r0) { dtrace_invop_hdlr_t *hdlr; int rval; for (hdlr = dtrace_invop_hdlr; hdlr != NULL; hdlr = hdlr->dtih_next) - if ((rval = hdlr->dtih_func(addr, frame, eax)) != 0) + if ((rval = hdlr->dtih_func(addr, frame, r0)) != 0) return (rval); return (0); @@ -263,7 +263,7 @@ dtrace_invop_start(struct trapframe *fra int tmp; int i; - invop = dtrace_invop(frame->tf_pc, frame, frame->tf_pc); + invop = dtrace_invop(frame->tf_pc, frame, frame->tf_regs.r_reg[0]); tmp = (invop & LDP_STP_MASK); if (tmp == STP_64 || tmp == LDP_64) { Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.2 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.3 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.2 Wed Feb 12 01:09:27 2020 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:09:39 2020 @@ -53,7 +53,7 @@ #define FBT_RETURN "return" int -fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t rval) +fbt_invop(uintptr_t addr, struct trapframe *frame, uintptr_t r0) { solaris_cpu_t *cpu; fbt_probe_t *fbt;
CVS commit: src/external/cddl/osnet/dist/lib/libdtrace/common
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:10:08 UTC 2020 Modified Files: src/external/cddl/osnet/dist/lib/libdtrace/common: dt_impl.h dt_module.c dt_open.c Log Message: Use /dev/ksyms, not /netbsd, for the running kernel's symbols. To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 \ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h cvs rdiff -u -r1.17 -r1.18 \ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c cvs rdiff -u -r1.16 -r1.17 \ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h:1.8 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h:1.9 --- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h:1.8 Mon May 28 21:05:05 2018 +++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_impl.h Wed Feb 12 01:10:08 2020 @@ -750,8 +750,6 @@ extern int yylex(void); #endif #ifdef __NetBSD__ -extern const char *dt_bootfile(char *, size_t); - #define longlong_t long long #define u_longlong_t unsigned long long #define __DECONST(a, b) __UNCONST(b) Index: src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.17 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.18 --- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.17 Sat Jun 2 01:19:46 2018 +++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c Wed Feb 12 01:10:08 2020 @@ -43,6 +43,7 @@ #endif #ifdef __NetBSD__ #include +#include #endif #include @@ -1185,9 +1186,7 @@ dt_module_update(dtrace_hdl_t *dtp, stru bool ismod; if (strcmp("netbsd", name) == 0) { - /* want the kernel, but it is not absolute */ - dt_bootfile(machine, sizeof(machine)); - snprintf(fname, sizeof(fname), "/%s", machine); + strlcpy(fname, _PATH_KSYMS, sizeof fname); ismod = false; } else { Index: src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c:1.16 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c:1.17 --- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c:1.16 Wed Jul 24 16:57:45 2019 +++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_open.c Wed Feb 12 01:10:08 2020 @@ -1025,24 +1025,15 @@ dt_get_sysinfo(int cmd, char *buf, size_ } #endif -#ifndef illumos -# ifdef __FreeBSD__ -# define DEFKERNEL "kernel" -# define BOOTFILE "kern.bootfile" -# endif -# ifdef __NetBSD__ -# define DEFKERNEL "netbsd" -# define BOOTFILE "machdep.booted_kernel" -# endif - -const char * +#ifdef __FreeBSD__ +static const char * dt_bootfile(char *bootfile, size_t len) { char *p; size_t olen = len; - if (sysctlbyname(BOOTFILE, bootfile, , NULL, 0) != 0) - strlcpy(bootfile, DEFKERNEL, olen); + if (sysctlbyname("kern.bootfile", bootfile, , NULL, 0) != 0) + strlcpy(bootfile, "kernel", olen); if ((p = strrchr(bootfile, '/')) != NULL) p++; @@ -1050,9 +1041,6 @@ dt_bootfile(char *bootfile, size_t len) p = bootfile; return p; } - -# undef DEFKERNEL -# undef BOOTFILE #endif static dtrace_hdl_t *
CVS commit: src/external/cddl/osnet/dev/fbt/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:09:27 UTC 2020 Modified Files: src/external/cddl/osnet/dev/fbt/aarch64: fbt_isa.c Log Message: Use db_write_bytes to overwrite kernel text. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c diff -u src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.1 src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.2 --- src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c:1.1 Tue Dec 3 22:10:56 2019 +++ src/external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c Wed Feb 12 01:09:27 2020 @@ -36,6 +36,9 @@ #include #include #include + +#include + #include #include @@ -78,8 +81,9 @@ void fbt_patch_tracepoint(fbt_probe_t *fbt, fbt_patchval_t val) { - *fbt->fbtp_patchpoint = val; - cpu_icache_sync_range((vm_offset_t)fbt->fbtp_patchpoint, 4); + db_write_bytes((db_addr_t)fbt->fbtp_patchpoint, sizeof(val), + (const void *)); + cpu_icache_sync_range((vm_offset_t)fbt->fbtp_patchpoint, sizeof(val)); } #if defined(__FreeBSD__)
CVS commit: src/external/cddl/osnet/dev/dtrace/aarch64
Module Name:src Committed By: riastradh Date: Wed Feb 12 01:10:16 UTC 2020 Modified Files: src/external/cddl/osnet/dev/dtrace/aarch64: dtrace_isa.c Log Message: Teach dtrace about el1_trap_exit frames on aarch64. Implement dtrace_getarg and dtrace_getreg while here. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 \ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c diff -u src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c:1.1 src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c:1.2 --- src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c:1.1 Tue Dec 3 22:10:56 2019 +++ src/external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c Wed Feb 12 01:10:16 2020 @@ -89,52 +89,60 @@ void dtrace_getpcstack(pc_t *pcstack, int pcstack_limit, int aframes, uint32_t *intrpc) { - struct unwind_state state; - int scp_offset; - register_t sp, fp; - int depth; - - depth = 0; - - if (intrpc != 0) { - pcstack[depth++] = (pc_t) intrpc; + extern const char el1_trap_exit[]; + const register_t *fp; + int i = 0; + + if (intrpc) { + if (i < pcstack_limit) + pcstack[i++] = (pc_t)intrpc; } - aframes++; - - __asm __volatile("mov %0, sp" : "=" (sp)); - - state.fp = (uint64_t)__builtin_frame_address(0); - state.sp = sp; - state.pc = (uint64_t)dtrace_getpcstack; - - while (depth < pcstack_limit) { - if (!INKERNEL(state.pc) || !INKERNEL(state.fp)) - break; - - fp = state.fp; - state.sp = fp + 0x10; - /* FP to previous frame (X29) */ - state.fp = *(register_t *)(fp); - /* LR (X30) */ - state.pc = *(register_t *)(fp + 8) - 4; - - /* - * NB: Unlike some other architectures, we don't need to - * explicitly insert cpu_dtrace_caller as it appears in the - * normal kernel stack trace rather than a special trap frame. - */ - if (aframes > 0) { + /* + * fp[0] = x29 (saved frame pointer) + * fp[1] = x30 (saved link register == return address) + */ + fp = __builtin_frame_address(0); + while (i < pcstack_limit && INKERNEL(fp[0]) && INKERNEL(fp[1])) { + /* Skip the specified number of artificial frames. */ + if (aframes > 0) aframes--; + else + pcstack[i++] = fp[1]; + + /* Check whether this frame is handling a trap. */ + if (fp[1] == (register_t)el1_trap_exit) { + /* + * Trap from kernel. The trapframe is the + * saved frame pointer of the call to the trap + * handler whose return address is + * el1_trap_exit. The frame pointer of the + * interrupted code is in x29 stashed in the + * trapframe, alongside its pc. + */ + const struct trapframe *tf = (const void *)fp[0]; + /* x29 = frame pointer */ + fp = (const void *)tf->tf_regs.r_reg[29]; + if (INKERNEL(tf->tf_pc)) { +if (i >= pcstack_limit) + break; +if (aframes > 0) + aframes--; +else + pcstack[i++] = tf->tf_pc; + } } else { - pcstack[depth++] = state.pc; + /* + * Not a trap. Keep going with fp[0] as the + * parent frame pointer. + */ + fp = (const void *)fp[0]; } - } - for (; depth < pcstack_limit; depth++) { - pcstack[depth] = 0; - } + /* Zero the rest of the return address stack. (Paranoia?) */ + while (i < pcstack_limit) + pcstack[i++] = 0; } static int @@ -282,48 +290,78 @@ dtrace_getufpstack(uint64_t *pcstack, ui uint64_t dtrace_getarg(int arg, int aframes) { + extern const char el1_trap_exit[]; + const register_t *fp; + const struct trapframe *tf = NULL; + int i = 0; - printf("IMPLEMENT ME: %s\n", __func__); + /* + * The first arguments are passed in x0,...,x7. The rest are + * on the stack, too much trouble to figure out. + * + * XXX Shouldn't we ask ctf or dwarf or something to figure + * this stuff out for us? + */ + KASSERT(arg >= 0); + if (arg >= 8) + return 0; + + fp = __builtin_frame_address(0); + while (i < 1000 && INKERNEL(fp[0]) && INKERNEL(fp[1])) { + if (aframes > 0) + aframes--; + else + i++; + if (fp[1] == (register_t)el1_trap_exit) { + tf = (const void *)fp[0]; + break; + } else { + fp = (const void *)fp[0]; + } + } - return (0); + /* If we didn't find a trap frame, give up. */ + if (tf == NULL) + return 0; + + /* Arg0, arg1, ..., arg7 are in registers x0, x1, ..., x7. */ + return tf->tf_regs.r_reg[arg]; } int dtrace_getstackdepth(int aframes) { - struct unwind_state state; - int scp_offset; - register_t sp; - int depth; - int done; - - depth = 1; - done = 0; - - __asm __volatile("mov %0, sp" : "=" (sp)); - - state.fp = (uint64_t)__builtin_frame_address(0); - state.sp = sp; - state.pc = (uint64_t)dtrace_getstackdepth; - - do { - done = unwind_frame(); - if (!INKERNEL(state.pc) || !INKERNEL(state.fp)) - break; - depth++; - } while (!done); + extern const char el1_trap_exit[]; + const register_t *fp; + int i = 0; + + fp = __builtin_frame_address(0);
CVS commit: src/external/cddl/osnet/usr.bin/ctfconvert
Module Name:src Committed By: fox Date: Sun Feb 9 07:55:13 UTC 2020 Modified Files: src/external/cddl/osnet/usr.bin/ctfconvert: Makefile Log Message: external/cddl/osnet: Suppress -Werror=stringop-truncation error. Add GCC_NO_STRINGOP_TRUNCATION dwarf.c to prevent build failure. Error was reported when build.sh was run with MKLIBCSANITIZER=yes flag. Reviewed by: kamil@ To generate a diff of this commit: cvs rdiff -u -r1.8 -r1.9 src/external/cddl/osnet/usr.bin/ctfconvert/Makefile Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/usr.bin/ctfconvert/Makefile diff -u src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.8 src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.9 --- src/external/cddl/osnet/usr.bin/ctfconvert/Makefile:1.8 Mon May 28 21:05:11 2018 +++ src/external/cddl/osnet/usr.bin/ctfconvert/Makefile Sun Feb 9 07:55:13 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.8 2018/05/28 21:05:11 chs Exp $ +# $NetBSD: Makefile,v 1.9 2020/02/09 07:55:13 fox Exp $ # $FreeBSD: head/cddl/usr.bin/ctfconvert/Makefile 314654 2017-03-04 11:30:04Z ngie $ @@ -34,6 +34,7 @@ SRCS= alist.c \ traverse.c \ util.c +COPTS.dwarf.c += ${GCC_NO_STRINGOP_TRUNCATION} COPTS.st_parse.c += -Wno-format-nonliteral COPTS.util.c += -Wno-format-nonliteral
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: ad Date: Sat Jan 18 15:21:32 UTC 2020 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: zfs_vnops.c Log Message: Track page dirtyness for ZFS (yamt-pagecache). I had forgotten that it had its own cache. Thanks to hannken@ for the repro. To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.55 src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.56 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c:1.55 Wed Jan 15 17:55:43 2020 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c Sat Jan 18 15:21:32 2020 @@ -779,7 +779,7 @@ update_pages(vnode_t *vp, int64_t start, struct uvm_object *uobj = >v_uobj; kmutex_t *mtx = uobj->vmobjlock; caddr_t va; - int off; + int off, status; ASSERT(vp->v_mount != NULL); @@ -796,6 +796,26 @@ update_pages(vnode_t *vp, int64_t start, found = uvn_findpages(uobj, start, , , NULL, UFP_NOALLOC); if (found) { + /* + * We're about to zap the page's contents and don't + * care about any existing modifications. We must + * keep track of any new modifications past this + * point. Clear the modified bit in the pmap, and + * if the page is marked dirty revert to tracking + * the modified bit. + */ + switch (uvm_pagegetdirty(pp)) { + case UVM_PAGE_STATUS_DIRTY: +/* Does pmap_clear_modify(). */ +uvm_pagemarkdirty(pp, UVM_PAGE_STATUS_UNKNOWN); +break; + case UVM_PAGE_STATUS_UNKNOWN: +pmap_clear_modify(pp); +break; + case UVM_PAGE_STATUS_CLEAN: +/* Nothing to do. */ +break; + } mutex_exit(mtx); va = zfs_map_page(pp, S_WRITE); @@ -5990,10 +6010,13 @@ zfs_netbsd_getpages(void *v) mutex_enter(mtx); pg->flags &= ~(PG_FAKE); - pmap_clear_modify(pg); } if (memwrite) { + if (uvm_pagegetdirty(pg) == UVM_PAGE_STATUS_CLEAN) { + /* For write faults, start dirtiness tracking. */ + uvm_pagemarkdirty(pg, UVM_PAGE_STATUS_UNKNOWN); + } if ((vp->v_iflag & VI_ONWORKLST) == 0) { vn_syncer_add_to_worklist(vp, filedelay); }
CVS commit: src/external/cddl/osnet/sys/kern
Module Name:src Committed By: pgoyette Date: Tue Dec 31 14:51:29 UTC 2019 Modified Files: src/external/cddl/osnet/sys/kern: misc.c Log Message: Another rename from uvm_free() --> uvm_availmem() To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/external/cddl/osnet/sys/kern/misc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/kern/misc.c diff -u src/external/cddl/osnet/sys/kern/misc.c:1.6 src/external/cddl/osnet/sys/kern/misc.c:1.7 --- src/external/cddl/osnet/sys/kern/misc.c:1.6 Sat Dec 21 13:00:20 2019 +++ src/external/cddl/osnet/sys/kern/misc.c Tue Dec 31 14:51:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.6 2019/12/21 13:00:20 ad Exp $ */ +/* $NetBSD: misc.c,v 1.7 2019/12/31 14:51:29 pgoyette Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -130,7 +130,7 @@ kmem_reap(void) int bufcnt; struct pool *pp; - bufcnt = uvmexp.freetarg - uvm_free(); + bufcnt = uvmexp.freetarg - uvm_availmem(); if (bufcnt < 0) bufcnt = 0;
CVS commit: src/external/cddl/osnet/dist/uts/common/fs/zfs
Module Name:src Committed By: sevan Date: Mon Dec 9 00:15:11 UTC 2019 Modified Files: src/external/cddl/osnet/dist/uts/common/fs/zfs: arc.c Log Message: We currently lack a tunable to control ZFS prefetch, so skip the warning and FreeBSD specific instructions on settings. To generate a diff of this commit: cvs rdiff -u -r1.15 -r1.16 \ src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c diff -u src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.15 src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.16 --- src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c:1.15 Sun Dec 1 20:26:05 2019 +++ src/external/cddl/osnet/dist/uts/common/fs/zfs/arc.c Mon Dec 9 00:15:11 2019 @@ -6218,6 +6218,7 @@ arc_init(void) } #ifdef _KERNEL +#ifdef __FreeBSD__ if (TUNABLE_INT_FETCH("vfs.zfs.prefetch_disable", _prefetch_disable)) prefetch_tunable_set = 1; @@ -6239,6 +6240,7 @@ arc_init(void) zfs_prefetch_disable = 1; } #endif +#endif /* Warn about ZFS memory and address space requirements. */ if (((uint64_t)physmem * PAGESIZE) < (256 + 128 + 64) * (1 << 20)) { printf("ZFS WARNING: Recommended minimum RAM size is 512MB; " @@ -6247,9 +6249,11 @@ arc_init(void) if (kmem_size() < 512 * (1 << 20)) { printf("ZFS WARNING: Recommended minimum kmem_size is 512MB; " "expect unstable behavior.\n"); +#ifdef __FreeBSD__ printf(" Consider tuning vm.kmem_size and " "vm.kmem_size_max\n"); printf(" in /boot/loader.conf.\n"); +#endif } #endif }
CVS commit: src/external/cddl/osnet/sys/sys
Module Name:src Committed By: riastradh Date: Thu Dec 5 03:21:42 UTC 2019 Modified Files: src/external/cddl/osnet/sys/sys: opentypes.h Log Message: Avoid redefining uint_t if compat_defs.h already defines them. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/external/cddl/osnet/sys/sys/opentypes.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. Modified files: Index: src/external/cddl/osnet/sys/sys/opentypes.h diff -u src/external/cddl/osnet/sys/sys/opentypes.h:1.4 src/external/cddl/osnet/sys/sys/opentypes.h:1.5 --- src/external/cddl/osnet/sys/sys/opentypes.h:1.4 Thu Sep 6 00:44:43 2018 +++ src/external/cddl/osnet/sys/sys/opentypes.h Thu Dec 5 03:21:42 2019 @@ -21,10 +21,12 @@ typedef struct timespec timestruc_t; #define __defined_ts_t typedef struct timespec timespec_t; #endif +#ifndef HAVE_NBTOOL_CONFIG_H typedef unsigned int uint_t; typedef unsigned char uchar_t; typedef unsigned short ushort_t; typedef unsigned long ulong_t; +#endif typedef off_t off64_t; typedef id_t taskid_t; typedef id_t projid_t;