aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UPDATING6
-rw-r--r--contrib/blocklist/bin/blacklistctl.83
-rw-r--r--contrib/blocklist/bin/blacklistd.c18
-rw-r--r--contrib/blocklist/bin/blocklistctl.811
-rw-r--r--contrib/blocklist/bin/blocklistctl.c8
-rw-r--r--contrib/blocklist/bin/blocklistd.c18
-rwxr-xr-xcontrib/blocklist/libexec/blocklistd-helper2
-rw-r--r--lib/geom/Makefile.inc11
-rw-r--r--lib/libarchive/Makefile9
-rw-r--r--lib/libc/locale/Makefile.inc2
-rw-r--r--lib/libc/posix1e/Makefile.inc3
-rw-r--r--lib/libc/posix1e/mac_free.34
-rw-r--r--lib/libc/posix1e/mac_text.38
-rw-r--r--lib/libc/regex/Makefile.inc8
-rw-r--r--lib/libc/rpc/Makefile.inc4
-rw-r--r--lib/libc/string/ffs.313
-rw-r--r--lib/libedit/Makefile6
-rw-r--r--lib/libmagic/Makefile8
-rw-r--r--lib/libpam/libpam/Makefile6
-rw-r--r--lib/libpam/static_libpam/Makefile1
-rw-r--r--lib/libpcap/Makefile13
-rw-r--r--lib/libradius/Makefile4
-rw-r--r--lib/libtacplus/Makefile4
-rw-r--r--lib/libutil/Makefile3
-rw-r--r--lib/libwrap/Makefile17
-rw-r--r--lib/libxo/libxo/Makefile2
-rw-r--r--lib/ncurses/tinfo/Makefile6
-rw-r--r--lib/nss_tacplus/Makefile2
-rw-r--r--libexec/blocklistd-helper/blacklistd-helper2
-rw-r--r--libexec/flua/Makefile2
-rw-r--r--libexec/flua/Makefile.inc2
-rw-r--r--release/packages/ucl/bsdinstall.ucl5
-rw-r--r--release/packages/ucl/dhclient-all.ucl2
-rw-r--r--release/packages/ucl/dhclient.ucl26
-rw-r--r--release/packages/ucl/flua-all.ucl32
-rw-r--r--release/packages/ucl/local-unbound.ucl8
-rw-r--r--release/packages/ucl/nuageinit-all.ucl7
-rw-r--r--release/packages/ucl/tests.ucl27
-rw-r--r--release/scripts/mtree-to-plist.awk6
-rw-r--r--sbin/ipfw/dummynet.c4
-rw-r--r--sbin/ipfw/ipfw2.c2
-rw-r--r--sbin/nvmecontrol/perftest.c2
-rw-r--r--sbin/pfctl/parse.y2
-rw-r--r--share/examples/mdoc/example.123
-rw-r--r--share/examples/mdoc/example.323
-rw-r--r--share/examples/mdoc/example.423
-rw-r--r--share/examples/mdoc/example.923
-rw-r--r--share/man/man3/Makefile1
-rw-r--r--share/man/man3/queue.36
-rw-r--r--share/man/man3/siginfo.32
-rw-r--r--share/man/man4/acpi_battery.44
-rw-r--r--share/man/man4/ahc.42
-rw-r--r--share/man/man4/bce.42
-rw-r--r--share/man/man4/iwlwifi.42
-rw-r--r--share/man/man4/mac_do.42
-rw-r--r--share/man/man4/p9fs.42
-rw-r--r--share/man/man5/Makefile70
-rw-r--r--share/man/man5/pf.conf.52
-rw-r--r--share/man/man5/rc.conf.54
-rw-r--r--share/man/man7/arch.72
-rw-r--r--share/man/man7/build.74
-rw-r--r--share/man/man8/debug.sh.84
-rw-r--r--share/man/man8/rc.subr.82
-rw-r--r--share/man/man9/Makefile2
-rw-r--r--share/man/man9/deadfs.92
-rw-r--r--share/man/man9/g_bio.93
-rw-r--r--share/mk/bsd.lib.mk13
-rw-r--r--share/mk/bsd.man.mk26
-rw-r--r--stand/Makefile.inc2
-rw-r--r--stand/userboot/Makefile.inc4
-rw-r--r--sys/cam/ata/ata_da.c4
-rw-r--r--sys/cam/scsi/scsi_da.c4
-rw-r--r--sys/conf/dtb.mk2
-rw-r--r--sys/contrib/openzfs/.mailmap8
-rw-r--r--sys/contrib/openzfs/AUTHORS14
-rw-r--r--sys/contrib/openzfs/cmd/zdb/zdb.c6
-rw-r--r--sys/contrib/openzfs/cmd/zpool/zpool_main.c133
-rw-r--r--sys/contrib/openzfs/config/kernel-block-device-operations.m434
-rw-r--r--sys/contrib/openzfs/config/kernel-drop-inode.m424
-rw-r--r--sys/contrib/openzfs/config/kernel-namespace.m431
-rw-r--r--sys/contrib/openzfs/config/kernel-userns-capabilities.m479
-rw-r--r--sys/contrib/openzfs/config/kernel-writeback.m458
-rw-r--r--sys/contrib/openzfs/config/kernel-writepage_t.m426
-rw-r--r--sys/contrib/openzfs/config/kernel.m48
-rw-r--r--sys/contrib/openzfs/include/os/linux/kernel/linux/vfs_compat.h7
-rw-r--r--sys/contrib/openzfs/man/man8/zpool-remove.84
-rw-r--r--sys/contrib/openzfs/module/icp/algs/sha2/sha2_generic.c41
-rw-r--r--sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c2
-rw-r--r--sys/contrib/openzfs/module/os/linux/spl/spl-zone.c19
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/abd_os.c9
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c2
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zfs_vnops_os.c5
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c74
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zpl_super.c4
-rw-r--r--sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c32
-rw-r--r--sys/contrib/openzfs/module/zfs/vdev_removal.c80
-rw-r--r--sys/contrib/openzfs/module/zfs/zvol.c2
-rwxr-xr-xsys/contrib/openzfs/scripts/zfs-tests.sh4
-rwxr-xr-xsys/contrib/openzfs/tests/test-runner/bin/test-runner.py.in33
-rw-r--r--sys/fs/fuse/fuse_device.c7
-rw-r--r--sys/fs/msdosfs/msdosfs_vnops.c3
-rw-r--r--sys/isa/isa_common.c2
-rw-r--r--sys/kern/vfs_default.c1
-rw-r--r--sys/modules/thunderbolt/Makefile2
-rw-r--r--sys/modules/zfs/zfs_config.h17
-rw-r--r--sys/modules/zfs/zfs_gitrev.h2
-rw-r--r--sys/netinet/tcp_timer.c7
-rw-r--r--sys/sys/unistd.h1
-rw-r--r--tests/sys/fs/fusefs/mockfs.cc4
-rw-r--r--tests/sys/fs/fusefs/mockfs.hh4
-rw-r--r--tests/sys/fs/fusefs/notify.cc56
-rw-r--r--usr.bin/mandoc/mandoc.ucl20
-rw-r--r--usr.sbin/bluetooth/rtlbtfw/main.c2
-rw-r--r--usr.sbin/bsnmpd/bsnmpd/Makefile203
-rw-r--r--usr.sbin/cxgbetool/tcbshowt7.c2
-rw-r--r--usr.sbin/fwcontrol/fwcontrol.c2
-rw-r--r--usr.sbin/pmcstat/pmcstat.c2
117 files changed, 1073 insertions, 597 deletions
diff --git a/UPDATING b/UPDATING
index 448febb5ba1a..d89afb7ef429 100644
--- a/UPDATING
+++ b/UPDATING
@@ -27,6 +27,12 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 16.x IS SLOW:
world, or to merely disable the most expensive debugging functionality
at runtime, run "ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20251025:
+ flua(1) has moved to the new FreeBSD-flua package. If you use flua,
+ you may want to install this package if it's not otherwise installed
+ as a dependency of something else. This change only affects pkgbase
+ users.
+
20251021:
Bump __FreeBSD_version to 1600002 for LinuxKPI. An embedded struct
has changed size and might possibly be an issue otherwise.
diff --git a/contrib/blocklist/bin/blacklistctl.8 b/contrib/blocklist/bin/blacklistctl.8
index 4d557c0c979d..08f1d1b9e5af 100644
--- a/contrib/blocklist/bin/blacklistctl.8
+++ b/contrib/blocklist/bin/blacklistctl.8
@@ -45,7 +45,6 @@ is a program used to display and change the state of the
database.
The following sub-commands are supported:
.Ss dump
-.Pp
The following options are available for the
.Cm dump
sub-command:
@@ -90,7 +89,7 @@ associated with the database entry.
column will show the identifier for the packet filter rule associated
with the database entry, though this may only be the word
.Ql OK
-for packet filters which do not creat a unique identifier for each rule.
+for packet filters which do not create a unique identifier for each rule.
.It Ql nfail
The number of
.Em failures
diff --git a/contrib/blocklist/bin/blacklistd.c b/contrib/blocklist/bin/blacklistd.c
index ded3075ed707..b5f9358122ef 100644
--- a/contrib/blocklist/bin/blacklistd.c
+++ b/contrib/blocklist/bin/blacklistd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: blocklistd.c,v 1.10 2025/03/26 17:09:35 christos Exp $ */
+/* $NetBSD: blocklistd.c,v 1.11 2025/10/25 16:55:23 christos Exp $ */
/*-
* Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
-__RCSID("$NetBSD: blocklistd.c,v 1.10 2025/03/26 17:09:35 christos Exp $");
+__RCSID("$NetBSD: blocklistd.c,v 1.11 2025/10/25 16:55:23 christos Exp $");
#include <sys/types.h>
#include <sys/socket.h>
@@ -191,12 +191,12 @@ process(bl_t bl)
}
if (getremoteaddress(bi, &rss, &rsl) == -1)
- goto out;
+ return;
if (debug || bi->bi_msg[0]) {
sockaddr_snprintf(rbuf, sizeof(rbuf), "%a:%p", (void *)&rss);
(*lfun)(bi->bi_msg[0] ? LOG_INFO : LOG_DEBUG,
- "processing type=%d fd=%d remote=%s msg=%s uid=%lu gid=%lu",
+ "processing type=%d fd=%d remote=%s msg=\"%s\" uid=%lu gid=%lu",
bi->bi_type, bi->bi_fd, rbuf,
bi->bi_msg, (unsigned long)bi->bi_uid,
(unsigned long)bi->bi_gid);
@@ -204,12 +204,12 @@ process(bl_t bl)
if (conf_find(bi->bi_fd, bi->bi_uid, &rss, &c) == NULL) {
(*lfun)(LOG_DEBUG, "no rule matched");
- goto out;
+ return;
}
if (state_get(state, &c, &dbi) == -1)
- goto out;
+ return;
if (debug) {
char b1[128], b2[128];
@@ -226,7 +226,7 @@ process(bl_t bl)
* set the number of fails to be one less than the
* configured limit. Fallthrough to the normal BL_ADD
* processing, which will increment the failure count
- * to the threshhold, and block the abusive address.
+ * to the threshold, and block the abusive address.
*/
if (c.c_nfail != -1)
dbi.count = c.c_nfail - 1;
@@ -269,8 +269,6 @@ process(bl_t bl)
state_put(state, &c, &dbi);
out:
- close(bi->bi_fd);
-
if (debug) {
char b1[128], b2[128];
(*lfun)(LOG_DEBUG, "%s: final db state for %s: count=%d/%d "
@@ -565,7 +563,7 @@ main(int argc, char *argv[])
conf_parse(configfile);
}
ret = poll(pfd, (nfds_t)nfd, tout);
- if (debug)
+ if (debug && ret != 0)
(*lfun)(LOG_DEBUG, "received %d from poll()", ret);
switch (ret) {
case -1:
diff --git a/contrib/blocklist/bin/blocklistctl.8 b/contrib/blocklist/bin/blocklistctl.8
index a98c16374f19..75228599a9de 100644
--- a/contrib/blocklist/bin/blocklistctl.8
+++ b/contrib/blocklist/bin/blocklistctl.8
@@ -1,4 +1,4 @@
-.\" $NetBSD: blocklistctl.8,v 1.4 2025/02/07 01:35:38 kre Exp $
+.\" $NetBSD: blocklistctl.8,v 1.5 2025/10/25 16:56:27 christos Exp $
.\"
.\" Copyright (c) 2015 The NetBSD Foundation, Inc.
.\" All rights reserved.
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd January 27, 2025
+.Dd October 25, 2025
.Dt BLOCKLISTCTL 8
.Os
.Sh NAME
@@ -45,7 +45,6 @@ is a program used to display and change the state of the
database.
The following sub-commands are supported:
.Ss dump
-.Pp
The following options are available for the
.Cm dump
sub-command:
@@ -83,6 +82,10 @@ sub-command consists of a header (unless
was given) and one line for each record in the database, where each line
has the following columns:
.Bl -tag -width indent
+.It Ql rulename
+The packet filter rule name associated with the database entry,
+usually
+.Dv blocklistd .
.It Ql address/ma:port
The remote address, mask, and local port number of the client connection
associated with the database entry.
@@ -90,7 +93,7 @@ associated with the database entry.
column will show the identifier for the packet filter rule associated
with the database entry, though this may only be the word
.Ql OK
-for packet filters which do not creat a unique identifier for each rule.
+for packet filters which do not create a unique identifier for each rule.
.It Ql nfail
The number of
.Em failures
diff --git a/contrib/blocklist/bin/blocklistctl.c b/contrib/blocklist/bin/blocklistctl.c
index 8c75e0430c61..b43d8b8aaab3 100644
--- a/contrib/blocklist/bin/blocklistctl.c
+++ b/contrib/blocklist/bin/blocklistctl.c
@@ -1,4 +1,4 @@
-/* $NetBSD: blocklistctl.c,v 1.4 2025/02/11 17:48:30 christos Exp $ */
+/* $NetBSD: blocklistctl.c,v 1.5 2025/10/25 16:56:10 christos Exp $ */
/*-
* Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
-__RCSID("$NetBSD: blocklistctl.c,v 1.4 2025/02/11 17:48:30 christos Exp $");
+__RCSID("$NetBSD: blocklistctl.c,v 1.5 2025/10/25 16:56:10 christos Exp $");
#include <stdio.h>
#include <time.h>
@@ -135,7 +135,7 @@ main(int argc, char *argv[])
clock_gettime(CLOCK_REALTIME, &ts);
wide = wide ? 8 * 4 + 7 : 4 * 3 + 3;
if (!noheader)
- printf("%*.*s/ma:port\tid\tnfail\t%s\n", wide, wide,
+ printf("rulename\t%*.*s/ma:port\tid\tnfail\t%s\n", wide, wide,
"address", remain ? "remaining time" : "last access");
for (i = 1; state_iterate(db, &c, &dbi, i) != 0; i = 0) {
char buf[BUFSIZ];
@@ -150,7 +150,7 @@ main(int argc, char *argv[])
}
}
sockaddr_snprintf(buf, sizeof(buf), "%a", (void *)&c.c_ss);
- printf("%*.*s/%s:%s\t", wide, wide, buf,
+ printf("%s\t%*.*s/%s:%s\t", c.c_name, wide, wide, buf,
star(mbuf, sizeof(mbuf), c.c_lmask),
star(pbuf, sizeof(pbuf), c.c_port));
if (c.c_duration == -1) {
diff --git a/contrib/blocklist/bin/blocklistd.c b/contrib/blocklist/bin/blocklistd.c
index 03a1dbbf056c..c78c560613fc 100644
--- a/contrib/blocklist/bin/blocklistd.c
+++ b/contrib/blocklist/bin/blocklistd.c
@@ -1,4 +1,4 @@
-/* $NetBSD: blocklistd.c,v 1.10 2025/03/26 17:09:35 christos Exp $ */
+/* $NetBSD: blocklistd.c,v 1.11 2025/10/25 16:55:23 christos Exp $ */
/*-
* Copyright (c) 2015 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#endif
-__RCSID("$NetBSD: blocklistd.c,v 1.10 2025/03/26 17:09:35 christos Exp $");
+__RCSID("$NetBSD: blocklistd.c,v 1.11 2025/10/25 16:55:23 christos Exp $");
#include <sys/types.h>
#include <sys/socket.h>
@@ -191,12 +191,12 @@ process(bl_t bl)
}
if (getremoteaddress(bi, &rss, &rsl) == -1)
- goto out;
+ return;
if (debug || bi->bi_msg[0]) {
sockaddr_snprintf(rbuf, sizeof(rbuf), "%a:%p", (void *)&rss);
(*lfun)(bi->bi_msg[0] ? LOG_INFO : LOG_DEBUG,
- "processing type=%d fd=%d remote=%s msg=%s uid=%lu gid=%lu",
+ "processing type=%d fd=%d remote=%s msg=\"%s\" uid=%lu gid=%lu",
bi->bi_type, bi->bi_fd, rbuf,
bi->bi_msg, (unsigned long)bi->bi_uid,
(unsigned long)bi->bi_gid);
@@ -204,12 +204,12 @@ process(bl_t bl)
if (conf_find(bi->bi_fd, bi->bi_uid, &rss, &c) == NULL) {
(*lfun)(LOG_DEBUG, "no rule matched");
- goto out;
+ return;
}
if (state_get(state, &c, &dbi) == -1)
- goto out;
+ return;
if (debug) {
char b1[128], b2[128];
@@ -226,7 +226,7 @@ process(bl_t bl)
* set the number of fails to be one less than the
* configured limit. Fallthrough to the normal BL_ADD
* processing, which will increment the failure count
- * to the threshhold, and block the abusive address.
+ * to the threshold, and block the abusive address.
*/
if (c.c_nfail != -1)
dbi.count = c.c_nfail - 1;
@@ -269,8 +269,6 @@ process(bl_t bl)
state_put(state, &c, &dbi);
out:
- close(bi->bi_fd);
-
if (debug) {
char b1[128], b2[128];
(*lfun)(LOG_DEBUG, "%s: final db state for %s: count=%d/%d "
@@ -565,7 +563,7 @@ main(int argc, char *argv[])
conf_parse(configfile);
}
ret = poll(pfd, (nfds_t)nfd, tout);
- if (debug)
+ if (debug && ret != 0)
(*lfun)(LOG_DEBUG, "received %d from poll()", ret);
switch (ret) {
case -1:
diff --git a/contrib/blocklist/libexec/blocklistd-helper b/contrib/blocklist/libexec/blocklistd-helper
index 14a192ee35ce..1d4a38b1d831 100755
--- a/contrib/blocklist/libexec/blocklistd-helper
+++ b/contrib/blocklist/libexec/blocklistd-helper
@@ -259,7 +259,7 @@ flush)
# dynamically determine which anchors exist
for anchor in $(/sbin/pfctl -a "$2" -s Anchors 2> /dev/null); do
/sbin/pfctl -a "$anchor" -t "port${anchor##*/}" -T flush 2> /dev/null
- /sbin/pfctl -a "$anchor" -F rules
+ /sbin/pfctl -a "$anchor" -F rules 2> /dev/null
done
echo OK
;;
diff --git a/lib/geom/Makefile.inc b/lib/geom/Makefile.inc
index 35163127538d..75d312a94fe4 100644
--- a/lib/geom/Makefile.inc
+++ b/lib/geom/Makefile.inc
@@ -1,10 +1,11 @@
.include <src.opts.mk>
-SHLIBDIR=${GEOM_CLASS_DIR}
-SHLIB_NAME?=geom_${GEOM_CLASS}.so
-MAN= g${GEOM_CLASS}.8
-SRCS+= geom_${GEOM_CLASS}.c subr.c
-CFLAGS+=-I${SRCTOP}/sbin/geom
+SHLIBDIR= ${GEOM_CLASS_DIR}
+SHLIB_NAME?= geom_${GEOM_CLASS}.so
+MANNODEV= g${GEOM_CLASS}.8
+
+SRCS+= geom_${GEOM_CLASS}.c subr.c
+CFLAGS+= -I${SRCTOP}/sbin/geom
.PATH: ${SRCTOP}/sbin/geom/misc
diff --git a/lib/libarchive/Makefile b/lib/libarchive/Makefile
index fed73c388318..4e32dcf72341 100644
--- a/lib/libarchive/Makefile
+++ b/lib/libarchive/Makefile
@@ -184,12 +184,13 @@ MAN= archive_entry.3 \
archive_write_new.3 \
archive_write_open.3 \
archive_write_set_options.3 \
- cpio.5 \
libarchive.3 \
libarchive_changes.3 \
- libarchive_internals.3 \
- libarchive-formats.5 \
- tar.5
+ libarchive_internals.3
+
+MANNODEV= cpio.5 \
+ libarchive-formats.5 \
+ tar.5
# Symlink the man pages under each function name.
MLINKS+= archive_entry.3 archive_entry_clear.3
diff --git a/lib/libc/locale/Makefile.inc b/lib/libc/locale/Makefile.inc
index 33caafc5c10a..127f8fc67abc 100644
--- a/lib/libc/locale/Makefile.inc
+++ b/lib/libc/locale/Makefile.inc
@@ -46,7 +46,7 @@ MAN+= btowc.3 \
wctrans.3 wctype.3 wcwidth.3 \
duplocale.3 freelocale.3 newlocale.3 querylocale.3 uselocale.3 xlocale.3
-MAN+= big5.5 euc.5 gb18030.5 gb2312.5 gbk.5 mskanji.5 utf8.5
+MANNODEV+= big5.5 euc.5 gb18030.5 gb2312.5 gbk.5 mskanji.5 utf8.5
MLINKS+=btowc.3 wctob.3
MLINKS+=digittoint.3 digittoint_l.3
diff --git a/lib/libc/posix1e/Makefile.inc b/lib/libc/posix1e/Makefile.inc
index 934998cdd092..48f6c1ddf884 100644
--- a/lib/libc/posix1e/Makefile.inc
+++ b/lib/libc/posix1e/Makefile.inc
@@ -84,7 +84,6 @@ MAN+= acl.3 \
acl_valid.3 \
extattr.3 \
mac.3 \
- mac.conf.5 \
mac_free.3 \
mac_is_present.3 \
mac_get.3 \
@@ -134,4 +133,6 @@ MLINKS+=acl_create_entry.3 acl_create_entry_np.3\
mac_text.3 mac_from_text.3 \
mac_text.3 mac_to_text.3
+MANNODEV+= mac.conf.5
+
CLEANFILES+= subr_acl_nfs4.c
diff --git a/lib/libc/posix1e/mac_free.3 b/lib/libc/posix1e/mac_free.3
index 4ed68b70f3a3..6674ca2e9094 100644
--- a/lib/libc/posix1e/mac_free.3
+++ b/lib/libc/posix1e/mac_free.3
@@ -31,7 +31,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd September 21, 2023
+.Dd October 26, 2025
.Dt MAC_FREE 3
.Os
.Sh NAME
@@ -85,7 +85,7 @@ is a complex structure in the
implementation,
.Fn mac_free
is specific to
-.Vt mac_3 ,
+.Vt mac_t ,
and must not be used to free the character strings returned from
.Fn mac_to_text .
Doing so may result in undefined behavior.
diff --git a/lib/libc/posix1e/mac_text.3 b/lib/libc/posix1e/mac_text.3
index 29c1aacca485..7633f4b0da64 100644
--- a/lib/libc/posix1e/mac_text.3
+++ b/lib/libc/posix1e/mac_text.3
@@ -28,7 +28,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd September 21, 2023
+.Dd October 26, 2025
.Dt MAC_TEXT 3
.Os
.Sh NAME
@@ -52,14 +52,16 @@ into the internal policy label format
and places it in
.Fa *mac ,
which must later be freed with
-.Xr free 3 .
+.Xr mac_free 3 .
.Pp
The
.Fn mac_to_text
function allocates storage for
.Fa *text ,
which will be set to the text representation of
-.Fa label .
+.Fa label
+and must later be freed with
+.Xr free 3 .
.Pp
Refer to
.Xr maclabel 7
diff --git a/lib/libc/regex/Makefile.inc b/lib/libc/regex/Makefile.inc
index 89468f1317f6..e3417a3d9983 100644
--- a/lib/libc/regex/Makefile.inc
+++ b/lib/libc/regex/Makefile.inc
@@ -9,9 +9,9 @@ SYM_MAPS+=${LIBC_SRCTOP}/regex/Symbol.map
# manpages only included in libc version
.if ${LIB} == "c"
-MAN+= regex.3
-MAN+= re_format.7
+MAN+= regex.3
+MLINKS+= regex.3 regcomp.3 regex.3 regexec.3 regex.3 regerror.3
+MLINKS+= regexec.3 regfree.3
-MLINKS+=regex.3 regcomp.3 regex.3 regexec.3 regex.3 regerror.3
-MLINKS+=regexec.3 regfree.3
+MANNODEV+= re_format.7
.endif
diff --git a/lib/libc/rpc/Makefile.inc b/lib/libc/rpc/Makefile.inc
index 87963d10eec1..c22fac2c0e16 100644
--- a/lib/libc/rpc/Makefile.inc
+++ b/lib/libc/rpc/Makefile.inc
@@ -42,12 +42,12 @@ crypt_xdr.c: ${RPCDIR}/crypt.x crypt.h
crypt.h: ${RPCDIR}/crypt.x
${RPCGEN} -h -o ${.TARGET} ${RPCDIR}/crypt.x
+
MAN+= bindresvport.3 des_crypt.3 getnetconfig.3 getnetpath.3 getrpcent.3 \
getrpcport.3 rpc.3 rpc_soc.3 rpc_clnt_auth.3 rpc_clnt_calls.3 \
rpc_clnt_create.3 rpc_svc_calls.3 rpc_svc_create.3 rpc_svc_err.3 \
rpc_svc_reg.3 rpc_xdr.3 rpcbind.3 publickey.3 rpc_secure.3 \
rtime.3
-MAN+= rpc.5 netconfig.5
MLINKS+= bindresvport.3 bindresvport_sa.3 \
des_crypt.3 ecb_crypt.3 \
des_crypt.3 cbc_crypt.3 \
@@ -177,3 +177,5 @@ MLINKS+= bindresvport.3 bindresvport_sa.3 \
rpc_soc.3 xdr_authunix_parms.3 \
rpc_soc.3 xdr_pmap.3 \
rpc_soc.3 xdr_pmaplist.3
+
+MANNODEV+= rpc.5 netconfig.5
diff --git a/lib/libc/string/ffs.3 b/lib/libc/string/ffs.3
index 2a5adb01c737..1cca54c0b30b 100644
--- a/lib/libc/string/ffs.3
+++ b/lib/libc/string/ffs.3
@@ -27,7 +27,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
-.Dd October 17, 2015
+.Dd October 25, 2025
.Dt FFS 3
.Os
.Sh NAME
@@ -80,6 +80,17 @@ argument was zero.
.Sh SEE ALSO
.Xr bitstring 3 ,
.Xr bitset 9
+.Sh STANDARDS
+The
+.Fn ffs
+function conforms to
+.St -p1003.1-2008 .
+The
+.Fn ffsl
+and
+.Fn ffsll
+functions conform to
+.St -p1003.1-2024 .
.Sh HISTORY
The
.Fn ffs
diff --git a/lib/libedit/Makefile b/lib/libedit/Makefile
index c7a54253dae9..9161e05a7d36 100644
--- a/lib/libedit/Makefile
+++ b/lib/libedit/Makefile
@@ -15,10 +15,10 @@ SRCS= chared.c chartype.c common.c el.c eln.c emacs.c filecomplete.c \
parse.c prompt.c read.c readline.c refresh.c search.c sig.c \
terminal.c tokenizer.c tokenizern.c tty.c vi.c
+MAN= editline.3
+MANNODEV= editrc.5 editline.7
-MAN= editline.3 editrc.5 editline.7
-
-MLINKS= \
+MLINKS=\
editline.3 el_deletestr.3 \
editline.3 el_end.3 \
editline.3 el_get.3 \
diff --git a/lib/libmagic/Makefile b/lib/libmagic/Makefile
index 150ddc686241..fe04f5ea68c8 100644
--- a/lib/libmagic/Makefile
+++ b/lib/libmagic/Makefile
@@ -11,7 +11,9 @@ SHLIB_MAJOR= 4
.if !make(build-tools)
LIBADD= z
.endif
-MAN= libmagic.3 magic.5
+
+MAN= libmagic.3
+MANNODEV= magic.5
SRCS= apprentice.c apptype.c ascmagic.c buffer.c cdf.c cdf_time.c \
compress.c der.c encoding.c fsmagic.c funcs.c is_json.c \
@@ -73,8 +75,8 @@ magic.mgc: mkmagic
FILEVER!= awk '$$1 == "\#define" && $$2 == "VERSION" { print $$3; exit }' \
${.CURDIR}/config.h
-CLEANFILES+= ${MAN}
-.for mp in ${MAN}
+CLEANFILES+= ${MAN} ${MANNODEV}
+.for mp in ${MAN} ${MANNODEV}
${mp}: ${mp:C/[0-9]/man/}
sed -e 's/__FSECTION__/5/g' -e 's/__CSECTION__/1/g' \
-e 's/__VERSION__/${FILEVER}/g' \
diff --git a/lib/libpam/libpam/Makefile b/lib/libpam/libpam/Makefile
index dd19eba5c1ec..c6db4992bb36 100644
--- a/lib/libpam/libpam/Makefile
+++ b/lib/libpam/libpam/Makefile
@@ -148,10 +148,10 @@ MAN?= openpam.3 \
pam_strerror.3 \
pam_verror.3 \
pam_vinfo.3 \
- pam_vprompt.3 \
- pam.conf.5
+ pam_vprompt.3
-MLINKS?= pam.conf.5 pam.d.5
+MANNODEV?= pam.conf.5
+MANNODEVLINKS?= pam.conf.5 pam.d.5
CFLAGS+= -DLOCALBASE=\"${LOCALBASE:U/usr/local}\"
CFLAGS+= -I${OPENPAM}/include
diff --git a/lib/libpam/static_libpam/Makefile b/lib/libpam/static_libpam/Makefile
index a1f0f209dea1..8830f09ef0da 100644
--- a/lib/libpam/static_libpam/Makefile
+++ b/lib/libpam/static_libpam/Makefile
@@ -42,6 +42,7 @@ NO_PIC=
# Avoid redundancy with the master Makefile.
MAN=
+MANNODEV=
INCS=
MLINKS=
MK_TESTS= no
diff --git a/lib/libpcap/Makefile b/lib/libpcap/Makefile
index 9ba91504852b..c4bd175b502a 100644
--- a/lib/libpcap/Makefile
+++ b/lib/libpcap/Makefile
@@ -109,10 +109,11 @@ MAN= pcap.3 \
pcap_strerror.3 \
pcap_tstamp_type_name_to_val.3 \
pcap_tstamp_type_val_to_name.3 \
- pcap-savefile.5 \
- pcap-filter.7 \
- pcap-linktype.7 \
- pcap-tstamp.7
+ pcap-savefile.5
+
+MANNODEV= pcap-filter.7 \
+ pcap-linktype.7 \
+ pcap-tstamp.7
MLINKS= \
pcap_datalink_val_to_name.3 pcap_datalink_val_to_description.3 \
@@ -129,7 +130,7 @@ MLINKS= \
pcap_setnonblock.3 pcap_getnonblock.3
# Our man pages are a special copy from the distdir. See below.
-CLEANFILES+=${MAN}
+CLEANFILES+=${MAN} ${MANNODEV}
CLEANFILES+=grammar.y scanner.h tokdefs.h
YFLAGS+=-p pcap_
@@ -175,7 +176,7 @@ tokdefs.h: grammar.h .NOMETA
#
# Magic to convert the man pages to something non Solarish
#
-.for _page in ${MAN}
+.for _page in ${MAN} ${MANNODEV}
${_page}:
if [ -f ${PCAP_DISTDIR}/${_page:S/3$/3pcap/} ]; then \
F=${_page:S/3$/3pcap/}; \
diff --git a/lib/libradius/Makefile b/lib/libradius/Makefile
index 0ab83d5418b1..b6857a71260a 100644
--- a/lib/libradius/Makefile
+++ b/lib/libradius/Makefile
@@ -31,7 +31,9 @@ INCS= radlib.h radlib_vs.h
CFLAGS+= -Wall
CFLAGS+= -DOPENSSL_API_COMPAT=0x10100000L
SHLIB_MAJOR= 4
-MAN= libradius.3 radius.conf.5
+
+MAN= libradius.3
+MANNODEV= radius.conf.5
MLINKS+=libradius.3 rad_acct_open.3 \
libradius.3 rad_add_server.3 \
diff --git a/lib/libtacplus/Makefile b/lib/libtacplus/Makefile
index 43567350aeac..2149b57b124a 100644
--- a/lib/libtacplus/Makefile
+++ b/lib/libtacplus/Makefile
@@ -29,7 +29,9 @@ INCS= taclib.h
CFLAGS+= -Wall
LIBADD= md pam
SHLIB_MAJOR= 5
-MAN= libtacplus.3 tacplus.conf.5
+
+MAN= libtacplus.3
+MANNODEV= tacplus.conf.5
WARNS?= 2
diff --git a/lib/libutil/Makefile b/lib/libutil/Makefile
index f6251c093345..d54d9af38a34 100644
--- a/lib/libutil/Makefile
+++ b/lib/libutil/Makefile
@@ -147,7 +147,8 @@ MLINKS+=uucplock.3 uu_lock.3
MLINKS+=uucplock.3 uu_lock_txfr.3
MLINKS+=uucplock.3 uu_lockerr.3
MLINKS+=uucplock.3 uu_unlock.3
-MAN+= login.conf.5
+
+MANNODEV= login.conf.5
HAS_TESTS=
SUBDIR.${MK_TESTS}+= tests
diff --git a/lib/libwrap/Makefile b/lib/libwrap/Makefile
index bc39d5804637..7c302e0f0dc5 100644
--- a/lib/libwrap/Makefile
+++ b/lib/libwrap/Makefile
@@ -1,6 +1,3 @@
-#
-#
-
.include <src.opts.mk>
PACKAGE= tcpd
@@ -9,12 +6,14 @@ CONFS= hosts.allow
LIB= wrap
SHLIB_MAJOR= 6
INCS= tcpd.h
-MAN= hosts_access.3
-MAN+= hosts_access.5 hosts_options.5
-MLINKS= hosts_access.3 hosts_ctl.3 \
- hosts_access.3 request_init.3 \
- hosts_access.3 request_set.3 \
- hosts_options.5 hosts.allow.5
+
+MAN= hosts_access.3
+MLINKS= hosts_access.3 hosts_ctl.3 \
+ hosts_access.3 request_init.3 \
+ hosts_access.3 request_set.3
+
+MANNODEV= hosts_access.5 hosts_options.5
+MANNODEVLINKS= hosts_options.5 hosts.allow.5
.PATH: ${SRCTOP}/contrib/tcp_wrappers
diff --git a/lib/libxo/libxo/Makefile b/lib/libxo/libxo/Makefile
index 38e6ff031c7f..9caf8a498b05 100644
--- a/lib/libxo/libxo/Makefile
+++ b/lib/libxo/libxo/Makefile
@@ -51,7 +51,7 @@ MAN+= xo_attr.3 \
MAN+= xo_format.5
-MAN+= xo_options.7
+MANNODEV= xo_options.7
MLINKS= xo_attr.3 xo_attr_h.3 \
xo_attr.3 xo_attr_hv.3 \
diff --git a/lib/ncurses/tinfo/Makefile b/lib/ncurses/tinfo/Makefile
index 8f01557edaee..08c2311cd7a9 100644
--- a/lib/ncurses/tinfo/Makefile
+++ b/lib/ncurses/tinfo/Makefile
@@ -399,6 +399,7 @@ terminfo.5: MKterminfo.sh terminfo.head Caps
CLEANFILES+= terminfo.5
.PATH: ${NCURSES_DIR}/man
+
MAN= \
curs_addch.3 \
curs_addchstr.3 \
@@ -475,8 +476,9 @@ MAN+= \
curs_printw.3 \
curs_scanw.3
-MAN+= term.5 terminfo.5 scr_dump.5 user_caps.5
-MAN+= term.7
+MAN+= scr_dump.5
+
+MANNODEV= term.5 term.7 terminfo.5 user_caps.5
CLEANFILES+= ${MAN:M*.3}
diff --git a/lib/nss_tacplus/Makefile b/lib/nss_tacplus/Makefile
index c85297a7dbaa..e6fb934c234b 100644
--- a/lib/nss_tacplus/Makefile
+++ b/lib/nss_tacplus/Makefile
@@ -4,6 +4,6 @@ SHLIB_MAJOR= 1
SHLIB_NAME= ${LIB}.so.${SHLIB_MAJOR}
LIBADD= tacplus
MK_INSTALLLIB= no
-MAN= ${LIB}.8
+MANNODEV= ${LIB}.8
.include <bsd.lib.mk>
diff --git a/libexec/blocklistd-helper/blacklistd-helper b/libexec/blocklistd-helper/blacklistd-helper
index 92f768e86cdf..053c9ce9b2a2 100644
--- a/libexec/blocklistd-helper/blacklistd-helper
+++ b/libexec/blocklistd-helper/blacklistd-helper
@@ -280,7 +280,7 @@ flush)
# dynamically determine which anchors exist
for anchor in $(/sbin/pfctl -a "$2" -s Anchors 2> /dev/null); do
/sbin/pfctl -a "$anchor" -t "port${anchor##*/}" -T flush 2> /dev/null
- /sbin/pfctl -a "$anchor" -F rules
+ /sbin/pfctl -a "$anchor" -F rules 2> /dev/null
done
echo OK
;;
diff --git a/libexec/flua/Makefile b/libexec/flua/Makefile
index 23de404710d0..f1c46b270ded 100644
--- a/libexec/flua/Makefile
+++ b/libexec/flua/Makefile
@@ -1,5 +1,7 @@
.include <src.lua.mk>
+PACKAGE= flua
+
# New flua modules should be added here rather than to SUBDIR so that we can do
# the right thing for both bootstrap flua and target flua. The former does not
# do any shared libs, so we just build them all straight into flua itself rather
diff --git a/libexec/flua/Makefile.inc b/libexec/flua/Makefile.inc
index 37a49e258ecb..5e214c76921b 100644
--- a/libexec/flua/Makefile.inc
+++ b/libexec/flua/Makefile.inc
@@ -1,3 +1,5 @@
+PACKAGE= flua
+
SHLIBDIR?= ${LIBDIR}/flua
CFLAGS+= \
diff --git a/release/packages/ucl/bsdinstall.ucl b/release/packages/ucl/bsdinstall.ucl
index 7fe8898b9427..96ff220bfb54 100644
--- a/release/packages/ucl/bsdinstall.ucl
+++ b/release/packages/ucl/bsdinstall.ucl
@@ -21,4 +21,9 @@ deps {
"runtime" {
version = "${VERSION}"
},
+
+ # the pkgbase script requires flua
+ "flua" {
+ version = "${VERSION}"
+ },
}
diff --git a/release/packages/ucl/dhclient-all.ucl b/release/packages/ucl/dhclient-all.ucl
index bae3c7d7c413..b540a23eeb71 100644
--- a/release/packages/ucl/dhclient-all.ucl
+++ b/release/packages/ucl/dhclient-all.ucl
@@ -46,5 +46,5 @@ EOD
licenses = [ "BSD-3-Clause" ]
annotations {
- set = minimal
+ set = "minimal,minimal-jail"
}
diff --git a/release/packages/ucl/dhclient.ucl b/release/packages/ucl/dhclient.ucl
new file mode 100644
index 000000000000..f15ca8703edf
--- /dev/null
+++ b/release/packages/ucl/dhclient.ucl
@@ -0,0 +1,26 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2025 Lexi Winter <ivy@FreeBSD.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+deps {
+ # dhclient uses resolvconf to update /etc/resolv.conf in case the
+ # DHCP server returns nameserver addresses.
+ "resolvconf" {
+ version = "${VERSION}"
+ },
+}
+
diff --git a/release/packages/ucl/flua-all.ucl b/release/packages/ucl/flua-all.ucl
new file mode 100644
index 000000000000..7488e2e36839
--- /dev/null
+++ b/release/packages/ucl/flua-all.ucl
@@ -0,0 +1,32 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2025 Lexi Winter <ivy@FreeBSD.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+comment = "Private Lua implementation"
+
+desc = <<EOD
+flua(1) is an implementation of Lua for use by the base system. This facility
+is not intended for general use, and may be modified or removed at any time
+without notice.
+
+Supported versions of Lua for general use are available in the FreeBSD Ports
+Collection.
+EOD
+
+annotations {
+ set = "optional,optional-jail"
+}
diff --git a/release/packages/ucl/local-unbound.ucl b/release/packages/ucl/local-unbound.ucl
index 0f1c77a0d0ee..34d4c3664c9e 100644
--- a/release/packages/ucl/local-unbound.ucl
+++ b/release/packages/ucl/local-unbound.ucl
@@ -25,3 +25,11 @@ by running "service local_unbound setup" before restarting the service.
EOM
}
]
+
+deps {
+ # local-unbound uses resolvconf to update resolv.conf and to generate
+ # its forward.conf.
+ "resolvconf" {
+ version = "${VERSION}"
+ },
+}
diff --git a/release/packages/ucl/nuageinit-all.ucl b/release/packages/ucl/nuageinit-all.ucl
index c9913f8cfb88..8c7a0754040c 100644
--- a/release/packages/ucl/nuageinit-all.ucl
+++ b/release/packages/ucl/nuageinit-all.ucl
@@ -27,6 +27,13 @@ loaded from a local disk or CD-ROM.
nuageinit implements the cloud-init (https://cloud-init.io/) specification.
EOD
+deps {
+ # nuageinit is written in Lua
+ "flua" {
+ version = "${VERSION}"
+ },
+}
+
annotations {
set = minimal
}
diff --git a/release/packages/ucl/tests.ucl b/release/packages/ucl/tests.ucl
new file mode 100644
index 000000000000..bac72f1534d3
--- /dev/null
+++ b/release/packages/ucl/tests.ucl
@@ -0,0 +1,27 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2025 Lexi Winter <ivy@FreeBSD.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+
+deps {
+ # Quite a few tests require flua.
+ "flua" {
+ version = "${VERSION}"
+ },
+}
+
+
diff --git a/release/scripts/mtree-to-plist.awk b/release/scripts/mtree-to-plist.awk
index a9f1e194389a..38c9963680ee 100644
--- a/release/scripts/mtree-to-plist.awk
+++ b/release/scripts/mtree-to-plist.awk
@@ -40,12 +40,6 @@
for (i in a) {
if (a[i] ~ /^package=/) {
pkgname=a[i]
- if ($1 ~ /^\/boot\//) {
- if (kernel != "" && $1 ~ /^\/boot\/dtb\//)
- pkgname="dtb"
- else if ($1 !~ /^\/boot\/firmware\//)
- pkgname="bootloader"
- }
gsub(/package=/, "", pkgname)
} else if (a[i] == "config") {
type="config"
diff --git a/sbin/ipfw/dummynet.c b/sbin/ipfw/dummynet.c
index 6714b2af3124..a0cefcffd183 100644
--- a/sbin/ipfw/dummynet.c
+++ b/sbin/ipfw/dummynet.c
@@ -680,7 +680,7 @@ ipfw_delete_pipe(int do_pipe, int i)
i = do_cmd(IP_DUMMYNET3, &cmd, cmd.oid.len);
if (i) {
i = 1;
- warn("rule %u: setsockopt(IP_DUMMYNET_DEL)", i);
+ warn("rule %u: setsockopt(IP_DUMMYNET3)", i);
}
return i;
}
@@ -1863,7 +1863,7 @@ end_mask:
i = do_cmd(IP_DUMMYNET3, base, (char *)buf - (char *)base);
if (i)
- err(1, "setsockopt(%s)", "IP_DUMMYNET_CONFIGURE");
+ err(1, "setsockopt(%s)", "IP_DUMMYNET3");
}
void
diff --git a/sbin/ipfw/ipfw2.c b/sbin/ipfw/ipfw2.c
index 2addc0295f0f..eed390ba5bec 100644
--- a/sbin/ipfw/ipfw2.c
+++ b/sbin/ipfw/ipfw2.c
@@ -648,7 +648,7 @@ do_cmd(int optname, void *optval, uintptr_t optlen)
if (ipfw_socket < 0)
err(EX_UNAVAILABLE, "socket");
- if (optname == IP_FW_GET || optname == IP_DUMMYNET_GET ||
+ if (optname == IP_FW_GET ||
optname == IP_FW_ADD || optname == IP_FW3 ||
optname == IP_FW_NAT_GET_CONFIG ||
optname < 0 ||
diff --git a/sbin/nvmecontrol/perftest.c b/sbin/nvmecontrol/perftest.c
index 59439d3ed2a9..da75afc64d8d 100644
--- a/sbin/nvmecontrol/perftest.c
+++ b/sbin/nvmecontrol/perftest.c
@@ -171,7 +171,7 @@ perftest(const struct cmd *f, int argc, char *argv[])
arg_help(argc, argv, f);
}
if (opt.time == 0) {
- fprintf(stderr, "No time speciifed\n");
+ fprintf(stderr, "No time specified\n");
arg_help(argc, argv, f);
}
io_test.time = opt.time;
diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
index 0f7702fc4630..127e2c257d69 100644
--- a/sbin/pfctl/parse.y
+++ b/sbin/pfctl/parse.y
@@ -6246,7 +6246,7 @@ check_binat_redirspec(struct node_host *src_host, struct pfctl_rule *r,
}
if (PF_AZERO(&r->src.addr.v.a.mask, af) ||
PF_AZERO(&(nat_pool->addr.v.a.mask), af)) {
- yyerror ("source and redir addresess must have "
+ yyerror ("source and redir addresses must have "
"a matching network mask in binat-rule");
error++;
}
diff --git a/share/examples/mdoc/example.1 b/share/examples/mdoc/example.1
index 0bdabe95aa95..daffb8bc0422 100644
--- a/share/examples/mdoc/example.1
+++ b/share/examples/mdoc/example.1
@@ -1,28 +1,7 @@
.\"
-.\" SPDX-License-Identifier: BSD-2-Clause
-.\"
.\" Copyright (c) [year] [your name]
.\"
-.\" 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 THE 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 THE 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.
+.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Note: The date here should be updated whenever a non-trivial
.\" change is made to the manual page.
diff --git a/share/examples/mdoc/example.3 b/share/examples/mdoc/example.3
index c4e85062cad1..22c398e0491c 100644
--- a/share/examples/mdoc/example.3
+++ b/share/examples/mdoc/example.3
@@ -1,28 +1,7 @@
.\"
-.\" SPDX-License-Identifier: BSD-2-Clause
-.\"
.\" Copyright (c) [year] [your name]
.\"
-.\" 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 THE 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 THE 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.
+.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Note: The date here should be updated whenever a non-trivial
.\" change is made to the manual page.
diff --git a/share/examples/mdoc/example.4 b/share/examples/mdoc/example.4
index 47ae5456b79a..e627f81af530 100644
--- a/share/examples/mdoc/example.4
+++ b/share/examples/mdoc/example.4
@@ -1,28 +1,7 @@
.\"
-.\" SPDX-License-Identifier: BSD-2-Clause
-.\"
.\" Copyright (c) [year] [your name]
.\"
-.\" 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 THE 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 THE 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.
+.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Note: The date here should be updated whenever a non-trivial
.\" change is made to the manual page.
diff --git a/share/examples/mdoc/example.9 b/share/examples/mdoc/example.9
index 1dd24a99fd42..f105f7465f2c 100644
--- a/share/examples/mdoc/example.9
+++ b/share/examples/mdoc/example.9
@@ -1,28 +1,7 @@
.\"
-.\" SPDX-License-Identifier: BSD-2-Clause
-.\"
.\" Copyright (c) [year] [your name]
.\"
-.\" 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 THE 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 THE 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.
+.\" SPDX-License-Identifier: BSD-2-Clause
.\"
.\" Note: The date here should be updated whenever a non-trivial
.\" change is made to the manual page.
diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile
index 3511acb254e1..18e439491793 100644
--- a/share/man/man3/Makefile
+++ b/share/man/man3/Makefile
@@ -1,6 +1,7 @@
.include <src.opts.mk>
PACKAGE= clibs
+MANSUBPACKAGE= -dev
MAN= alloca.3 \
arb.3 \
diff --git a/share/man/man3/queue.3 b/share/man/man3/queue.3
index 79c8d92decbe..535358ae82d5 100644
--- a/share/man/man3/queue.3
+++ b/share/man/man3/queue.3
@@ -1420,13 +1420,13 @@ while in userland builds it prints the diagnostic message on
.Dv stderr
and then calls
.Fn abort .
-These behaviors can be overriden by defining a custom
+These behaviors can be overridden by defining a custom
.Fn QMD_PANIC
macro before first inclusion of
.In sys/queue.h .
The diagnostic messages automatically include the source file, line and function
-where the failing check occured.
-This behavior can be overriden by defining a custom
+where the failing check occurred.
+This behavior can be overridden by defining a custom
.Fn QMD_ASSERT
macro before first inclusion of
.In sys/queue.h .
diff --git a/share/man/man3/siginfo.3 b/share/man/man3/siginfo.3
index f57cf5f7d706..59e3ecf8f3e8 100644
--- a/share/man/man3/siginfo.3
+++ b/share/man/man3/siginfo.3
@@ -224,7 +224,7 @@ raised by a hardware watchpoint exception may report the data address that
triggered the watchpoint in
.Va si_addr .
.Pp
-Sychronous signals set
+Synchronous signals set
.Va si_trapno
to a machine-dependent trap number.
.Pp
diff --git a/share/man/man4/acpi_battery.4 b/share/man/man4/acpi_battery.4
index 3707cd125678..49fed625ea31 100644
--- a/share/man/man4/acpi_battery.4
+++ b/share/man/man4/acpi_battery.4
@@ -158,8 +158,8 @@ Typically this will decrease every charging cycle.
.It btech
Battery technology:
.Bl -tag -width indent
-.It 0x00000000 Primary cell Pq non-rechargable
-.It 0x00000001 Secondary cell Pq rechargable
+.It 0x00000000 Primary cell Pq non-rechargeable
+.It 0x00000001 Secondary cell Pq rechargeable
.El
.It Va dvol
Design voltage in mV,
diff --git a/share/man/man4/ahc.4 b/share/man/man4/ahc.4
index 72a1e092f1bc..a2aa911c0646 100644
--- a/share/man/man4/ahc.4
+++ b/share/man/man4/ahc.4
@@ -144,7 +144,7 @@ system hang if memory mapped I/O is attempted.
.Pp
Most modern motherboards perform the initialization correctly and work fine
with this option enabled and it is the default. This option can also be
-dynamically configued through a device hint documented below.
+dynamically configured through a device hint documented below.
.Ed
.Pp
To statically configure one or more controllers to assume the target role:
diff --git a/share/man/man4/bce.4 b/share/man/man4/bce.4
index ab979f371b66..aab9eaebd505 100644
--- a/share/man/man4/bce.4
+++ b/share/man/man4/bce.4
@@ -240,7 +240,7 @@ Values from 0-256 are valid.
A value of 0 disables this status block update (default 6).
.It Va hw.bce.tx_ticks
Time in microsecond ticks to wait before a status block
-update is generated due to TX activitiy.
+update is generated due to TX activity.
Values from 0-100 are valid.
A value of 0 disables this status block update.
Cannot be set to 0 if hw.bce.tx_quick_cons_trip is also 0
diff --git a/share/man/man4/iwlwifi.4 b/share/man/man4/iwlwifi.4
index 660f6a9bf57c..411af54be9fb 100644
--- a/share/man/man4/iwlwifi.4
+++ b/share/man/man4/iwlwifi.4
@@ -284,7 +284,7 @@ module parameters and are mapped automatically by
.Sy linuxkpi .
They were not adjusted so that they stay consistent with upstream
Linux, e.g., for documentation available and problem investigations.
-This left their names inconsistent between themselves and incosistent to
+This left their names inconsistent between themselves and inconsistent to
.Fx
style.
.Pp
diff --git a/share/man/man4/mac_do.4 b/share/man/man4/mac_do.4
index 39bfafd95474..d02932070e25 100644
--- a/share/man/man4/mac_do.4
+++ b/share/man/man4/mac_do.4
@@ -246,7 +246,7 @@ nor contradictory ones.
In practice, no two clauses may display the same ID except for group IDs but
only if, each time the same ID appears, it does so with a different flag, or no
flags only once.
-Additionally, the specified flags in multiple occurences must not be
+Additionally, the specified flags in multiple occurrences must not be
contradictory.
For example, the same group ID appearing with both
.Ql +
diff --git a/share/man/man4/p9fs.4 b/share/man/man4/p9fs.4
index 04f27abd2545..a49053d461d4 100644
--- a/share/man/man4/p9fs.4
+++ b/share/man/man4/p9fs.4
@@ -96,7 +96,7 @@ may not work correctly.
If
.Nm
is the root filesystem,
-it is recommented to use with
+it is recommended to use with
.Xr tmpfs 5
to ensure that temporary files created in
.Pa /tmp
diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile
index c13a8b7afde2..abf4b59d184b 100644
--- a/share/man/man5/Makefile
+++ b/share/man/man5/Makefile
@@ -43,20 +43,6 @@ MAN= a.out.5 \
style.mdoc.5 \
sysctl.conf.5 \
-.if ${MK_BLUETOOTH} != "no"
-MAN+= bluetooth.device.conf.5 \
- bluetooth.hosts.5 \
- bluetooth.protocols.5
-.endif
-
-.if ${MK_FREEBSD_UPDATE} != "no"
-MAN+= freebsd-update.conf.5
-.endif
-
-.if ${MK_HESIOD} != "no"
-MAN+= hesiod.conf.5
-.endif
-
MLINKS= dir.5 dirent.5
MLINKS+=fs.5 inode.5
MLINKS+=hosts.equiv.5 rhosts.5
@@ -69,37 +55,46 @@ MANGROUPS+= ACCT
ACCT= acct.5
ACCTPACKAGE= acct
-MANGROUPS+= BOOTLOADER
+MANGROUPS.${MK_BLUETOOTH}+= BLUETOOTH
+BLUETOOTHPACKAGE= bluetooth
+BLUETOOTH= bluetooth.device.conf.5 \
+ bluetooth.hosts.5 \
+ bluetooth.protocols.5
+
+MANGROUPS+= BOOTLOADER
+BOOTLOADERPACKAGE= bootloader
BOOTLOADER= device.hints.5
-BOOTLOADERPACKAGE=bootloader
-.if ${MK_TOOLCHAIN} != "no"
-MANGROUPS+= TOOLCHAIN
+MANGROUPS.${MK_FREEBSD_UPDATE}+= FREEBSD_UPDATE
+FREEBSD_UPDATE= freebsd-update.conf.5
+
+MANGROUPS.${MK_HESIOD}+= HESIOD
+HESIOD= hesiod.conf.5
+
+MANGROUPS.${MK_TOOLCHAIN}+= TOOLCHAIN
+TOOLCHAINPACKAGE= toolchain
TOOLCHAIN= ar.5
-TOOLCHAINPACKAGE=toolchain
-.endif
-MANGROUPS+= LP
+MANGROUPS+= LP
+LPPACKAGE= lp
LP= hosts.lpd.5
-LPPACKAGE= lp
-MANGROUPS+= PERIODIC
+MANGROUPS+= PERIODIC
+PERIODICPACKAGE= periodic
PERIODIC= periodic.conf.5
-PERIODICPACKAGE=periodic
-.if ${MK_PF} != "no"
-MANGROUPS+= PF
+MANGROUPS.${MK_PF}+= PF
+PFPACKAGE= pf
PF= pf.conf.5 \
pf.os.5
-PFPACKAGE= pf
-.endif
-MANGROUPS+= RC
+MANGROUPS+= RC
+RCPACKAGE= rc
RC= rc.conf.5
RCLINKS= rc.conf.5 rc.conf.local.5
-RCPACKAGE= rc
-MANGROUPS+= RUNTIME
+MANGROUPS+= RUNTIME
+RUNTIMEPACKAGE= runtime
RUNTIME= devfs.conf.5 \
devfs.rules.5 \
fstab.5 \
@@ -107,19 +102,18 @@ RUNTIME= devfs.conf.5 \
RUNTIMELINKS= passwd.5 master.passwd.5
RUNTIMELINKS+= passwd.5 pwd.db.5
RUNTIMELINKS+= passwd.5 spwd.db.5
-RUNTIMEPACKAGE= runtime
-MANGROUPS+= SMB
+MANGROUPS+= SMB
+SMBPACKAGE= smbutils
SMB= nsmb.conf.5
-SMBPACKAGE= smbutils
-MANGROUPS+= SSH
+MANGROUPS.${MK_OPENSSH}+= SSH
+SSHPACKAGE= ssh
SSH= moduli.5
-SSHPACKAGE= ssh
-MANGROUPS+= UFS
+MANGROUPS+= UFS
+UFSPACKAGE= ufs
UFS= fs.5
-UFSPACKAGE= ufs
# This makes more sense for amd64 and i386 but
# we decide to install all manpages in all architectures
diff --git a/share/man/man5/pf.conf.5 b/share/man/man5/pf.conf.5
index 41410d6bc0fa..be46b1a47291 100644
--- a/share/man/man5/pf.conf.5
+++ b/share/man/man5/pf.conf.5
@@ -1490,7 +1490,7 @@ options and both implicitly and explicitly in the case of
ones.
A
.Ar rdr-to
-opion may cause the source port to be modified if doing so avoids a conflict
+option may cause the source port to be modified if doing so avoids a conflict
with an existing connection.
A random source port in the range 50001-65535 is chosen in this case.
Port numbers are never translated with a
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index edbfa937f8df..6274c1ee5b94 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -4950,7 +4950,7 @@ can be used in jails) depending on the content of the
.Ao Ar name Ac Ns Va _svcj_options
variable.
Typically this variable is set inside rc scripts, but it can be
-overriden in the rc config.
+overridden in the rc config.
Valid options for
.Ao Ar name Ac Ns Va _svcj_options
are:
@@ -5041,7 +5041,7 @@ service at all, or may set it to
if it is not set in the
rc config, to exclude it from
.Va svcj_all_enable
-but allow to explicitely enable it.
+but allow to explicitly enable it.
The sshd service for example would not see other jails, if
it would run as a service jail.
This may or may not be what is needed, and as such it is
diff --git a/share/man/man7/arch.7 b/share/man/man7/arch.7
index 668f5aa23155..5170a27768b8 100644
--- a/share/man/man7/arch.7
+++ b/share/man/man7/arch.7
@@ -76,7 +76,7 @@ Pointers should not be cast to
or
.Vt size_t
if they will later be cast back to a pointer that is expected to be
-dereferencable as they remain bare integer types on all architectures.
+dereferenceable as they remain bare integer types on all architectures.
.Pp
On some architectures, e.g.,
AIM variants of
diff --git a/share/man/man7/build.7 b/share/man/man7/build.7
index 5e15a528246b..9adfd4bc8a63 100644
--- a/share/man/man7/build.7
+++ b/share/man/man7/build.7
@@ -202,7 +202,7 @@ package or port provides a more generic solution.
.It Cm buildenvvars
Print the shell variables that are set for a
.Cm buildenv
-envirnoment and exit.
+environment and exit.
.It Cm buildworld
Build everything but the kernel, configure files in
.Pa etc ,
@@ -732,7 +732,7 @@ See
.Xr src.conf 5
.It Va REPODIR
The root directory used to create the package repository for building
-.Xr packges 7 .
+.Xr packages 7 .
Defaults to
.Pa ${OBJROOT}/repo/ .
This can also be set in
diff --git a/share/man/man8/debug.sh.8 b/share/man/man8/debug.sh.8
index bf0fdbd6bcf5..3b59d6ae2e78 100644
--- a/share/man/man8/debug.sh.8
+++ b/share/man/man8/debug.sh.8
@@ -143,7 +143,7 @@ and defaults to
.It Ic DebugTrace Ar message
Debug output can be very noisy, and it can be tricky
to align with the script.
-This function outputs a very noticable banner indicating the value of
+This function outputs a very noticeable banner indicating the value of
.Va DEBUG_ON ,
and
.Ar message
@@ -168,7 +168,7 @@ skipped/run when debugging is turned on.
.Va DEBUGGING
is the same as
.Va DEBUG_SKIP
-for backwards compatability and is only set by
+for backwards compatibility and is only set by
.Fn Debug .
.Pp
The use of
diff --git a/share/man/man8/rc.subr.8 b/share/man/man8/rc.subr.8
index 1fd5041cecd8..45a9e9a684cd 100644
--- a/share/man/man8/rc.subr.8
+++ b/share/man/man8/rc.subr.8
@@ -1010,7 +1010,7 @@ However, if
fails, just return.
.Pp
.Ic DebugOn
-will be called with tags derrived from
+will be called with tags derived from
.Va name
and
.Va rc_arg
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
index 80fd8e198a5b..fecde7152f80 100644
--- a/share/man/man9/Makefile
+++ b/share/man/man9/Makefile
@@ -1,6 +1,6 @@
.include <src.opts.mk>
-PACKAGE= kernel-man
+MANPACKAGE= kernel-man
MAN= accept_filter.9 \
accf_data.9 \
diff --git a/share/man/man9/deadfs.9 b/share/man/man9/deadfs.9
index 360451266625..5f4d037a0f09 100644
--- a/share/man/man9/deadfs.9
+++ b/share/man/man9/deadfs.9
@@ -28,7 +28,7 @@ UNIX System Manager's Manual (SMM) for
described
.Nm
as a file system
-.Dq where rejected vnods go to die .
+.Dq where rejected vnodes go to die .
.Sh AUTHORS
The
.Nm
diff --git a/share/man/man9/g_bio.9 b/share/man/man9/g_bio.9
index 407c38e6ca70..fc278cd229a9 100644
--- a/share/man/man9/g_bio.9
+++ b/share/man/man9/g_bio.9
@@ -22,7 +22,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd August 7, 2019
+.Dd October 26, 2025
.Dt G_BIO 9
.Os
.Sh NAME
@@ -309,6 +309,7 @@ example_start(struct bio *bp)
}
.Ed
.Sh SEE ALSO
+.Xr dtrace_io 4 ,
.Xr geom 4 ,
.Xr DECLARE_GEOM_CLASS 9 ,
.Xr g_access 9 ,
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
index 065e635ed43d..159957b6300b 100644
--- a/share/mk/bsd.lib.mk
+++ b/share/mk/bsd.lib.mk
@@ -82,7 +82,18 @@ DEV_TAG_ARGS= ${TAG_ARGS},dev
.else
DEV_TAG_ARGS= ${TAG_ARGS}
.endif
-.endif # !defined(NO_ROOT)
+
+.endif # defined(NO_ROOT)
+
+# By default, put library manpages in the -dev subpackage, since they're not
+# usually interesting if the development files aren't installed. For pages
+# that should be installed in the base package, define a new MANNODEV group.
+# Note that bsd.man.mk ignores this setting if MANSPLITPKG is enabled: then
+# manpages are always installed in the -man subpackage.
+MANSUBPACKAGE?= -dev
+MANGROUPS?= MAN
+MANGROUPS+= MANNODEV
+MANNODEVSUBPACKAGE=
# ELF hardening knobs
.if ${MK_BIND_NOW} != "no"
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
index 1591a3e0905e..dde11afb8283 100644
--- a/share/mk/bsd.man.mk
+++ b/share/mk/bsd.man.mk
@@ -61,6 +61,16 @@
MANGROUPS?= MAN
+# MAN_SUBPACKAGE is the subpackage manpages will be installed in. When
+# MANSPLITPKG is enabled, this is ignored and the subpackage is forced
+# to be "-man", otherwise it defaults to empty so manpages go in the
+# base package. This can be set to "-dev" for manpages that should go
+# in the -dev package.
+MAN_SUBPACKAGE?=
+
+# The default man package, if not otherwise specified.
+MAN_PACKAGE= ${PACKAGE:Uutilities}
+
# Backwards compatibility.
MINSTALL?= ${MANINSTALL}
@@ -113,17 +123,19 @@ manlinksinstall: manlinksinstall-${__group}
${__group}OWN?= ${MANOWN}
${__group}GRP?= ${MANGRP}
${__group}MODE?= ${MANMODE}
-${__group}PACKAGE?= ${PACKAGE:Uutilities}
+# If MANSPLITPKG is enabled, ignore the requested man subpackage and put the
+# manpages in -man instead.
+.if ${MK_MANSPLITPKG} == "yes"
+${__group}SUBPACKAGE= -man
+.else
+${__group}SUBPACKAGE?= ${MAN_SUBPACKAGE}
+.endif
+${__group}PACKAGE?= ${MAN_PACKAGE}${${__group}SUBPACKAGE}
# Tag processing is only done for NO_ROOT installs.
.if defined(NO_ROOT)
-
.if !defined(${__group}TAGS) || ! ${${__group}TAGS:Mpackage=*}
-.if ${MK_MANSPLITPKG} == "no" || ${${__group}PACKAGE:M*-man}
-${__group}TAGS+= package=${${__group}PACKAGE}
-.else
-${__group}TAGS+= package=${${__group}PACKAGE}-man
-.endif
+${__group}TAGS+= package=${${__group}PACKAGE}
.endif
${__group}TAG_ARGS= -T ${${__group}TAGS:ts,:[*]}
diff --git a/stand/Makefile.inc b/stand/Makefile.inc
index 5d55c4e4a16f..2866ebd20af3 100644
--- a/stand/Makefile.inc
+++ b/stand/Makefile.inc
@@ -1,5 +1,7 @@
SUBDIR_PARALLEL= yes
+PACKAGE= bootloader
+
# Firmware may not be able to handle branch protection failures
MK_BRANCH_PROTECTION= no
diff --git a/stand/userboot/Makefile.inc b/stand/userboot/Makefile.inc
index 01b5f23410c8..392fd59a115f 100644
--- a/stand/userboot/Makefile.inc
+++ b/stand/userboot/Makefile.inc
@@ -1 +1,5 @@
.include "../Makefile.inc"
+
+# userboot.so should be installed in the base bootloader package,
+# not bootloader-dev.
+NO_DEV_PACKAGE=
diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c
index 0d844a6fbf9e..08747cd59131 100644
--- a/sys/cam/ata/ata_da.c
+++ b/sys/cam/ata/ata_da.c
@@ -1557,11 +1557,11 @@ adasysctlinit(void *context, int pending)
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
OID_AUTO, "unmapped_io", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
&softc->flags, (u_int)ADA_FLAG_UNMAPPEDIO, adabitsysctl, "I",
- "Use unmapped I/O. This sysctl is *DEPRECATED*, gone in FreeBSD 15");
+ "Use unmapped I/O. This sysctl is *DEPRECATED*, gone in FreeBSD 16");
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
OID_AUTO, "rotating", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
&softc->flags, (u_int)ADA_FLAG_ROTATING, adabitsysctl, "I",
- "Rotating media. This sysctl is *DEPRECATED*, gone in FreeBSD 15");
+ "Rotating media. This sysctl is *DEPRECATED*, gone in FreeBSD 16");
#ifdef CAM_TEST_FAILURE
/*
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
index fc8c0413448d..c0c0be12856b 100644
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -2408,11 +2408,11 @@ dasysctlinit(void *context, int pending)
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
OID_AUTO, "rotating", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
&softc->flags, (u_int)DA_FLAG_ROTATING, dabitsysctl, "I",
- "Rotating media *DEPRECATED* gone in FreeBSD 15");
+ "Rotating media *DEPRECATED* gone in FreeBSD 16");
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
OID_AUTO, "unmapped_io", CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
&softc->flags, (u_int)DA_FLAG_UNMAPPEDIO, dabitsysctl, "I",
- "Unmapped I/O support *DEPRECATED* gone in FreeBSD 15");
+ "Unmapped I/O support *DEPRECATED* gone in FreeBSD 16");
#ifdef CAM_TEST_FAILURE
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
diff --git a/sys/conf/dtb.mk b/sys/conf/dtb.mk
index ec3df525d1e7..2050be7560a4 100644
--- a/sys/conf/dtb.mk
+++ b/sys/conf/dtb.mk
@@ -31,6 +31,8 @@
.include "dtb.build.mk"
+PACKAGE?= dtb
+
.if !target(install) && !target(realinstall)
all: ${DTB} ${DTBO}
realinstall: _dtbinstall
diff --git a/sys/contrib/openzfs/.mailmap b/sys/contrib/openzfs/.mailmap
index e6f09c6c9d43..3397fbc3745d 100644
--- a/sys/contrib/openzfs/.mailmap
+++ b/sys/contrib/openzfs/.mailmap
@@ -53,6 +53,7 @@ Jason Harmening <jason.harmening@gmail.com>
Jeremy Faulkner <gldisater@gmail.com>
Jinshan Xiong <jinshan.xiong@gmail.com>
John Poduska <jpoduska@datto.com>
+Jo Zzsi <jozzsicsataban@gmail.com>
Justin Scholz <git@justinscholz.de>
Ka Ho Ng <khng300@gmail.com>
Kash Pande <github@tripleback.net>
@@ -67,6 +68,7 @@ Michael Gmelin <grembo@FreeBSD.org>
Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
Piotr Kubaj <pkubaj@anongoth.pl>
Quentin Zdanis <zdanisq@gmail.com>
+Roberto Ricci <io@r-ricci.it>
Roberto Ricci <ricci@disroot.org>
Rob Norris <robn@despairlabs.com>
Rob Norris <rob.norris@klarasystems.com>
@@ -83,7 +85,10 @@ Youzhong Yang <youzhong@gmail.com>
# Signed-off-by: overriding Author:
Alexander Ziaee <ziaee@FreeBSD.org> <concussious@runbox.com>
Felix Schmidt <felixschmidt20@aol.com> <f.sch.prototype@gmail.com>
+Jean-Sébastien Pédron <dumbbell@FreeBSD.org> <jean-sebastien.pedron@dumbbell.fr>
+Konstantin Belousov <kib@FreeBSD.org> <kib@kib.kiev.ua>
Olivier Certner <olce@FreeBSD.org> <olce.freebsd@certner.fr>
+Patrick Xia <patrickx@google.com> <octalc0de@aim.com>
Phil Sutter <phil@nwl.cc> <p.github@nwl.cc>
poscat <poscat@poscat.moe> <poscat0x04@outlook.com>
Qiuhao Chen <chenqiuhao1997@gmail.com> <haohao0924@126.com>
@@ -125,6 +130,7 @@ buzzingwires <buzzingwires@outlook.com> <131118055+buzzingwires@users.noreply.gi
Cedric Maunoury <cedric.maunoury@gmail.com> <38213715+cedricmaunoury@users.noreply.github.com>
Charles Suh <charles.suh@gmail.com> <charlessuh@users.noreply.github.com>
Chris Peredun <chris.peredun@ixsystems.com> <126915832+chrisperedun@users.noreply.github.com>
+classabbyamp <dev@placeviolette.net> <5366828+classabbyamp@users.noreply.github.com>
Dacian Reece-Stremtan <dacianstremtan@gmail.com> <35844628+dacianstremtan@users.noreply.github.com>
Damian Szuberski <szuberskidamian@gmail.com> <30863496+szubersk@users.noreply.github.com>
Daniel Hiepler <d-git@coderdu.de> <32984777+heeplr@users.noreply.github.com>
@@ -185,6 +191,7 @@ Michael Niewöhner <foss@mniewoehner.de> <c0d3z3r0@users.noreply.github.com>
Michael Zhivich <mzhivich@akamai.com> <33133421+mzhivich@users.noreply.github.com>
MigeljanImeri <ImeriMigel@gmail.com> <78048439+MigeljanImeri@users.noreply.github.com>
Mo Zhou <cdluminate@gmail.com> <5723047+cdluminate@users.noreply.github.com>
+nav1s <nav1s@proton.me> <42621369+nav1s@users.noreply.github.com>
Nick Mattis <nickm970@gmail.com> <nmattis@users.noreply.github.com>
omni <omni+vagant@hack.org> <79493359+omnivagant@users.noreply.github.com>
Pablo Correa Gómez <ablocorrea@hotmail.com> <32678034+pablofsf@users.noreply.github.com>
@@ -206,6 +213,7 @@ Samuel Wycliffe <samuelwycliffe@gmail.com> <50765275+npc203@users.noreply.github
Savyasachee Jha <hi@savyasacheejha.com> <savyajha@users.noreply.github.com>
Scott Colby <scott@scolby.com> <scolby33@users.noreply.github.com>
Sean Eric Fagan <kithrup@mac.com> <kithrup@users.noreply.github.com>
+Shreshth Srivastava <shreshthsrivastava2@gmail.com> <66148173+Shreshth3@users.noreply.github.com>
Spencer Kinny <spencerkinny1995@gmail.com> <30333052+Spencer-Kinny@users.noreply.github.com>
Srikanth N S <srikanth.nagasubbaraoseetharaman@hpe.com> <75025422+nssrikanth@users.noreply.github.com>
Stefan Lendl <s.lendl@proxmox.com> <1321542+stfl@users.noreply.github.com>
diff --git a/sys/contrib/openzfs/AUTHORS b/sys/contrib/openzfs/AUTHORS
index 6c34c07f39ef..e496c0e8a807 100644
--- a/sys/contrib/openzfs/AUTHORS
+++ b/sys/contrib/openzfs/AUTHORS
@@ -154,6 +154,7 @@ CONTRIBUTORS:
Chris Zubrzycki <github@mid-earth.net>
Chuck Tuffli <ctuffli@gmail.com>
Chunwei Chen <david.chen@nutanix.com>
+ classabbyamp <dev@placeviolette.net>
Clemens Fruhwirth <clemens@endorphin.org>
Clemens Lang <cl@clang.name>
Clint Armstrong <clint@clintarmstrong.net>
@@ -161,6 +162,7 @@ CONTRIBUTORS:
Colin Ian King <colin.king@canonical.com>
Colin Percival <cperciva@tarsnap.com>
Colm Buckley <colm@tuatha.org>
+ Cong Zhang <congzhangzh@users.noreply.github.com>
Crag Wang <crag0715@gmail.com>
Craig Loomis <cloomis@astro.princeton.edu>
Craig Sanders <github@taz.net.au>
@@ -217,6 +219,7 @@ CONTRIBUTORS:
Eitan Adler <lists@eitanadler.com>
Eli Rosenthal <eli.rosenthal@delphix.com>
Eli Schwartz <eschwartz93@gmail.com>
+ Eric A. Borisch <eborisch@gmail.com>
Eric Desrochers <eric.desrochers@canonical.com>
Eric Dillmann <eric@jave.fr>
Eric Schrock <Eric.Schrock@delphix.com>
@@ -288,6 +291,7 @@ CONTRIBUTORS:
Henrik Riomar <henrik.riomar@gmail.com>
Herb Wartens <wartens2@llnl.gov>
Hiếu Lê <leorize+oss@disroot.org>
+ hoshinomori <hoshinomorimorimo@gmail.com>
Huang Liu <liu.huang@zte.com.cn>
HÃ¥kan Johansson <f96hajo@chalmers.se>
Igor K <igor@dilos.org>
@@ -300,6 +304,7 @@ CONTRIBUTORS:
ilovezfs <ilovezfs@icloud.com>
InsanePrawn <Insane.Prawny@gmail.com>
Isaac Huang <he.huang@intel.com>
+ Ivan Shapovalov <intelfx@intelfx.name>
Ivan Volosyuk <Ivan.Volosyuk@gmail.com>
Jacek Fefliński <feflik@gmail.com>
Jacob Adams <tookmund@gmail.com>
@@ -322,6 +327,7 @@ CONTRIBUTORS:
Javen Wu <wu.javen@gmail.com>
Jaydeep Kshirsagar <jkshirsagar@maxlinear.com>
Jean-Baptiste Lallement <jean-baptiste@ubuntu.com>
+ Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
Jeff Dike <jdike@akamai.com>
Jeremy Faulkner <gldisater@gmail.com>
Jeremy Gill <jgill@parallax-innovations.com>
@@ -355,7 +361,9 @@ CONTRIBUTORS:
Josh Soref <jsoref@users.noreply.github.com>
Joshua M. Clulow <josh@sysmgr.org>
José Luis Salvador Rufo <salvador.joseluis@gmail.com>
+ Jo Zzsi <jozzsicsataban@gmail.com>
João Carlos Mendes Luís <jonny@jonny.eng.br>
+ JT Pennington <jt.pennington@klarasystems.com>
Julian Brunner <julian.brunner@gmail.com>
Julian Heuking <JulianH@beckhoff.com>
jumbi77 <jumbi77@users.noreply.github.com>
@@ -388,6 +396,7 @@ CONTRIBUTORS:
Kleber Tarcísio <klebertarcisio@yahoo.com.br>
Kody A Kantor <kody.kantor@gmail.com>
Kohsuke Kawaguchi <kk@kohsuke.org>
+ Konstantin Belousov <kib@FreeBSD.org>
Konstantin Khorenko <khorenko@virtuozzo.com>
KORN Andras <korn@elan.rulez.org>
kotauskas <v.toncharov@gmail.com>
@@ -416,6 +425,7 @@ CONTRIBUTORS:
luozhengzheng <luo.zhengzheng@zte.com.cn>
Luís Henriques <henrix@camandro.org>
Madhav Suresh <madhav.suresh@delphix.com>
+ Maksym Shkolnyi <maksym.shkolnyi@workato.com>
manfromafar <jonsonb10@gmail.com>
Manoj Joseph <manoj.joseph@delphix.com>
Manuel Amador (Rudd-O) <rudd-o@rudd-o.com>
@@ -482,6 +492,7 @@ CONTRIBUTORS:
Nathaniel Clark <Nathaniel.Clark@misrule.us>
Nathaniel Wesley Filardo <nwf@cs.jhu.edu>
Nathan Lewis <linux.robotdude@gmail.com>
+ nav1s <nav1s@proton.me>
Nav Ravindranath <nav@delphix.com>
Neal Gompa (ニール・ゴンパ) <ngompa13@gmail.com>
Ned Bass <bass6@llnl.gov>
@@ -506,6 +517,7 @@ CONTRIBUTORS:
Palash Gandhi <pbg4930@rit.edu>
Patrick Fasano <patrick@patrickfasano.com>
Patrick Mooney <pmooney@pfmooney.com>
+ Patrick Xia <patrickx@google.com>
Patrik Greco <sikevux@sikevux.se>
Paul B. Henson <henson@acm.org>
Paul Dagnelie <pcd@delphix.com>
@@ -605,6 +617,7 @@ CONTRIBUTORS:
Shengqi Chen <harry-chen@outlook.com>
SHENGYI HONG <aokblast@FreeBSD.org>
Shen Yan <shenyanxxxy@qq.com>
+ Shreshth Srivastava <shreshthsrivastava2@gmail.com>
Sietse <sietse@wizdom.nu>
Simon Guest <simon.guest@tesujimath.org>
Simon Howard <fraggle@soulsphere.org>
@@ -665,6 +678,7 @@ CONTRIBUTORS:
Toyam Cox <aviator45003@gmail.com>
Trevor Bautista <trevrb@trevrb.net>
Trey Dockendorf <treydock@gmail.com>
+ trick2011 <trick2011@users.noreply.github.com>
Troels Nørgaard <tnn@tradeshift.com>
tstabrawa <tstabrawa@users.noreply.github.com>
Tulsi Jain <tulsi.jain@delphix.com>
diff --git a/sys/contrib/openzfs/cmd/zdb/zdb.c b/sys/contrib/openzfs/cmd/zdb/zdb.c
index 1ffb8ebc70f2..2560ad045db3 100644
--- a/sys/contrib/openzfs/cmd/zdb/zdb.c
+++ b/sys/contrib/openzfs/cmd/zdb/zdb.c
@@ -9747,6 +9747,9 @@ main(int argc, char **argv)
*/
spa_mode_readable_spacemaps = B_TRUE;
+ libspl_set_assert_ok((dump_opt['A'] == 1) || (dump_opt['A'] > 2));
+ zfs_recover = (dump_opt['A'] > 1);
+
if (dump_all)
verbose = MAX(verbose, 1);
@@ -9757,9 +9760,6 @@ main(int argc, char **argv)
dump_opt[c] += verbose;
}
- libspl_set_assert_ok((dump_opt['A'] == 1) || (dump_opt['A'] > 2));
- zfs_recover = (dump_opt['A'] > 1);
-
argc -= optind;
argv += optind;
if (argc < 2 && dump_opt['R'])
diff --git a/sys/contrib/openzfs/cmd/zpool/zpool_main.c b/sys/contrib/openzfs/cmd/zpool/zpool_main.c
index 1feec55c0e8b..a6658a9c2800 100644
--- a/sys/contrib/openzfs/cmd/zpool/zpool_main.c
+++ b/sys/contrib/openzfs/cmd/zpool/zpool_main.c
@@ -6975,7 +6975,6 @@ collect_vdev_prop(zpool_prop_t prop, uint64_t value, const char *str,
/*
* print static default line per vdev
- * not compatible with '-o' <proplist> option
*/
static void
collect_list_stats(zpool_handle_t *zhp, const char *name, nvlist_t *nv,
@@ -7031,48 +7030,98 @@ collect_list_stats(zpool_handle_t *zhp, const char *name, nvlist_t *nv,
* 'toplevel' boolean value is passed to the print_one_column()
* to indicate that the value is valid.
*/
- if (VDEV_STAT_VALID(vs_pspace, c) && vs->vs_pspace) {
- collect_vdev_prop(ZPOOL_PROP_SIZE, vs->vs_pspace, NULL,
- scripted, B_TRUE, format, cb->cb_json, props,
- cb->cb_json_as_int);
- } else {
- collect_vdev_prop(ZPOOL_PROP_SIZE, vs->vs_space, NULL,
- scripted, toplevel, format, cb->cb_json, props,
- cb->cb_json_as_int);
+ for (zprop_list_t *pl = cb->cb_proplist; pl != NULL;
+ pl = pl->pl_next) {
+ switch (pl->pl_prop) {
+ case ZPOOL_PROP_SIZE:
+ if (VDEV_STAT_VALID(vs_pspace, c) &&
+ vs->vs_pspace) {
+ collect_vdev_prop(
+ ZPOOL_PROP_SIZE, vs->vs_pspace,
+ NULL, scripted, B_TRUE, format,
+ cb->cb_json, props,
+ cb->cb_json_as_int);
+ } else {
+ collect_vdev_prop(
+ ZPOOL_PROP_SIZE, vs->vs_space, NULL,
+ scripted, toplevel, format,
+ cb->cb_json, props,
+ cb->cb_json_as_int);
+ }
+ break;
+ case ZPOOL_PROP_ALLOCATED:
+ collect_vdev_prop(ZPOOL_PROP_ALLOCATED,
+ vs->vs_alloc, NULL, scripted, toplevel,
+ format, cb->cb_json, props,
+ cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_FREE:
+ collect_vdev_prop(ZPOOL_PROP_FREE,
+ vs->vs_space - vs->vs_alloc, NULL, scripted,
+ toplevel, format, cb->cb_json, props,
+ cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_CHECKPOINT:
+ collect_vdev_prop(ZPOOL_PROP_CHECKPOINT,
+ vs->vs_checkpoint_space, NULL, scripted,
+ toplevel, format, cb->cb_json, props,
+ cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_EXPANDSZ:
+ collect_vdev_prop(ZPOOL_PROP_EXPANDSZ,
+ vs->vs_esize, NULL, scripted, B_TRUE,
+ format, cb->cb_json, props,
+ cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_FRAGMENTATION:
+ collect_vdev_prop(
+ ZPOOL_PROP_FRAGMENTATION,
+ vs->vs_fragmentation, NULL, scripted,
+ (vs->vs_fragmentation != ZFS_FRAG_INVALID &&
+ toplevel),
+ format, cb->cb_json, props,
+ cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_CAPACITY:
+ cap = (vs->vs_space == 0) ?
+ 0 : (vs->vs_alloc * 10000 / vs->vs_space);
+ collect_vdev_prop(ZPOOL_PROP_CAPACITY, cap,
+ NULL, scripted, toplevel, format,
+ cb->cb_json, props, cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_HEALTH:
+ state = zpool_state_to_name(vs->vs_state,
+ vs->vs_aux);
+ if (isspare) {
+ if (vs->vs_aux == VDEV_AUX_SPARED)
+ state = "INUSE";
+ else if (vs->vs_state ==
+ VDEV_STATE_HEALTHY)
+ state = "AVAIL";
+ }
+ collect_vdev_prop(ZPOOL_PROP_HEALTH, 0, state,
+ scripted, B_TRUE, format, cb->cb_json,
+ props, cb->cb_json_as_int);
+ break;
+
+ case ZPOOL_PROP_NAME:
+ break;
+
+ default:
+ collect_vdev_prop(pl->pl_prop, 0,
+ NULL, scripted, B_FALSE, format,
+ cb->cb_json, props, cb->cb_json_as_int);
+
+ }
+
+
}
- collect_vdev_prop(ZPOOL_PROP_ALLOCATED, vs->vs_alloc, NULL,
- scripted, toplevel, format, cb->cb_json, props,
- cb->cb_json_as_int);
- collect_vdev_prop(ZPOOL_PROP_FREE, vs->vs_space - vs->vs_alloc,
- NULL, scripted, toplevel, format, cb->cb_json, props,
- cb->cb_json_as_int);
- collect_vdev_prop(ZPOOL_PROP_CHECKPOINT,
- vs->vs_checkpoint_space, NULL, scripted, toplevel, format,
- cb->cb_json, props, cb->cb_json_as_int);
- collect_vdev_prop(ZPOOL_PROP_EXPANDSZ, vs->vs_esize, NULL,
- scripted, B_TRUE, format, cb->cb_json, props,
- cb->cb_json_as_int);
- collect_vdev_prop(ZPOOL_PROP_FRAGMENTATION,
- vs->vs_fragmentation, NULL, scripted,
- (vs->vs_fragmentation != ZFS_FRAG_INVALID && toplevel),
- format, cb->cb_json, props, cb->cb_json_as_int);
- cap = (vs->vs_space == 0) ? 0 :
- (vs->vs_alloc * 10000 / vs->vs_space);
- collect_vdev_prop(ZPOOL_PROP_CAPACITY, cap, NULL,
- scripted, toplevel, format, cb->cb_json, props,
- cb->cb_json_as_int);
- collect_vdev_prop(ZPOOL_PROP_DEDUPRATIO, 0, NULL,
- scripted, toplevel, format, cb->cb_json, props,
- cb->cb_json_as_int);
- state = zpool_state_to_name(vs->vs_state, vs->vs_aux);
- if (isspare) {
- if (vs->vs_aux == VDEV_AUX_SPARED)
- state = "INUSE";
- else if (vs->vs_state == VDEV_STATE_HEALTHY)
- state = "AVAIL";
- }
- collect_vdev_prop(ZPOOL_PROP_HEALTH, 0, state, scripted,
- B_TRUE, format, cb->cb_json, props, cb->cb_json_as_int);
if (cb->cb_json) {
fnvlist_add_nvlist(ent, "properties", props);
diff --git a/sys/contrib/openzfs/config/kernel-block-device-operations.m4 b/sys/contrib/openzfs/config/kernel-block-device-operations.m4
index 4ff20b9c413d..1905340a9c7d 100644
--- a/sys/contrib/openzfs/config/kernel-block-device-operations.m4
+++ b/sys/contrib/openzfs/config/kernel-block-device-operations.m4
@@ -119,15 +119,49 @@ AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK], [
])
])
+dnl #
+dnl # 6.18 API change
+dnl # block_device_operation->getgeo takes struct gendisk* as first arg
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK], [
+ ZFS_LINUX_TEST_SRC([block_device_operations_getgeo_gendisk], [
+ #include <linux/blkdev.h>
+
+ static int blk_getgeo(struct gendisk *disk, struct hd_geometry *geo)
+ {
+ (void) disk, (void) geo;
+ return (0);
+ }
+
+ static const struct block_device_operations
+ bops __attribute__ ((unused)) = {
+ .getgeo = blk_getgeo,
+ };
+ ], [], [])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK], [
+ AC_MSG_CHECKING([whether bops->getgeo() takes gendisk as first arg])
+ ZFS_LINUX_TEST_RESULT([block_device_operations_getgeo_gendisk], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([HAVE_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK], [1],
+ [Define if getgeo() in block_device_operations takes struct gendisk * as its first arg])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
AC_DEFUN([ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS], [
ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS
ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_RELEASE_1ARG
ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK
+ ZFS_AC_KERNEL_SRC_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK
])
AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS], [
ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS
ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID
ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_REVALIDATE_DISK
+ ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK
])
diff --git a/sys/contrib/openzfs/config/kernel-drop-inode.m4 b/sys/contrib/openzfs/config/kernel-drop-inode.m4
new file mode 100644
index 000000000000..6f2b12cadc02
--- /dev/null
+++ b/sys/contrib/openzfs/config/kernel-drop-inode.m4
@@ -0,0 +1,24 @@
+dnl #
+dnl # 6.18 API change
+dnl # - generic_drop_inode() renamed to inode_generic_drop()
+dnl # - generic_delete_inode() renamed to inode_just_drop()
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_GENERIC_DROP], [
+ ZFS_LINUX_TEST_SRC([inode_generic_drop], [
+ #include <linux/fs.h>
+ ],[
+ struct inode *ip = NULL;
+ inode_generic_drop(ip);
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_INODE_GENERIC_DROP], [
+ AC_MSG_CHECKING([whether inode_generic_drop() exists])
+ ZFS_LINUX_TEST_RESULT([inode_generic_drop], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_INODE_GENERIC_DROP, 1,
+ [inode_generic_drop() exists])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
diff --git a/sys/contrib/openzfs/config/kernel-namespace.m4 b/sys/contrib/openzfs/config/kernel-namespace.m4
new file mode 100644
index 000000000000..9b0b12e4eab4
--- /dev/null
+++ b/sys/contrib/openzfs/config/kernel-namespace.m4
@@ -0,0 +1,31 @@
+dnl #
+dnl # 6.18 API change
+dnl # ns->ops->type was moved to ns->ns.ns_type (struct ns_common)
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_NS_COMMON_TYPE], [
+ ZFS_LINUX_TEST_SRC([ns_common_type], [
+ #include <linux/user_namespace.h>
+ ],[
+ struct user_namespace ns;
+ ns.ns.ns_type = 0;
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_NS_COMMON_TYPE], [
+ AC_MSG_CHECKING([whether ns_type is accessible through ns_common])
+ ZFS_LINUX_TEST_RESULT([ns_common_type], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE([HAVE_NS_COMMON_TYPE], 1,
+ [Define if ns_type is accessible through ns_common])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_SRC_NAMESPACE], [
+ ZFS_AC_KERNEL_SRC_NS_COMMON_TYPE
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_NAMESPACE], [
+ ZFS_AC_KERNEL_NS_COMMON_TYPE
+])
diff --git a/sys/contrib/openzfs/config/kernel-userns-capabilities.m4 b/sys/contrib/openzfs/config/kernel-userns-capabilities.m4
deleted file mode 100644
index f4e24fb1606a..000000000000
--- a/sys/contrib/openzfs/config/kernel-userns-capabilities.m4
+++ /dev/null
@@ -1,79 +0,0 @@
-dnl #
-dnl # 2.6.38 API change
-dnl # ns_capable() was introduced
-dnl #
-AC_DEFUN([ZFS_AC_KERNEL_SRC_NS_CAPABLE], [
- ZFS_LINUX_TEST_SRC([ns_capable], [
- #include <linux/capability.h>
- ],[
- ns_capable((struct user_namespace *)NULL, CAP_SYS_ADMIN);
- ])
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_NS_CAPABLE], [
- AC_MSG_CHECKING([whether ns_capable exists])
- ZFS_LINUX_TEST_RESULT([ns_capable], [
- AC_MSG_RESULT(yes)
- ],[
- ZFS_LINUX_TEST_ERROR([ns_capable()])
- ])
-])
-
-dnl #
-dnl # 2.6.39 API change
-dnl # struct user_namespace was added to struct cred_t as cred->user_ns member
-dnl #
-AC_DEFUN([ZFS_AC_KERNEL_SRC_CRED_USER_NS], [
- ZFS_LINUX_TEST_SRC([cred_user_ns], [
- #include <linux/cred.h>
- ],[
- struct cred cr;
- cr.user_ns = (struct user_namespace *)NULL;
- ])
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_CRED_USER_NS], [
- AC_MSG_CHECKING([whether cred_t->user_ns exists])
- ZFS_LINUX_TEST_RESULT([cred_user_ns], [
- AC_MSG_RESULT(yes)
- ],[
- ZFS_LINUX_TEST_ERROR([cred_t->user_ns()])
- ])
-])
-
-dnl #
-dnl # 3.4 API change
-dnl # kuid_has_mapping() and kgid_has_mapping() were added to distinguish
-dnl # between internal kernel uids/gids and user namespace uids/gids.
-dnl #
-AC_DEFUN([ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING], [
- ZFS_LINUX_TEST_SRC([kuid_has_mapping], [
- #include <linux/uidgid.h>
- ],[
- kuid_has_mapping((struct user_namespace *)NULL, KUIDT_INIT(0));
- kgid_has_mapping((struct user_namespace *)NULL, KGIDT_INIT(0));
- ])
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_KUID_HAS_MAPPING], [
- AC_MSG_CHECKING([whether kuid_has_mapping/kgid_has_mapping exist])
- ZFS_LINUX_TEST_RESULT([kuid_has_mapping], [
- AC_MSG_RESULT(yes)
- ],[
- ZFS_LINUX_TEST_ERROR([kuid_has_mapping()])
- ])
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES], [
- ZFS_AC_KERNEL_SRC_NS_CAPABLE
- ZFS_AC_KERNEL_SRC_HAS_CAPABILITY
- ZFS_AC_KERNEL_SRC_CRED_USER_NS
- ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_USERNS_CAPABILITIES], [
- ZFS_AC_KERNEL_NS_CAPABLE
- ZFS_AC_KERNEL_HAS_CAPABILITY
- ZFS_AC_KERNEL_CRED_USER_NS
- ZFS_AC_KERNEL_KUID_HAS_MAPPING
-])
diff --git a/sys/contrib/openzfs/config/kernel-writeback.m4 b/sys/contrib/openzfs/config/kernel-writeback.m4
new file mode 100644
index 000000000000..334d65ef84b6
--- /dev/null
+++ b/sys/contrib/openzfs/config/kernel-writeback.m4
@@ -0,0 +1,58 @@
+AC_DEFUN([ZFS_AC_KERNEL_SRC_WRITEPAGE_T], [
+ dnl #
+ dnl # 6.3 API change
+ dnl # The writepage_t function type now has its first argument as
+ dnl # struct folio* instead of struct page*
+ dnl #
+ ZFS_LINUX_TEST_SRC([writepage_t_folio], [
+ #include <linux/writeback.h>
+ static int putpage(struct folio *folio,
+ struct writeback_control *wbc, void *data)
+ { return 0; }
+ writepage_t func = putpage;
+ ],[])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_WRITEPAGE_T], [
+ AC_MSG_CHECKING([whether int (*writepage_t)() takes struct folio*])
+ ZFS_LINUX_TEST_RESULT([writepage_t_folio], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_WRITEPAGE_T_FOLIO, 1,
+ [int (*writepage_t)() takes struct folio*])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_SRC_WRITE_CACHE_PAGES], [
+ dnl #
+ dnl # 6.18 API change
+ dnl # write_cache_pages() has been removed.
+ dnl #
+ ZFS_LINUX_TEST_SRC([write_cache_pages], [
+ #include <linux/writeback.h>
+ ], [
+ (void) write_cache_pages(NULL, NULL, NULL, NULL);
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_WRITE_CACHE_PAGES], [
+ AC_MSG_CHECKING([whether write_cache_pages() is available])
+ ZFS_LINUX_TEST_RESULT([write_cache_pages], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_WRITE_CACHE_PAGES, 1,
+ [write_cache_pages() is available])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_SRC_WRITEBACK], [
+ ZFS_AC_KERNEL_SRC_WRITEPAGE_T
+ ZFS_AC_KERNEL_SRC_WRITE_CACHE_PAGES
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_WRITEBACK], [
+ ZFS_AC_KERNEL_WRITEPAGE_T
+ ZFS_AC_KERNEL_WRITE_CACHE_PAGES
+])
diff --git a/sys/contrib/openzfs/config/kernel-writepage_t.m4 b/sys/contrib/openzfs/config/kernel-writepage_t.m4
deleted file mode 100644
index a82cf370c9d4..000000000000
--- a/sys/contrib/openzfs/config/kernel-writepage_t.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-AC_DEFUN([ZFS_AC_KERNEL_SRC_WRITEPAGE_T], [
- dnl #
- dnl # 6.3 API change
- dnl # The writepage_t function type now has its first argument as
- dnl # struct folio* instead of struct page*
- dnl #
- ZFS_LINUX_TEST_SRC([writepage_t_folio], [
- #include <linux/writeback.h>
- static int putpage(struct folio *folio,
- struct writeback_control *wbc, void *data)
- { return 0; }
- writepage_t func = putpage;
- ],[])
-])
-
-AC_DEFUN([ZFS_AC_KERNEL_WRITEPAGE_T], [
- AC_MSG_CHECKING([whether int (*writepage_t)() takes struct folio*])
- ZFS_LINUX_TEST_RESULT([writepage_t_folio], [
- AC_MSG_RESULT(yes)
- AC_DEFINE(HAVE_WRITEPAGE_T_FOLIO, 1,
- [int (*writepage_t)() takes struct folio*])
- ],[
- AC_MSG_RESULT(no)
- ])
-])
-
diff --git a/sys/contrib/openzfs/config/kernel.m4 b/sys/contrib/openzfs/config/kernel.m4
index 35819e4d68c5..40b7de739882 100644
--- a/sys/contrib/openzfs/config/kernel.m4
+++ b/sys/contrib/openzfs/config/kernel.m4
@@ -121,7 +121,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_IDMAP_MNT_API
ZFS_AC_KERNEL_SRC_IDMAP_NO_USERNS
ZFS_AC_KERNEL_SRC_IATTR_VFSID
- ZFS_AC_KERNEL_SRC_WRITEPAGE_T
+ ZFS_AC_KERNEL_SRC_WRITEBACK
ZFS_AC_KERNEL_SRC_RECLAIMED
ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_TABLE
ZFS_AC_KERNEL_SRC_REGISTER_SYSCTL_SZ
@@ -136,6 +136,8 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_TIMER
ZFS_AC_KERNEL_SRC_SUPER_BLOCK_S_WB_ERR
ZFS_AC_KERNEL_SRC_SOPS_FREE_INODE
+ ZFS_AC_KERNEL_SRC_NAMESPACE
+ ZFS_AC_KERNEL_SRC_INODE_GENERIC_DROP
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
@@ -240,7 +242,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_IDMAP_MNT_API
ZFS_AC_KERNEL_IDMAP_NO_USERNS
ZFS_AC_KERNEL_IATTR_VFSID
- ZFS_AC_KERNEL_WRITEPAGE_T
+ ZFS_AC_KERNEL_WRITEBACK
ZFS_AC_KERNEL_RECLAIMED
ZFS_AC_KERNEL_REGISTER_SYSCTL_TABLE
ZFS_AC_KERNEL_REGISTER_SYSCTL_SZ
@@ -256,6 +258,8 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_TIMER
ZFS_AC_KERNEL_SUPER_BLOCK_S_WB_ERR
ZFS_AC_KERNEL_SOPS_FREE_INODE
+ ZFS_AC_KERNEL_NAMESPACE
+ ZFS_AC_KERNEL_INODE_GENERIC_DROP
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_CPU_HAS_FEATURE
diff --git a/sys/contrib/openzfs/include/os/linux/kernel/linux/vfs_compat.h b/sys/contrib/openzfs/include/os/linux/kernel/linux/vfs_compat.h
index cbf14e28371f..d9dc904bc322 100644
--- a/sys/contrib/openzfs/include/os/linux/kernel/linux/vfs_compat.h
+++ b/sys/contrib/openzfs/include/os/linux/kernel/linux/vfs_compat.h
@@ -23,6 +23,7 @@
/*
* Copyright (C) 2011 Lawrence Livermore National Security, LLC.
* Copyright (C) 2015 Jörg Thalheim.
+ * Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
*/
#ifndef _ZFS_VFS_H
@@ -262,4 +263,10 @@ zpl_is_32bit_api(void)
#define zpl_generic_fillattr(user_ns, ip, sp) generic_fillattr(ip, sp)
#endif
+#ifdef HAVE_INODE_GENERIC_DROP
+/* 6.18 API change. These were renamed, alias the old names to the new. */
+#define generic_delete_inode(ip) inode_just_drop(ip)
+#define generic_drop_inode(ip) inode_generic_drop(ip)
+#endif
+
#endif /* _ZFS_VFS_H */
diff --git a/sys/contrib/openzfs/man/man8/zpool-remove.8 b/sys/contrib/openzfs/man/man8/zpool-remove.8
index 4d5fc431d332..483d885f10fd 100644
--- a/sys/contrib/openzfs/man/man8/zpool-remove.8
+++ b/sys/contrib/openzfs/man/man8/zpool-remove.8
@@ -58,8 +58,8 @@ This command supports removing hot spare, cache, log, and both mirrored and
non-redundant primary top-level vdevs, including dedup and special vdevs.
.Pp
Top-level vdevs can only be removed if the primary pool storage does not contain
-a top-level raidz vdev, all top-level vdevs have the same sector size, and the
-keys for all encrypted datasets are loaded.
+a top-level raidz or draid vdev, all top-level vdevs have the same ashift size,
+and the keys for all encrypted datasets are loaded.
.Pp
Removing a top-level vdev reduces the total amount of space in the storage pool.
The specified device will be evacuated by copying all allocated space from it to
diff --git a/sys/contrib/openzfs/module/icp/algs/sha2/sha2_generic.c b/sys/contrib/openzfs/module/icp/algs/sha2/sha2_generic.c
index d0fcca798fa9..ad707341eec7 100644
--- a/sys/contrib/openzfs/module/icp/algs/sha2/sha2_generic.c
+++ b/sys/contrib/openzfs/module/icp/algs/sha2/sha2_generic.c
@@ -77,7 +77,8 @@ static const uint32_t SHA256_K[64] = {
h = g, g = f, f = e, e = d + T1; \
d = c, c = b, b = a, a = T1 + T2;
-static void sha256_generic(uint32_t state[8], const void *data, size_t num_blks)
+static void
+icp_sha256_generic(uint32_t state[8], const void *data, size_t num_blks)
{
uint64_t blk;
@@ -173,7 +174,8 @@ static const uint64_t SHA512_K[80] = {
0x5fcb6fab3ad6faec, 0x6c44198c4a475817
};
-static void sha512_generic(uint64_t state[8], const void *data, size_t num_blks)
+static void
+icp_sha512_generic(uint64_t state[8], const void *data, size_t num_blks)
{
uint64_t blk;
@@ -226,7 +228,8 @@ static void sha512_generic(uint64_t state[8], const void *data, size_t num_blks)
}
}
-static void sha256_update(sha256_ctx *ctx, const uint8_t *data, size_t len)
+static void
+icp_sha256_update(sha256_ctx *ctx, const uint8_t *data, size_t len)
{
uint64_t pos = ctx->count[0];
uint64_t total = ctx->count[1];
@@ -258,7 +261,8 @@ static void sha256_update(sha256_ctx *ctx, const uint8_t *data, size_t len)
ctx->count[1] = total;
}
-static void sha512_update(sha512_ctx *ctx, const uint8_t *data, size_t len)
+static void
+icp_sha512_update(sha512_ctx *ctx, const uint8_t *data, size_t len)
{
uint64_t pos = ctx->count[0];
uint64_t total = ctx->count[1];
@@ -290,7 +294,8 @@ static void sha512_update(sha512_ctx *ctx, const uint8_t *data, size_t len)
ctx->count[1] = total;
}
-static void sha256_final(sha256_ctx *ctx, uint8_t *result, int bits)
+static void
+icp_sha256_final(sha256_ctx *ctx, uint8_t *result, int bits)
{
uint64_t mlen, pos = ctx->count[0];
uint8_t *m = ctx->wbuf;
@@ -334,7 +339,8 @@ static void sha256_final(sha256_ctx *ctx, uint8_t *result, int bits)
memset(ctx, 0, sizeof (*ctx));
}
-static void sha512_final(sha512_ctx *ctx, uint8_t *result, int bits)
+static void
+icp_sha512_final(sha512_ctx *ctx, uint8_t *result, int bits)
{
uint64_t mlen, pos = ctx->count[0];
uint8_t *m = ctx->wbuf, *r;
@@ -461,14 +467,14 @@ SHA2Update(SHA2_CTX *ctx, const void *data, size_t len)
switch (ctx->algotype) {
case SHA256:
- sha256_update(&ctx->sha256, data, len);
+ icp_sha256_update(&ctx->sha256, data, len);
break;
case SHA512:
case SHA512_HMAC_MECH_INFO_TYPE:
- sha512_update(&ctx->sha512, data, len);
+ icp_sha512_update(&ctx->sha512, data, len);
break;
case SHA512_256:
- sha512_update(&ctx->sha512, data, len);
+ icp_sha512_update(&ctx->sha512, data, len);
break;
}
}
@@ -479,32 +485,33 @@ SHA2Final(void *digest, SHA2_CTX *ctx)
{
switch (ctx->algotype) {
case SHA256:
- sha256_final(&ctx->sha256, digest, 256);
+ icp_sha256_final(&ctx->sha256, digest, 256);
break;
case SHA512:
case SHA512_HMAC_MECH_INFO_TYPE:
- sha512_final(&ctx->sha512, digest, 512);
+ icp_sha512_final(&ctx->sha512, digest, 512);
break;
case SHA512_256:
- sha512_final(&ctx->sha512, digest, 256);
+ icp_sha512_final(&ctx->sha512, digest, 256);
break;
}
}
/* the generic implementation is always okay */
-static boolean_t sha2_is_supported(void)
+static boolean_t
+icp_sha2_is_supported(void)
{
return (B_TRUE);
}
const sha256_ops_t sha256_generic_impl = {
.name = "generic",
- .transform = sha256_generic,
- .is_supported = sha2_is_supported
+ .transform = icp_sha256_generic,
+ .is_supported = icp_sha2_is_supported
};
const sha512_ops_t sha512_generic_impl = {
.name = "generic",
- .transform = sha512_generic,
- .is_supported = sha2_is_supported
+ .transform = icp_sha512_generic,
+ .is_supported = icp_sha2_is_supported
};
diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c
index 91cf38016e00..8562c42b3220 100644
--- a/sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c
+++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c
@@ -437,6 +437,7 @@ zio_crypt_key_wrap(crypto_key_t *cwkey, zio_crypt_key_t *key, uint8_t *iv,
ASSERT3U(crypt, <, ZIO_CRYPT_FUNCTIONS);
+ memset(&cuio_s, 0, sizeof (cuio_s));
zfs_uio_init(&cuio, &cuio_s);
keydata_len = zio_crypt_table[crypt].ci_keylen;
@@ -519,6 +520,7 @@ zio_crypt_key_unwrap(crypto_key_t *cwkey, uint64_t crypt, uint64_t version,
keydata_len = zio_crypt_table[crypt].ci_keylen;
rw_init(&key->zk_salt_lock, NULL, RW_DEFAULT, NULL);
+ memset(&cuio_s, 0, sizeof (cuio_s));
zfs_uio_init(&cuio, &cuio_s);
/*
diff --git a/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c b/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
index 45c2999a4bb1..b2eae5d00b10 100644
--- a/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
+++ b/sys/contrib/openzfs/module/os/linux/spl/spl-zone.c
@@ -25,6 +25,10 @@
* SUCH DAMAGE.
*/
+/*
+ * Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
+ */
+
#include <sys/types.h>
#include <sys/sysmacros.h>
#include <sys/kmem.h>
@@ -56,6 +60,19 @@ typedef struct zone_dataset {
} zone_dataset_t;
#ifdef CONFIG_USER_NS
+
+/*
+ * Linux 6.18 moved the generic namespace type away from ns->ops->type onto
+ * ns_common itself.
+ */
+#ifdef HAVE_NS_COMMON_TYPE
+#define ns_is_newuser(ns) \
+ ((ns)->ns_type == CLONE_NEWUSER)
+#else
+#define ns_is_newuser(ns) \
+ ((ns)->ops != NULL && (ns)->ops->type == CLONE_NEWUSER)
+#endif
+
/*
* Returns:
* - 0 on success
@@ -84,7 +101,7 @@ user_ns_get(int fd, struct user_namespace **userns)
goto done;
}
ns = get_proc_ns(file_inode(nsfile));
- if (ns->ops->type != CLONE_NEWUSER) {
+ if (!ns_is_newuser(ns)) {
error = ENOTTY;
goto done;
}
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/abd_os.c b/sys/contrib/openzfs/module/os/linux/zfs/abd_os.c
index 8a8316f63c48..18f2426fbbfc 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/abd_os.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/abd_os.c
@@ -23,6 +23,7 @@
* Copyright (c) 2014 by Chunwei Chen. All rights reserved.
* Copyright (c) 2019 by Delphix. All rights reserved.
* Copyright (c) 2023, 2024, Klara Inc.
+ * Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
*/
/*
@@ -1109,6 +1110,14 @@ abd_return_buf_copy(abd_t *abd, void *buf, size_t n)
#define ABD_ITER_PAGE_SIZE(page) (PAGESIZE)
#endif
+#ifndef nth_page
+/*
+ * Since 6.18 nth_page() no longer exists, and is no longer required to iterate
+ * within a single SG entry, so we replace it with a simple addition.
+ */
+#define nth_page(p, n) ((p)+(n))
+#endif
+
void
abd_iter_page(struct abd_iter *aiter)
{
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c b/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c
index daa4b5776837..934d74a112fd 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zfs_acl.c
@@ -2524,7 +2524,7 @@ zfs_zaccess_common(znode_t *zp, uint32_t v4_mode, uint32_t *working_mode,
* Also note: DOS R/O is ignored for directories.
*/
if ((v4_mode & WRITE_MASK_DATA) &&
- S_ISDIR(ZTOI(zp)->i_mode) &&
+ !S_ISDIR(ZTOI(zp)->i_mode) &&
(zp->z_pflags & ZFS_READONLY)) {
return (SET_ERROR(EPERM));
}
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zfs_vnops_os.c b/sys/contrib/openzfs/module/os/linux/zfs/zfs_vnops_os.c
index 6106726651a3..e845ad69ad78 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zfs_vnops_os.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zfs_vnops_os.c
@@ -2033,10 +2033,7 @@ zfs_setattr(znode_t *zp, vattr_t *vap, int flags, cred_t *cr, zidmap_t *mnt_ns)
goto out3;
}
- if ((mask & ATTR_SIZE) && (zp->z_pflags & ZFS_READONLY)) {
- err = SET_ERROR(EPERM);
- goto out3;
- }
+ /* ZFS_READONLY will be handled in zfs_zaccess() */
/*
* Verify timestamps doesn't overflow 32 bits.
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c b/sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c
index d07317b0d910..02965ac8cbee 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zpl_file.c
@@ -23,6 +23,7 @@
* Copyright (c) 2011, Lawrence Livermore National Security, LLC.
* Copyright (c) 2015 by Chunwei Chen. All rights reserved.
* Copyright (c) 2025, Klara, Inc.
+ * Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
*/
@@ -478,6 +479,7 @@ zpl_putpage(struct page *pp, struct writeback_control *wbc, void *data)
return (ret);
}
+#ifdef HAVE_WRITE_CACHE_PAGES
#ifdef HAVE_WRITEPAGE_T_FOLIO
static int
zpl_putfolio(struct folio *pp, struct writeback_control *wbc, void *data)
@@ -499,6 +501,78 @@ zpl_write_cache_pages(struct address_space *mapping,
#endif
return (result);
}
+#else
+static inline int
+zpl_write_cache_pages(struct address_space *mapping,
+ struct writeback_control *wbc, void *data)
+{
+ pgoff_t start = wbc->range_start >> PAGE_SHIFT;
+ pgoff_t end = wbc->range_end >> PAGE_SHIFT;
+
+ struct folio_batch fbatch;
+ folio_batch_init(&fbatch);
+
+ /*
+ * This atomically (-ish) tags all DIRTY pages in the range with
+ * TOWRITE, allowing users to continue dirtying or undirtying pages
+ * while we get on with writeback, without us treading on each other.
+ */
+ tag_pages_for_writeback(mapping, start, end);
+
+ int err = 0;
+ unsigned int npages;
+
+ /*
+ * Grab references to the TOWRITE pages just flagged. This may not get
+ * all of them, so we do it in a loop until there are none left.
+ */
+ while ((npages = filemap_get_folios_tag(mapping, &start, end,
+ PAGECACHE_TAG_TOWRITE, &fbatch)) != 0) {
+
+ /* Loop over each page and write it out. */
+ struct folio *folio;
+ while ((folio = folio_batch_next(&fbatch)) != NULL) {
+ folio_lock(folio);
+
+ /*
+ * If the folio has been remapped, or is no longer
+ * dirty, then there's nothing to do.
+ */
+ if (folio->mapping != mapping ||
+ !folio_test_dirty(folio)) {
+ folio_unlock(folio);
+ continue;
+ }
+
+ /*
+ * If writeback is already in progress, wait for it to
+ * finish. We continue after this even if the page
+ * ends up clean; zfs_putpage() will skip it if no
+ * further work is required.
+ */
+ while (folio_test_writeback(folio))
+ folio_wait_bit(folio, PG_writeback);
+
+ /*
+ * Write it out and collect any error. zfs_putpage()
+ * will clear the TOWRITE and DIRTY flags, and return
+ * with the page unlocked.
+ */
+ int ferr = zpl_putpage(&folio->page, wbc, data);
+ if (err == 0 && ferr != 0)
+ err = ferr;
+
+ /* Housekeeping for the caller. */
+ wbc->nr_to_write -= folio_nr_pages(folio);
+ }
+
+ /* Release any remaining references on the batch. */
+ folio_batch_release(&fbatch);
+ }
+
+ return (err);
+}
+#endif
static int
zpl_writepages(struct address_space *mapping, struct writeback_control *wbc)
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zpl_super.c b/sys/contrib/openzfs/module/os/linux/zfs/zpl_super.c
index 444948d03cb3..347b352506e5 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zpl_super.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zpl_super.c
@@ -23,6 +23,7 @@
* Copyright (c) 2011, Lawrence Livermore National Security, LLC.
* Copyright (c) 2023, Datto Inc. All rights reserved.
* Copyright (c) 2025, Klara, Inc.
+ * Copyright (c) 2025, Rob Norris <robn@despairlabs.com>
*/
@@ -33,6 +34,7 @@
#include <sys/zpl.h>
#include <linux/iversion.h>
#include <linux/version.h>
+#include <linux/vfs_compat.h>
/*
* What to do when the last reference to an inode is released. If 0, the kernel
@@ -104,7 +106,7 @@ zpl_dirty_inode(struct inode *ip, int flags)
* reporting memory pressure and requests OpenZFS release some memory (see
* zfs_prune()).
*
- * When set to 1, we call generic_delete_node(), which always returns "destroy
+ * When set to 1, we call generic_delete_inode(), which always returns "destroy
* immediately", resulting in inodes being destroyed immediately, releasing
* their associated dnodes and dbufs to the dbuf cached and the ARC to be
* evicted as normal.
diff --git a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
index 4e66bee7744d..fe939150b641 100644
--- a/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
+++ b/sys/contrib/openzfs/module/os/linux/zfs/zvol_os.c
@@ -21,7 +21,7 @@
*/
/*
* Copyright (c) 2012, 2020 by Delphix. All rights reserved.
- * Copyright (c) 2024, Rob Norris <robn@despairlabs.com>
+ * Copyright (c) 2024, 2025, Rob Norris <robn@despairlabs.com>
* Copyright (c) 2024, 2025, Klara, Inc.
*/
@@ -1032,12 +1032,12 @@ zvol_os_update_volsize(zvol_state_t *zv, uint64_t volsize)
* tiny devices. For devices over 1 Mib a standard head and sector count
* is used to keep the cylinders count reasonable.
*/
-static int
-zvol_getgeo(struct block_device *bdev, struct hd_geometry *geo)
+static inline int
+zvol_getgeo_impl(struct gendisk *disk, struct hd_geometry *geo)
{
+ zvol_state_t *zv = atomic_load_ptr(&disk->private_data);
sector_t sectors;
- zvol_state_t *zv = atomic_load_ptr(&bdev->bd_disk->private_data);
ASSERT3P(zv, !=, NULL);
ASSERT3U(zv->zv_open_count, >, 0);
@@ -1057,6 +1057,20 @@ zvol_getgeo(struct block_device *bdev, struct hd_geometry *geo)
return (0);
}
+#ifdef HAVE_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK
+static int
+zvol_getgeo(struct gendisk *disk, struct hd_geometry *geo)
+{
+ return (zvol_getgeo_impl(disk, geo));
+}
+#else
+static int
+zvol_getgeo(struct block_device *bdev, struct hd_geometry *geo)
+{
+ return (zvol_getgeo_impl(bdev->bd_disk, geo));
+}
+#endif
+
/*
* Why have two separate block_device_operations structs?
*
@@ -1500,7 +1514,7 @@ zvol_os_remove_minor(zvol_state_t *zv)
if (zso->use_blk_mq)
blk_mq_free_tag_set(&zso->tag_set);
- ida_simple_remove(&zvol_ida, MINOR(zso->zvo_dev) >> ZVOL_MINOR_BITS);
+ ida_free(&zvol_ida, MINOR(zso->zvo_dev) >> ZVOL_MINOR_BITS);
kmem_free(zso, sizeof (struct zvol_state_os));
@@ -1655,7 +1669,7 @@ zvol_os_create_minor(const char *name)
if (zvol_inhibit_dev)
return (0);
- idx = ida_simple_get(&zvol_ida, 0, 0, kmem_flags_convert(KM_SLEEP));
+ idx = ida_alloc(&zvol_ida, kmem_flags_convert(KM_SLEEP));
if (idx < 0)
return (SET_ERROR(-idx));
minor = idx << ZVOL_MINOR_BITS;
@@ -1663,7 +1677,7 @@ zvol_os_create_minor(const char *name)
/* too many partitions can cause an overflow */
zfs_dbgmsg("zvol: create minor overflow: %s, minor %u/%u",
name, minor, MINOR(minor));
- ida_simple_remove(&zvol_ida, idx);
+ ida_free(&zvol_ida, idx);
return (SET_ERROR(EINVAL));
}
@@ -1671,7 +1685,7 @@ zvol_os_create_minor(const char *name)
if (zv) {
ASSERT(MUTEX_HELD(&zv->zv_state_lock));
mutex_exit(&zv->zv_state_lock);
- ida_simple_remove(&zvol_ida, idx);
+ ida_free(&zvol_ida, idx);
return (SET_ERROR(EEXIST));
}
@@ -1771,7 +1785,7 @@ out_doi:
rw_exit(&zvol_state_lock);
error = zvol_os_add_disk(zv->zv_zso->zvo_disk);
} else {
- ida_simple_remove(&zvol_ida, idx);
+ ida_free(&zvol_ida, idx);
}
return (error);
diff --git a/sys/contrib/openzfs/module/zfs/vdev_removal.c b/sys/contrib/openzfs/module/zfs/vdev_removal.c
index 2f7a739da241..abb71543e3ab 100644
--- a/sys/contrib/openzfs/module/zfs/vdev_removal.c
+++ b/sys/contrib/openzfs/module/zfs/vdev_removal.c
@@ -51,34 +51,70 @@
#include <sys/trace_zfs.h>
/*
- * This file contains the necessary logic to remove vdevs from a
- * storage pool. Currently, the only devices that can be removed
- * are log, cache, and spare devices; and top level vdevs from a pool
- * w/o raidz or mirrors. (Note that members of a mirror can be removed
- * by the detach operation.)
+ * This file contains the necessary logic to remove vdevs from a storage
+ * pool. Note that members of a mirror can be removed by the detach
+ * operation. Currently, the only devices that can be removed are:
*
- * Log vdevs are removed by evacuating them and then turning the vdev
- * into a hole vdev while holding spa config locks.
+ * 1) Traditional hot spare and cache vdevs. Note that draid distributed
+ * spares are fixed at creation time and cannot be removed.
*
- * Top level vdevs are removed and converted into an indirect vdev via
- * a multi-step process:
+ * 2) Log vdevs are removed by evacuating them and then turning the vdev
+ * into a hole vdev while holding spa config locks.
*
- * - Disable allocations from this device (spa_vdev_remove_top).
+ * 3) Top-level singleton and mirror vdevs, including dedup and special
+ * vdevs, are removed and converted into an indirect vdev via a
+ * multi-step process:
*
- * - From a new thread (spa_vdev_remove_thread), copy data from
- * the removing vdev to a different vdev. The copy happens in open
- * context (spa_vdev_copy_impl) and issues a sync task
- * (vdev_mapping_sync) so the sync thread can update the partial
- * indirect mappings in core and on disk.
+ * - Disable allocations from this device (spa_vdev_remove_top).
*
- * - If a free happens during a removal, it is freed from the
- * removing vdev, and if it has already been copied, from the new
- * location as well (free_from_removing_vdev).
+ * - From a new thread (spa_vdev_remove_thread), copy data from the
+ * removing vdev to a different vdev. The copy happens in open context
+ * (spa_vdev_copy_impl) and issues a sync task (vdev_mapping_sync) so
+ * the sync thread can update the partial indirect mappings in core
+ * and on disk.
*
- * - After the removal is completed, the copy thread converts the vdev
- * into an indirect vdev (vdev_remove_complete) before instructing
- * the sync thread to destroy the space maps and finish the removal
- * (spa_finish_removal).
+ * - If a free happens during a removal, it is freed from the removing
+ * vdev, and if it has already been copied, from the new location as
+ * well (free_from_removing_vdev).
+ *
+ * - After the removal is completed, the copy thread converts the vdev
+ * into an indirect vdev (vdev_remove_complete) before instructing
+ * the sync thread to destroy the space maps and finish the removal
+ * (spa_finish_removal).
+ *
+ * The following constraints currently apply primary device removal:
+ *
+ * - All vdevs must be online, healthy, and not be missing any data
+ * according to the DTLs.
+ *
+ * - When removing a singleton or mirror vdev, regardless of it's a
+ * special, dedup, or primary device, it must have the same ashift
+ * as the devices in the normal allocation class. Furthermore, all
+ * vdevs in the normal allocation class must have the same ashift to
+ * ensure the new allocations never includes additional padding.
+ *
+ * - The normal allocation class cannot contain any raidz or draid
+ * top-level vdevs since segments are copied without regard for block
+ * boundaries. This makes it impossible to calculate the required
+ * parity columns when using these vdev types as the destination.
+ *
+ * - The encryption keys must be loaded so the ZIL logs can be reset
+ * in order to prevent writing to the device being removed.
+ *
+ * N.B. ashift and raidz/draid constraints for primary top-level device
+ * removal could be slightly relaxed if it were possible to request that
+ * DVAs from a mirror or singleton in the specified allocation class be
+ * used (metaslab_alloc_dva).
+ *
+ * This flexibility would be particularly useful for raidz/draid pools which
+ * often include a mirrored special device. If a mistakenly added top-level
+ * singleton were added it could then still be removed at the cost of some
+ * special device capacity. This may be a worthwhile tradeoff depending on
+ * the pool capacity and expense (cost, complexity, time) of creating a new
+ * pool and copying all of the data to correct the configuration.
+ *
+ * Furthermore, while not currently supported it should be possible to allow
+ * vdevs of any type to be removed as long as they've never been written to.
*/
typedef struct vdev_copy_arg {
diff --git a/sys/contrib/openzfs/module/zfs/zvol.c b/sys/contrib/openzfs/module/zfs/zvol.c
index faced0db7e9e..00f98168d3d8 100644
--- a/sys/contrib/openzfs/module/zfs/zvol.c
+++ b/sys/contrib/openzfs/module/zfs/zvol.c
@@ -410,7 +410,7 @@ zvol_set_volthreading(const char *name, boolean_t value)
{
zvol_state_t *zv = zvol_find_by_name(name, RW_NONE);
if (zv == NULL)
- return (SET_ERROR(ENOENT));
+ return (-1);
zv->zv_threading = value;
mutex_exit(&zv->zv_state_lock);
return (0);
diff --git a/sys/contrib/openzfs/scripts/zfs-tests.sh b/sys/contrib/openzfs/scripts/zfs-tests.sh
index 5a0a1a609448..09a15bafc27e 100755
--- a/sys/contrib/openzfs/scripts/zfs-tests.sh
+++ b/sys/contrib/openzfs/scripts/zfs-tests.sh
@@ -797,6 +797,10 @@ msg "${TEST_RUNNER}" \
2>&1; echo $? >"$REPORT_FILE"; } | tee "$RESULTS_FILE"
read -r RUNRESULT <"$REPORT_FILE"
+if [[ "$RUNRESULT" -eq "255" ]] ; then
+ fail "$TEST_RUNNER failed, test aborted."
+fi
+
#
# Analyze the results.
#
diff --git a/sys/contrib/openzfs/tests/test-runner/bin/test-runner.py.in b/sys/contrib/openzfs/tests/test-runner/bin/test-runner.py.in
index d2c1185e4a94..6688b6c4beb6 100755
--- a/sys/contrib/openzfs/tests/test-runner/bin/test-runner.py.in
+++ b/sys/contrib/openzfs/tests/test-runner/bin/test-runner.py.in
@@ -25,6 +25,7 @@ import sys
import ctypes
import re
import configparser
+import traceback
from datetime import datetime
from optparse import OptionParser
@@ -1138,7 +1139,7 @@ def filter_tests(testrun, options):
testrun.filter(failed)
-def fail(retstr, ret=1):
+def fail(retstr, ret=255):
print('%s: %s' % (sys.argv[0], retstr))
exit(ret)
@@ -1247,23 +1248,27 @@ def parse_args():
def main():
options = parse_args()
- testrun = TestRun(options)
+ try:
+ testrun = TestRun(options)
- if options.runfiles:
- testrun.read(options)
- else:
- find_tests(testrun, options)
+ if options.runfiles:
+ testrun.read(options)
+ else:
+ find_tests(testrun, options)
+
+ if options.logfile:
+ filter_tests(testrun, options)
- if options.logfile:
- filter_tests(testrun, options)
+ if options.template:
+ testrun.write(options)
+ exit(0)
- if options.template:
- testrun.write(options)
- exit(0)
+ testrun.complete_outputdirs()
+ testrun.run(options)
+ exit(testrun.summary())
- testrun.complete_outputdirs()
- testrun.run(options)
- exit(testrun.summary())
+ except Exception:
+ fail("Uncaught exception in test runner:\n" + traceback.format_exc())
if __name__ == '__main__':
diff --git a/sys/fs/fuse/fuse_device.c b/sys/fs/fuse/fuse_device.c
index 75bc0357571f..cee477865c42 100644
--- a/sys/fs/fuse/fuse_device.c
+++ b/sys/fs/fuse/fuse_device.c
@@ -550,6 +550,13 @@ fuse_device_write(struct cdev *dev, struct uio *uio, int ioflag)
} else if (ohead.unique == 0){
/* unique == 0 means asynchronous notification */
SDT_PROBE1(fusefs, , device, fuse_device_write_notify, &ohead);
+ if (data->mp == NULL) {
+ SDT_PROBE2(fusefs, , device, trace, 1,
+ "asynchronous notification before mount"
+ " or after unmount");
+ return (EXTERROR(ENODEV,
+ "This FUSE session is not mounted"));
+ }
mp = data->mp;
vfs_ref(mp);
err = vfs_busy(mp, 0);
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c
index 33e0d94954d7..6dfac1b4ebd2 100644
--- a/sys/fs/msdosfs/msdosfs_vnops.c
+++ b/sys/fs/msdosfs/msdosfs_vnops.c
@@ -1944,6 +1944,9 @@ msdosfs_pathconf(struct vop_pathconf_args *ap)
case _PC_HAS_HIDDENSYSTEM:
*ap->a_retval = 1;
return (0);
+ case _PC_CASE_INSENSITIVE:
+ *ap->a_retval = 1;
+ return (0);
default:
return (vop_stdpathconf(ap));
}
diff --git a/sys/isa/isa_common.c b/sys/isa/isa_common.c
index 1a6df7bf6046..41a63a3c676c 100644
--- a/sys/isa/isa_common.c
+++ b/sys/isa/isa_common.c
@@ -570,7 +570,7 @@ isa_probe_children(device_t dev)
strcmp(kern_ident, "GENERIC") == 0 &&
device_is_attached(child))
device_printf(child,
- "non-PNP ISA device will be removed from GENERIC in FreeBSD 15.\n");
+ "non-PNP ISA device will be removed from GENERIC in FreeBSD 16.\n");
}
/*
diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c
index 05d1120030f3..4eca09aef145 100644
--- a/sys/kern/vfs_default.c
+++ b/sys/kern/vfs_default.c
@@ -458,6 +458,7 @@ vop_stdpathconf(struct vop_pathconf_args *ap)
case _PC_HAS_NAMEDATTR:
case _PC_HAS_HIDDENSYSTEM:
case _PC_CLONE_BLKSIZE:
+ case _PC_CASE_INSENSITIVE:
*ap->a_retval = 0;
return (0);
default:
diff --git a/sys/modules/thunderbolt/Makefile b/sys/modules/thunderbolt/Makefile
index 3b279f4352d4..ba7c7cab6e6b 100644
--- a/sys/modules/thunderbolt/Makefile
+++ b/sys/modules/thunderbolt/Makefile
@@ -5,7 +5,7 @@ SRCS= nhi_pci.c nhi.c tb_pcib.c tb_acpi_pcib.c tb_debug.c nhi_wmi.c
SRCS+= router.c hcm.c tb_dev.c
SRCS+= opt_thunderbolt.h
SRCS+= device_if.h bus_if.h pci_if.h pcib_if.h tb_if.c tb_if.h
-SRCS+= opt_acpi.h opt_acpi_wmi.h acpi_if.h acpi_wmi_if.h
+SRCS+= opt_acpi.h acpi_if.h acpi_wmi_if.h
opt_thunderbolt.h:
echo "#define THUNDERBOLT_DEBUG 1" > ${.TARGET}
diff --git a/sys/modules/zfs/zfs_config.h b/sys/modules/zfs/zfs_config.h
index 3a17ed289235..39b9229653af 100644
--- a/sys/modules/zfs/zfs_config.h
+++ b/sys/modules/zfs/zfs_config.h
@@ -204,6 +204,10 @@
/* BLK_STS_RESV_CONFLICT is defined */
/* #undef HAVE_BLK_STS_RESV_CONFLICT */
+/* Define if getgeo() in block_device_operations takes struct gendisk * as its
+ first arg */
+/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_GETGEO_GENDISK */
+
/* Define if release() in block_device_operations takes 1 arg */
/* #undef HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_1ARG */
@@ -339,6 +343,9 @@
/* Define if compiler supports -Winfinite-recursion */
/* #undef HAVE_INFINITE_RECURSION */
+/* inode_generic_drop() exists */
+/* #undef HAVE_INODE_GENERIC_DROP */
+
/* inode_get_atime() exists in linux/fs.h */
/* #undef HAVE_INODE_GET_ATIME */
@@ -510,6 +517,9 @@
/* Define if host toolchain supports MOVBE */
#define HAVE_MOVBE 1
+/* Define if ns_type is accessible through ns_common */
+/* #undef HAVE_NS_COMMON_TYPE */
+
/* folio_wait_bit() exists */
/* #undef HAVE_PAGEMAP_FOLIO_WAIT_BIT */
@@ -759,6 +769,9 @@
/* int (*writepage_t)() takes struct folio* */
/* #undef HAVE_WRITEPAGE_T_FOLIO */
+/* write_cache_pages() is available */
+/* #undef HAVE_WRITE_CACHE_PAGES */
+
/* xattr_handler->get() wants dentry and inode and flags */
/* #undef HAVE_XATTR_GET_DENTRY_INODE_FLAGS */
@@ -843,7 +856,7 @@
/* #undef ZFS_DEVICE_MINOR */
/* Define the project alias string. */
-#define ZFS_META_ALIAS "zfs-2.4.99-113-FreeBSD_g6ae99d269"
+#define ZFS_META_ALIAS "zfs-2.4.99-129-FreeBSD_g0455150f1"
/* Define the project author. */
#define ZFS_META_AUTHOR "OpenZFS"
@@ -873,7 +886,7 @@
#define ZFS_META_NAME "zfs"
/* Define the project release. */
-#define ZFS_META_RELEASE "113-FreeBSD_g6ae99d269"
+#define ZFS_META_RELEASE "129-FreeBSD_g0455150f1"
/* Define the project version. */
#define ZFS_META_VERSION "2.4.99"
diff --git a/sys/modules/zfs/zfs_gitrev.h b/sys/modules/zfs/zfs_gitrev.h
index 6f568754f61d..87d2071cb0d2 100644
--- a/sys/modules/zfs/zfs_gitrev.h
+++ b/sys/modules/zfs/zfs_gitrev.h
@@ -1 +1 @@
-#define ZFS_META_GITREV "zfs-2.4.99-113-g6ae99d269"
+#define ZFS_META_GITREV "zfs-2.4.99-129-g0455150f1"
diff --git a/sys/netinet/tcp_timer.c b/sys/netinet/tcp_timer.c
index 3b9fe7a317b0..57c57666fa3a 100644
--- a/sys/netinet/tcp_timer.c
+++ b/sys/netinet/tcp_timer.c
@@ -513,9 +513,12 @@ tcp_timer_persist(struct tcpcb *tp)
if (progdrop || (tp->t_rxtshift >= V_tcp_retries &&
(ticks - tp->t_rcvtime >= tcp_maxpersistidle ||
ticks - tp->t_rcvtime >= TCP_REXMTVAL(tp) * tcp_totbackoff))) {
- if (!progdrop)
+ if (progdrop) {
+ tcp_log_end_status(tp, TCP_EI_STATUS_PROGRESS);
+ } else {
TCPSTAT_INC(tcps_persistdrop);
- tcp_log_end_status(tp, TCP_EI_STATUS_PERSIST_MAX);
+ tcp_log_end_status(tp, TCP_EI_STATUS_PERSIST_MAX);
+ }
goto dropit;
}
/*
diff --git a/sys/sys/unistd.h b/sys/sys/unistd.h
index 5743dc1c8033..29adf6b59425 100644
--- a/sys/sys/unistd.h
+++ b/sys/sys/unistd.h
@@ -160,6 +160,7 @@
#define _PC_XATTR_EXISTS _PC_HAS_NAMEDATTR /* Solaris Compatible */
#define _PC_HAS_HIDDENSYSTEM 68
#define _PC_CLONE_BLKSIZE 69
+#define _PC_CASE_INSENSITIVE 70
#endif
/* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */
diff --git a/tests/sys/fs/fusefs/mockfs.cc b/tests/sys/fs/fusefs/mockfs.cc
index e8081dea9604..55c191716629 100644
--- a/tests/sys/fs/fusefs/mockfs.cc
+++ b/tests/sys/fs/fusefs/mockfs.cc
@@ -827,10 +827,12 @@ void MockFS::loop() {
}
}
-int MockFS::notify_inval_entry(ino_t parent, const char *name, size_t namelen)
+int MockFS::notify_inval_entry(ino_t parent, const char *name, size_t namelen,
+ int expected_errno)
{
std::unique_ptr<mockfs_buf_out> out(new mockfs_buf_out);
+ out->expected_errno = expected_errno;
out->header.unique = 0; /* 0 means asynchronous notification */
out->header.error = FUSE_NOTIFY_INVAL_ENTRY;
out->body.inval_entry.parent = parent;
diff --git a/tests/sys/fs/fusefs/mockfs.hh b/tests/sys/fs/fusefs/mockfs.hh
index ba6f7fded9d0..4b0628d34dd7 100644
--- a/tests/sys/fs/fusefs/mockfs.hh
+++ b/tests/sys/fs/fusefs/mockfs.hh
@@ -390,8 +390,10 @@ class MockFS {
* @param parent Parent directory's inode number
* @param name name of dirent to invalidate
* @param namelen size of name, including the NUL
+ * @param expected_errno The error that write() should return
*/
- int notify_inval_entry(ino_t parent, const char *name, size_t namelen);
+ int notify_inval_entry(ino_t parent, const char *name, size_t namelen,
+ int expected_errno = 0);
/*
* Send an asynchronous notification to invalidate an inode's cached
diff --git a/tests/sys/fs/fusefs/notify.cc b/tests/sys/fs/fusefs/notify.cc
index 1e22bde13db7..d370a1e6e706 100644
--- a/tests/sys/fs/fusefs/notify.cc
+++ b/tests/sys/fs/fusefs/notify.cc
@@ -385,6 +385,27 @@ TEST_F(Notify, inval_inode_with_clean_cache)
leak(fd);
}
+/*
+ * Attempting to invalidate an entry or inode after unmounting should fail, but
+ * nothing bad should happen.
+ * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290519
+ */
+TEST_F(Notify, notify_after_unmount)
+{
+ const static char *name = "foo";
+ struct inval_entry_args iea;
+
+ expect_destroy(0);
+
+ m_mock->unmount();
+
+ iea.mock = m_mock;
+ iea.parent = FUSE_ROOT_ID;
+ iea.name = name;
+ iea.namelen = strlen(name);
+ iea.mock->notify_inval_entry(iea.parent, iea.name, iea.namelen, ENODEV);
+}
+
/* FUSE_NOTIFY_STORE with a file that's not in the entry cache */
/* disabled because FUSE_NOTIFY_STORE is not yet implemented */
TEST_F(Notify, DISABLED_store_nonexistent)
@@ -544,3 +565,38 @@ TEST_F(NotifyWriteback, inval_inode_attrs_only)
leak(fd);
}
+
+/*
+ * Attempting asynchronous invalidation of an Entry before mounting the file
+ * system should fail, but nothing bad should happen.
+ *
+ * Note that invalidating an inode before mount goes through the same path, and
+ * is not separately tested.
+ *
+ * https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=290519
+ */
+TEST(PreMount, inval_entry_before_mount)
+{
+ const static char name[] = "foo";
+ size_t namelen = strlen(name);
+ struct mockfs_buf_out *out;
+ int r;
+ int fuse_fd;
+
+ fuse_fd = open("/dev/fuse", O_CLOEXEC | O_RDWR);
+ ASSERT_GE(fuse_fd, 0) << strerror(errno);
+
+ out = new mockfs_buf_out;
+ out->header.unique = 0; /* 0 means asynchronous notification */
+ out->header.error = FUSE_NOTIFY_INVAL_ENTRY;
+ out->body.inval_entry.parent = FUSE_ROOT_ID;
+ out->body.inval_entry.namelen = namelen;
+ strlcpy((char*)&out->body.bytes + sizeof(out->body.inval_entry),
+ name, sizeof(out->body.bytes) - sizeof(out->body.inval_entry));
+ out->header.len = sizeof(out->header) + sizeof(out->body.inval_entry) +
+ namelen;
+ r = write(fuse_fd, out, out->header.len);
+ EXPECT_EQ(-1, r);
+ EXPECT_EQ(ENODEV, errno);
+ delete out;
+}
diff --git a/usr.bin/mandoc/mandoc.ucl b/usr.bin/mandoc/mandoc.ucl
index f320b6f547fd..75b8123d55cc 100644
--- a/usr.bin/mandoc/mandoc.ucl
+++ b/usr.bin/mandoc/mandoc.ucl
@@ -1,10 +1,14 @@
-path_glob: "/usr/share/man/*"
+path_glob: [
+ "/usr/share/man/*",
+ "/usr/share/openssl/man/*",
+]
cleanup: {
type: lua
sandbox: false
script: <<EOD
os.remove("/usr/share/man/mandoc.db")
+ os.remove("/usr/share/openssl/man/mandoc.db")
EOD
}
@@ -12,7 +16,17 @@ trigger: {
type: lua
sandbox: false
script: <<EOD
- print("Generating apropos(1) database...")
- pkg.exec({"/usr/bin/makewhatis", "/usr/share/man"})
+
+ local dirs = {
+ "/usr/share/man",
+ "/usr/share/openssl/man",
+ }
+
+ for _,dir in ipairs(dirs) do
+ if pkg.stat(dir) then
+ print("Generating apropos(1) database for "..dir.."...")
+ pkg.exec({"/usr/bin/makewhatis", dir})
+ end
+ end
EOD
}
diff --git a/usr.sbin/bluetooth/rtlbtfw/main.c b/usr.sbin/bluetooth/rtlbtfw/main.c
index 280045a6aa25..58503b8087b5 100644
--- a/usr.sbin/bluetooth/rtlbtfw/main.c
+++ b/usr.sbin/bluetooth/rtlbtfw/main.c
@@ -479,7 +479,7 @@ main(int argc, char *argv[])
} else
r = rtlbt_parse_fwfile_v1(&fw, rom_version);
if (r < 0) {
- rtlbt_err("Parseing firmware file failed");
+ rtlbt_err("Parsing firmware file failed");
goto shutdown;
}
diff --git a/usr.sbin/bsnmpd/bsnmpd/Makefile b/usr.sbin/bsnmpd/bsnmpd/Makefile
index 601fc31ec475..0943c49c1ca1 100644
--- a/usr.sbin/bsnmpd/bsnmpd/Makefile
+++ b/usr.sbin/bsnmpd/bsnmpd/Makefile
@@ -17,105 +17,110 @@ XSYM= snmpMIB begemotSnmpdModuleTable begemotSnmpd begemotTrapSinkTable \
freeBSD freeBSDVersion begemotSnmpdTransInet
CLEANFILES= oid.h tree.c tree.h
-MAN= bsnmpd.1 snmpmod.3
-
-MLINKS+= snmpmod.3 FIND_OBJECT_INT.3
-MLINKS+= snmpmod.3 FIND_OBJECT_INT_LINK.3
-MLINKS+= snmpmod.3 FIND_OBJECT_INT_LINK_INDEX.3
-MLINKS+= snmpmod.3 FIND_OBJECT_OID.3
-MLINKS+= snmpmod.3 FIND_OBJECT_OID_LINK.3
-MLINKS+= snmpmod.3 FIND_OBJECT_OID_LINK_INDEX.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_INT.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_INT_LINK.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_INT_LINK_INDEX.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_OID.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_OID_LINK.3
-MLINKS+= snmpmod.3 INSERT_OBJECT_OID_LINK_INDEX.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_INT.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_INT_LINK.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_INT_LINK_INDEX.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_OID.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_OID_LINK.3
-MLINKS+= snmpmod.3 NEXT_OBJECT_OID_LINK_INDEX.3
-MLINKS+= snmpmod.3 bsnmpd_get_target_stats.3
-MLINKS+= snmpmod.3 bsnmpd_get_usm_stats.3
-MLINKS+= snmpmod.3 bsnmpd_reset_usm_stats.3
-MLINKS+= snmpmod.3 buf_alloc.3
-MLINKS+= snmpmod.3 buf_size.3
-MLINKS+= snmpmod.3 comm_define.3
-MLINKS+= snmpmod.3 community.3
-MLINKS+= snmpmod.3 fd_deselect.3
-MLINKS+= snmpmod.3 fd_resume.3
-MLINKS+= snmpmod.3 fd_select.3
-MLINKS+= snmpmod.3 fd_suspend.3
-MLINKS+= snmpmod.3 get_ticks.3
-MLINKS+= snmpmod.3 index_append.3
-MLINKS+= snmpmod.3 index_append_off.3
-MLINKS+= snmpmod.3 index_compare.3
-MLINKS+= snmpmod.3 index_compare_off.3
-MLINKS+= snmpmod.3 index_decode.3
-MLINKS+= snmpmod.3 ip_commit.3
-MLINKS+= snmpmod.3 ip_get.3
-MLINKS+= snmpmod.3 ip_rollback.3
-MLINKS+= snmpmod.3 ip_save.3
-MLINKS+= snmpmod.3 or_register.3
-MLINKS+= snmpmod.3 or_unregister.3
-MLINKS+= snmpmod.3 oid_commit.3
-MLINKS+= snmpmod.3 oid_get.3
-MLINKS+= snmpmod.3 oid_rollback.3
-MLINKS+= snmpmod.3 oid_save.3
-MLINKS+= snmpmod.3 oid_usmNotInTimeWindows.3
-MLINKS+= snmpmod.3 oid_usmUnknownEngineIDs.3
-MLINKS+= snmpmod.3 oid_zeroDotZero.3
-MLINKS+= snmpmod.3 reqid_allocate.3
-MLINKS+= snmpmod.3 reqid_base.3
-MLINKS+= snmpmod.3 reqid_istype.3
-MLINKS+= snmpmod.3 reqid_next.3
-MLINKS+= snmpmod.3 reqid_type.3
-MLINKS+= snmpmod.3 snmp_input_finish.3
-MLINKS+= snmpmod.3 snmp_input_start.3
-MLINKS+= snmpmod.3 snmp_output.3
-MLINKS+= snmpmod.3 snmp_pdu_auth_access.3
-MLINKS+= snmpmod.3 snmp_send_port.3
-MLINKS+= snmpmod.3 snmp_send_trap.3
-MLINKS+= snmpmod.3 snmpd_target_stat.3
-MLINKS+= snmpmod.3 snmpd_usmstats.3
-MLINKS+= snmpmod.3 start_tick.3
-MLINKS+= snmpmod.3 string_commit.3
-MLINKS+= snmpmod.3 string_free.3
-MLINKS+= snmpmod.3 string_get.3
-MLINKS+= snmpmod.3 string_get_max.3
-MLINKS+= snmpmod.3 string_rollback.3
-MLINKS+= snmpmod.3 string_save.3
-MLINKS+= snmpmod.3 systemg.3
-MLINKS+= snmpmod.3 this_tick.3
-MLINKS+= snmpmod.3 timer_start.3
-MLINKS+= snmpmod.3 timer_start_repeat.3
-MLINKS+= snmpmod.3 timer_stop.3
-MLINKS+= snmpmod.3 target_activate_address.3
-MLINKS+= snmpmod.3 target_address.3
-MLINKS+= snmpmod.3 target_delete_address.3
-MLINKS+= snmpmod.3 target_delete_notify.3
-MLINKS+= snmpmod.3 target_delete_param.3
-MLINKS+= snmpmod.3 target_first_address.3
-MLINKS+= snmpmod.3 target_first_notify.3
-MLINKS+= snmpmod.3 target_first_param.3
-MLINKS+= snmpmod.3 target_flush_all.3
-MLINKS+= snmpmod.3 target_next_address.3
-MLINKS+= snmpmod.3 target_next_notify.3
-MLINKS+= snmpmod.3 target_next_param.3
-MLINKS+= snmpmod.3 target_new_address.3
-MLINKS+= snmpmod.3 target_new_notify.3
-MLINKS+= snmpmod.3 target_new_param.3
-MLINKS+= snmpmod.3 target_notify.3
-MLINKS+= snmpmod.3 target_param.3
-MLINKS+= snmpmod.3 usm_delete_user.3
-MLINKS+= snmpmod.3 usm_find_user.3
-MLINKS+= snmpmod.3 usm_first_user.3
-MLINKS+= snmpmod.3 usm_flush_users.3
-MLINKS+= snmpmod.3 usm_next_user.3
-MLINKS+= snmpmod.3 usm_new_user.3
-MLINKS+= snmpmod.3 usm_user.3
+MANGROUPS= MAN MAN3
+
+MAN= bsnmpd.1
+
+MAN3= snmpmod.3
+MAN3SUBPACKAGE=-dev
+
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_INT.3
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_INT_LINK.3
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_INT_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_OID.3
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_OID_LINK.3
+MAN3LINKS+= snmpmod.3 FIND_OBJECT_OID_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_INT.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_INT_LINK.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_INT_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_OID.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_OID_LINK.3
+MAN3LINKS+= snmpmod.3 INSERT_OBJECT_OID_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_INT.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_INT_LINK.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_INT_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_OID.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_OID_LINK.3
+MAN3LINKS+= snmpmod.3 NEXT_OBJECT_OID_LINK_INDEX.3
+MAN3LINKS+= snmpmod.3 bsnmpd_get_target_stats.3
+MAN3LINKS+= snmpmod.3 bsnmpd_get_usm_stats.3
+MAN3LINKS+= snmpmod.3 bsnmpd_reset_usm_stats.3
+MAN3LINKS+= snmpmod.3 buf_alloc.3
+MAN3LINKS+= snmpmod.3 buf_size.3
+MAN3LINKS+= snmpmod.3 comm_define.3
+MAN3LINKS+= snmpmod.3 community.3
+MAN3LINKS+= snmpmod.3 fd_deselect.3
+MAN3LINKS+= snmpmod.3 fd_resume.3
+MAN3LINKS+= snmpmod.3 fd_select.3
+MAN3LINKS+= snmpmod.3 fd_suspend.3
+MAN3LINKS+= snmpmod.3 get_ticks.3
+MAN3LINKS+= snmpmod.3 index_append.3
+MAN3LINKS+= snmpmod.3 index_append_off.3
+MAN3LINKS+= snmpmod.3 index_compare.3
+MAN3LINKS+= snmpmod.3 index_compare_off.3
+MAN3LINKS+= snmpmod.3 index_decode.3
+MAN3LINKS+= snmpmod.3 ip_commit.3
+MAN3LINKS+= snmpmod.3 ip_get.3
+MAN3LINKS+= snmpmod.3 ip_rollback.3
+MAN3LINKS+= snmpmod.3 ip_save.3
+MAN3LINKS+= snmpmod.3 or_register.3
+MAN3LINKS+= snmpmod.3 or_unregister.3
+MAN3LINKS+= snmpmod.3 oid_commit.3
+MAN3LINKS+= snmpmod.3 oid_get.3
+MAN3LINKS+= snmpmod.3 oid_rollback.3
+MAN3LINKS+= snmpmod.3 oid_save.3
+MAN3LINKS+= snmpmod.3 oid_usmNotInTimeWindows.3
+MAN3LINKS+= snmpmod.3 oid_usmUnknownEngineIDs.3
+MAN3LINKS+= snmpmod.3 oid_zeroDotZero.3
+MAN3LINKS+= snmpmod.3 reqid_allocate.3
+MAN3LINKS+= snmpmod.3 reqid_base.3
+MAN3LINKS+= snmpmod.3 reqid_istype.3
+MAN3LINKS+= snmpmod.3 reqid_next.3
+MAN3LINKS+= snmpmod.3 reqid_type.3
+MAN3LINKS+= snmpmod.3 snmp_input_finish.3
+MAN3LINKS+= snmpmod.3 snmp_input_start.3
+MAN3LINKS+= snmpmod.3 snmp_output.3
+MAN3LINKS+= snmpmod.3 snmp_pdu_auth_access.3
+MAN3LINKS+= snmpmod.3 snmp_send_port.3
+MAN3LINKS+= snmpmod.3 snmp_send_trap.3
+MAN3LINKS+= snmpmod.3 snmpd_target_stat.3
+MAN3LINKS+= snmpmod.3 snmpd_usmstats.3
+MAN3LINKS+= snmpmod.3 start_tick.3
+MAN3LINKS+= snmpmod.3 string_commit.3
+MAN3LINKS+= snmpmod.3 string_free.3
+MAN3LINKS+= snmpmod.3 string_get.3
+MAN3LINKS+= snmpmod.3 string_get_max.3
+MAN3LINKS+= snmpmod.3 string_rollback.3
+MAN3LINKS+= snmpmod.3 string_save.3
+MAN3LINKS+= snmpmod.3 systemg.3
+MAN3LINKS+= snmpmod.3 this_tick.3
+MAN3LINKS+= snmpmod.3 timer_start.3
+MAN3LINKS+= snmpmod.3 timer_start_repeat.3
+MAN3LINKS+= snmpmod.3 timer_stop.3
+MAN3LINKS+= snmpmod.3 target_activate_address.3
+MAN3LINKS+= snmpmod.3 target_address.3
+MAN3LINKS+= snmpmod.3 target_delete_address.3
+MAN3LINKS+= snmpmod.3 target_delete_notify.3
+MAN3LINKS+= snmpmod.3 target_delete_param.3
+MAN3LINKS+= snmpmod.3 target_first_address.3
+MAN3LINKS+= snmpmod.3 target_first_notify.3
+MAN3LINKS+= snmpmod.3 target_first_param.3
+MAN3LINKS+= snmpmod.3 target_flush_all.3
+MAN3LINKS+= snmpmod.3 target_next_address.3
+MAN3LINKS+= snmpmod.3 target_next_notify.3
+MAN3LINKS+= snmpmod.3 target_next_param.3
+MAN3LINKS+= snmpmod.3 target_new_address.3
+MAN3LINKS+= snmpmod.3 target_new_notify.3
+MAN3LINKS+= snmpmod.3 target_new_param.3
+MAN3LINKS+= snmpmod.3 target_notify.3
+MAN3LINKS+= snmpmod.3 target_param.3
+MAN3LINKS+= snmpmod.3 usm_delete_user.3
+MAN3LINKS+= snmpmod.3 usm_find_user.3
+MAN3LINKS+= snmpmod.3 usm_first_user.3
+MAN3LINKS+= snmpmod.3 usm_flush_users.3
+MAN3LINKS+= snmpmod.3 usm_next_user.3
+MAN3LINKS+= snmpmod.3 usm_new_user.3
+MAN3LINKS+= snmpmod.3 usm_user.3
FILESGROUPS= BMIBS DEFS
diff --git a/usr.sbin/cxgbetool/tcbshowt7.c b/usr.sbin/cxgbetool/tcbshowt7.c
index a3397960b26b..1d4be0fbcc91 100644
--- a/usr.sbin/cxgbetool/tcbshowt7.c
+++ b/usr.sbin/cxgbetool/tcbshowt7.c
@@ -190,7 +190,7 @@ void t7_display_tcb_aux_0 (_TCBVAR *tvp, int aux)
val("rx_flow_control_ddp"));
- PR("MISCELANEOUS:\n"); /* *************************** */
+ PR("MISCELLANEOUS:\n"); /* *************************** */
PR(" pend_ctl: 0x%1x, core_bypass: 0x%x, main_slush: 0x%x\n",
((val("pend_ctl2")<<2) | (val("pend_ctl1")<<1) |
val("pend_ctl0")),
diff --git a/usr.sbin/fwcontrol/fwcontrol.c b/usr.sbin/fwcontrol/fwcontrol.c
index ce908341a42a..195697475973 100644
--- a/usr.sbin/fwcontrol/fwcontrol.c
+++ b/usr.sbin/fwcontrol/fwcontrol.c
@@ -440,7 +440,7 @@ show_crom(u_int32_t *crom_buf)
if (hdr->info_len == 1) {
/* minimum ROM */
reg = (struct csrreg *)hdr;
- printf("verndor ID: 0x%06x\n", reg->val);
+ printf("vendor ID: 0x%06x\n", reg->val);
return;
}
printf("info_len=%d crc_len=%d crc=0x%04x",
diff --git a/usr.sbin/pmcstat/pmcstat.c b/usr.sbin/pmcstat/pmcstat.c
index 98e14dfb9113..ac9169f3e008 100644
--- a/usr.sbin/pmcstat/pmcstat.c
+++ b/usr.sbin/pmcstat/pmcstat.c
@@ -215,7 +215,7 @@ pmcstat_find_targets(const char *spec)
SLIST_INSERT_HEAD(&args.pa_targets, pt, pt_next);
} else if (rv != REG_NOMATCH) {
regerror(rv, &reg, errbuf, sizeof(errbuf));
- errx(EX_SOFTWARE, "ERROR: Regex evalation failed: %s",
+ errx(EX_SOFTWARE, "ERROR: Regex evaluation failed: %s",
errbuf);
}
}