OpenZFS/src 2957eabinclude/os/freebsd/spl/sys vnode_impl.h, include/sys xvattr.h

Add support for FreeBSD's Solaris style extended attribute interface

FreeBSD commit 2ec2ba7e232d added the Solaris style syscall interface
for extended attributes.  This patch wires this interface into the
FreeBSD ZFS port, since this style of extended attributes is supported
by OpenZFS internally when the "xattr" property is set to "dir".

Some specific changes:
LOOKUP_NAMED_ATTR is defined to indicate the need to set V_NAMEDATTR
for calls to zfs_zaccess().
V_NAMEDATTR indicates that the access checking does need to be done
for FreeBSD.

The access checking code for extended attributes was copy/pasted from
the Linux port into zfs_zaccess() in the FreeBSD port.

Most of the changes are in zfs_freebsd_lookup() and
zfs_freebsd_create().
The semantics of these functions should remain unchanged unless named

    [8 lines not shown]
DeltaFile
+284-11module/os/freebsd/zfs/zfs_vnops_os.c
+32-0module/os/freebsd/zfs/zfs_acl.c
+30-2module/os/freebsd/zfs/zfs_vfsops.c
+1-0include/os/freebsd/spl/sys/vnode_impl.h
+1-0include/sys/xvattr.h
+348-135 files

OpenZFS/src dea0fc9module/os/freebsd/zfs zvol_os.c

ZVOL: Return early, if volmode is ZFS_VOLMODE_NONE on FreeBSD side

Return from zvol_os_create_minor() function immediately after
dsl_prop_get_integer() call if volmode property value is set to
'none', like it is doing on Linux side.

Sponsored-by: vStack, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Signed-off-by: Fedor Uporov <fuporov.vstack at gmail.com>
Closes #17405
DeltaFile
+7-3module/os/freebsd/zfs/zvol_os.c
+7-31 files

OpenZFS/src ce9c3b4.github codeql-cpp.yml, .github/codeql/custom-queries/cpp dslDatasetHoldReleMismatch.ql

Add CodeQL mismatched dsl_dataset_hold/_rele pairs check

This check is currently limited to checking mismatches that occur in the
same stack frame. It does not detect across stack frames.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Richard Yao <richard at ryao.dev>
Closes #17352
DeltaFile
+34-0.github/codeql/custom-queries/cpp/dslDatasetHoldReleMismatch.ql
+1-0.github/codeql-cpp.yml
+35-02 files

OpenZFS/src f70c850include zfeature_common.h, lib/libzfs libzfs.abi

BRT: Fix ZAP entry endianness

During original block cloning implementation a mistake was made,
making BRT ZAP entries an array of 8 1-byte entries instead of 1
entry of 8 bytes. This makes the pools non-endian-safe.

This commit introduces a new read-compatible pool feature
"com.truenas:block_cloning_endian", fixing the endianness issue
for new pools while maintaining compatibility with existing ones.

The feature is automatically activated when creating the first BRT
ZAP (ensuring we don't activate it on pools that already have BRT
entries in the old format).  When active, BRT entries are stored
as single 8-byte values.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by:  Alexander Motin <alexander.motin at TrueNAS.com>
Closes #17572
DeltaFile
+56-14module/zfs/brt.c
+11-0man/man7/zpool-features.7
+6-5lib/libzfs/libzfs.abi
+6-0module/zcommon/zfeature_common.c
+1-0include/zfeature_common.h
+1-0tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg
+81-196 files

OpenZFS/src 10a78e2module/zfs zfs_chksum.c

Faster checksum benchmark on system boot

While booting, only the needed 256KiB benchmarks are done now.

The delay for checking all checksums occurs when requested via:
- Linux: cat /proc/spl/kstat/zfs/chksum_bench
- FreeBSD: sysctl kstat.zfs.misc.chksum_bench

Reported by: Lahiru Gunathilake <gunathilakebllg at gmail.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Tino Reichardt <milky-zfs at mcmilk.de>
Co-authored-by: Colin Percival <cperciva at tarsnap.com>
Closes #17563
Closes #17560
DeltaFile
+40-29module/zfs/zfs_chksum.c
+40-291 files

OpenZFS/src b6e8db5cmd/zpool zpool_main.c, lib/libzfs libzfs_pool.c libzfs.abi

zpool/zfs: Add '-a|--all' option to scrub, trim, initialize

Add support for the '-a | --all' option to perform trim,
scrub, and initialize operations on all pools.
Previously, specifying a pool name was mandatory for
these operations. With this enhancement, users can now
execute these operations across all pools at once,
without needing to manually iterate over each pool
from the command line.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Tino Reichardt <milky-zfs at mcmilk.de>
Signed-off-by: Akash B <akash-b at hpe.com>
Closes #17524
DeltaFile
+102-83cmd/zpool/zpool_main.c
+131-0tests/zfs-tests/tests/functional/cli_root/zpool_initialize/zpool_initialize_multiple_pools.ksh
+128-0tests/zfs-tests/tests/functional/cli_root/zpool_scrub/zpool_scrub_multiple_pools.ksh
+123-0tests/zfs-tests/tests/functional/cli_root/zpool_trim/zpool_trim_multiple_pools.ksh
+77-0lib/libzfs/libzfs_pool.c
+24-5lib/libzfs/libzfs.abi
+585-889 files not shown
+637-10415 files

OpenZFS/src fc885f3module/zfs metaslab.c

Don't use wrong weight when passivating group

When we're passivating a metaslab group we start by passivating the 
metaslabs that have been activated for each of the allocators.  To do 
that, we need to provide a weight. However, currently this erroneously 
always uses a segment-based weight, even if segment-based weighting is 
disabled.

Use the normal weight function, which will decide which type of weight 
to use.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Signed-off-by: Paul Dagnelie <paul.dagnelie at klarasystems.com>
Closes #17566 
DeltaFile
+4-2module/zfs/metaslab.c
+4-21 files

OpenZFS/src f23e040.github/workflows/scripts qemu-3-deps-vm.sh

CI: Remove Debian backports

The latest Debian 11 image includes bullseye-backports as a default
repository in the /etc/apt/sources.list.  However, this repository
has gone end of life which effectively breaks the default install.

We shouldn't need anything in backports so lets unconditionally
remove backports on all Debian builders to resolve the issue.

Reviewed-by: George Melikov <mail at gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Closes #17569
DeltaFile
+1-0.github/workflows/scripts/qemu-3-deps-vm.sh
+1-01 files

OpenZFS/src cf14646man/man4 zfs.4, module/zfs zfs_vnops.c

Default to zfs_bclone_wait_dirty=1

Update the default FICLONE and FICLONERANGE ioctl behavior to wait
on dirty blocks.  While this does remove some control from the
application, in practice ZFS is better positioned to the optimial
thing and immediately force a TXG sync.

Reviewed-by: Rob Norris <robn at despairlabs.com>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Reviewed-by: George Melikov <mail at gmelikov.ru>
Signed-off-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Closes #17455
DeltaFile
+21-0tests/zfs-tests/tests/functional/block_cloning/block_cloning_copyfilerange_fallback_same_txg.ksh
+8-7man/man4/zfs.4
+7-6module/zfs/zfs_vnops.c
+3-1tests/zfs-tests/tests/functional/cp_files/cp_files_002_pos.ksh
+39-144 files

OpenZFS/src 4bd7a2ecmd/zdb zdb.c

zdb: fix checksum calculation for decompressed blocks

Currently, when reading compressed blocks with -R and decompressing
them with :d option and specifying lsize, which is normally bigger
than psize for compressed blocks, the checksum is calculated on
decompressed data. But it makes no sense since zfs always calculates
checksum on physical, i.e. compressed data. So reading the same block
produces different checksum results depending on how we read it,
whether we decompress it or not, which, again, makes no sense.

Fix: use psize instead of lsize when calculating the checksum so that
it is always calculated on the physical block size, no matter was it
compressed or not.

Signed-off-by: Andriy Tkachuk <andriy.tkachuk at seagate.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Closes #17547
DeltaFile
+1-1cmd/zdb/zdb.c
+1-11 files

OpenZFS/src a8646a8cmd/zed/agents zfs_agents.c

ZED: Fix device type detection and pool iteration logic

During hotplug REMOVED events, devid matching fails for partition-based
spares because devid information is not stored in pool config for
partitioned devices. However, when devid is populated by the hotplug
event, the original code skipped the search logic entirely, skipping
vdev_guid matching and resulting in wrong device type detection that
caused spares to be incorrectly identified as l2arc devices.
Additionally, fix zfs_agent_iter_pool() to use the return value from
zfs_agent_iter_vdev() instead of relying on search parameters, which
was previously ignored. Also add pool_guid optimization to enable
targeted pool searching when pool_guid is available.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Ameer Hamza <ahamza at ixsystems.com>
Closes #17545
DeltaFile
+36-31cmd/zed/agents/zfs_agents.c
+36-311 files

OpenZFS/src 5a9b9c7module Kbuild.in

linux: Fix out-of-src builds

The linux kernel modules haven't been building successfully when the
build occurs in a separate directory than the source code, which is a
common build pattern in Linux. Was not able to determine the root cause,
but the %.o targets in subdirectories are no longer being matched by the
pattern targets in the Linux Kbuild system. This change fixes the issue
by dynamically creating the missing ones inside our Kbuild.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Coleman Kane <ckane at colemankane.org>
Closes #17517 
DeltaFile
+31-0module/Kbuild.in
+31-01 files

OpenZFS/src 00ce064include/sys spa.h

spa: update blkptr diagram to include vdev padding on encrypted blocks

Probably just an oversight in 4d044c4c1d. SPA_VDEVBITS is always 24,
regardless of whether or not the bp is for an encrypted block, and it
wouldn't make sense for it to be different anyway.

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Alexander Motin <alexander.motin at TrueNAS.com>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Closes #17564
DeltaFile
+2-2include/sys/spa.h
+2-21 files

OpenZFS/src bf38c15cmd/zdb zdb.c, cmd/zfs zfs_main.c

everywhere: misc unnecessary var init/update

These are all cases where we initialise or update a variable, and then
never use it. None of them particularly matter, as the compiler should
optimise them all away during dead store elimination, but some static
analysers complain about them and they are extra work for casual readers
to follow, so worth removing.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+4-6cmd/zfs/zfs_main.c
+3-6cmd/zpool/zpool_main.c
+3-5cmd/zdb/zdb.c
+3-2cmd/zpool/zpool_iter.c
+2-3cmd/zpool/zpool_vdev.c
+2-2lib/libzfs/libzfs_pool.c
+17-2411 files not shown
+30-3817 files

OpenZFS/src d2b9e66module/zfs vdev_raidz.c

vdev_raidz: asize/psize: remove unnecessary var initialisation

It would have been optimised away anyway so it doesn't matter, but it
does make things a little tougher to read.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+2-4module/zfs/vdev_raidz.c
+2-41 files

OpenZFS/src e9d249dtests/zfs-tests/cmd draid.c

test/draid: fix error return

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+1-1tests/zfs-tests/cmd/draid.c
+1-11 files

OpenZFS/src 2755e2amodule/zfs spa.c

spa_activity_check: narrow scope of MMP vars

They aren't used outside these very small blocks, and their initial
values are never used at all.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+4-7module/zfs/spa.c
+4-71 files

OpenZFS/src 9292071include/os/linux/spl/sys kmem.h, module/os/linux/spl spl-kmem.c spl-proc.c

linux/kmem: remove HAVE_ATOMIC64_T and kmem_alloc_used wrappers

Seems like we haven't set it since the SPL was pulled into the main ZFS
tree. In removing the define, I've taken the 64-bit version (ie the one
that _hasn't_ been running since back then) because it looks like its
closer to the intended width by the way its used.

Since the macros ar eno longer needed as a selector, pull those too.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+9-13module/os/linux/spl/spl-kmem.c
+1-14include/os/linux/spl/sys/kmem.h
+1-9module/os/linux/spl/spl-proc.c
+11-363 files

OpenZFS/src 1c483cfinclude/os/linux/spl/sys kmem.h, module/os/linux/zfs abd_os.c

linux/kmem: remove long-obsolete __GFP compat flags

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+0-12include/os/linux/spl/sys/kmem.h
+0-4module/os/linux/zfs/abd_os.c
+0-162 files

OpenZFS/src 96d20d7include/os/linux/spl/sys kmem.h, include/sys zfs_context.h

linux/kmem: remove PF_FSTRANS and PF_MEMALLOC_NOIO compat

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #17551
DeltaFile
+5-29include/os/linux/spl/sys/kmem.h
+0-23module/os/linux/zfs/zfs_file_os.c
+0-6lib/libzpool/kernel.c
+0-1include/sys/zfs_context.h
+5-594 files

OpenZFS/src cecff09cmd arc_summary

add uncompressed_size to arc_summary

Add uncompressed ARC size to statistics reported by arc_summary.

Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Gionatan Danti <g.danti at assyoma.it>
Closes #17556
DeltaFile
+3-0cmd/arc_summary
+3-01 files

OpenZFS/src a7a144einclude/sys arc_impl.h, module/os/linux/zfs zfs_vfsops.c

enforce arc_dnode_limit

Linux kernel shrinker in the context of null/root memcg does not scan
dentry and inode caches added by a task running in non-root memcg. For
ZFS this means that dnode cache routinely overflows, evicting valuable
meta/data and putting additional memory pressure on the system.

This patch restores zfs_prune_aliases as fallback when the kernel
shrinker does nothing, enabling zfs to actually free dnodes. Moreover,
it (indirectly) calls arc_evict when dnode_size > dnode_limit.

Reviewed-by: Rob Norris <robn at despairlabs.com>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: Gionatan Danti <g.danti at assyoma.it>
Closes #17487
Closes #17542 
DeltaFile
+65-0module/os/linux/zfs/zfs_vfsops.c
+12-10module/zfs/arc.c
+1-1include/sys/arc_impl.h
+78-113 files

OpenZFS/src be1e991cmd/zdb zdb.c, module/zfs zil.c vdev.c

Allow and prefer special vdevs as ZIL

Before this change ZIL blocks were allocated only from normal or
SLOG vdevs.  In typical situation when special vdevs are SSDs and
normal are HDDs it could cause weird inversions when data blocks
are written to SSDs, but ZIL referencing them to HDDs.

This change assumes that special vdevs typically have much better
(or at least not worse) latency than normal, and so in absence of
SLOGs should store ZIL blocks.  It means similar to normal vdevs
introduction of special embedded log allocation class and updating
the allocation fallback order to: SLOG -> special embedded log ->
special -> normal embedded log -> normal.

The code tries to guess whether data block is going to be written
to normal or special vdev (it can not be done precisely before
compression) and prefer indirect writes for blocks written to a
special vdev to avoid double-write.  For blocks that are going to
be written to normal vdev, special vdev by default plays as SLOG,

    [12 lines not shown]
DeltaFile
+59-0module/zfs/zil.c
+15-6module/zfs/vdev.c
+19-1cmd/zdb/zdb.c
+20-0module/zfs/zio.c
+2-15module/zfs/zvol.c
+2-14module/zfs/zfs_log.c
+117-367 files not shown
+164-4413 files

OpenZFS/src 2669b00config kernel-free-inode.m4 kernel.m4, include/os/linux/zfs/sys zfs_znode_impl.h

Define sops->free_inode() to prevent use-after-free during lookup

On Linux, when doing path lookup with LOOKUP_RCU, dentry and inode can
be dereferenced without refcounts and locks. For this reason, dentry and
inode must only be freed after RCU grace period.

However, zfs currently frees inode in zfs_inode_destroy synchronously
and we can't use GPL-only call_rcu() in zfs directly. Fortunately, on
Linux 5.2 and after, if we define sops->free_inode(), the kernel will do
call_rcu() for us.

This issue may be triggered more easily with init_on_free=1 boot
parameter:

BUG: kernel NULL pointer dereference, address: 0000000000000020
RIP: 0010:selinux_inode_permission+0x10e/0x1c0
Call Trace:
 ? show_trace_log_lvl+0x1be/0x2d9
 ? show_trace_log_lvl+0x1be/0x2d9

    [27 lines not shown]
DeltaFile
+24-0config/kernel-free-inode.m4
+15-2module/os/linux/zfs/zfs_znode_os.c
+12-0module/os/linux/zfs/zpl_super.c
+2-0config/kernel.m4
+1-0include/os/linux/zfs/sys/zfs_znode_impl.h
+54-25 files

OpenZFS/src d7ab07dmodule/zfs zil.c

ZIL: Force writing of open LWB on suspend

Under parallel workloads ZIL may delay writes of open LWBs that
are not full enough.  On suspend we do not expect anything new to
appear since zil_get_commit_list() will not let it pass, only
returning TXG number to wait for.  But I suspect that waiting for
the TXG commit without having the last LWB issued may not wait for
its completion, resulting in panic described in #17509.

Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Rob Norris <rob.norris at klarasystems.com>
Signed-off-by:  Alexander Motin <mav at FreeBSD.org>
Sponsored by:   iXsystems, Inc.
Closes #17521
DeltaFile
+12-12module/zfs/zil.c
+12-121 files

OpenZFS/src c1e51c5module/zfs metaslab.c

Correct weight recalculation of space-based metaslabs

Currently, after a failed allocation, the metaslab code recalculates the
weight for a metaslab. However, for space-based metaslabs, it uses the
maximum free segment size instead of the normal weighting
algorithm. This is presumably because the normal metaslab weight is
(roughly) intended to estimate the size of the largest free segment, but
it doesn't do that reliably at most fragmentation levels. This means
that recalculated metaslabs are forced to a weight that isn't really
using the same units as the rest of them, resulting in undesirable
behaviors. We switch this to use the normal space-weighting function.

Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Paul Dagnelie <paul.dagnelie at klarasystems.com>
Sponsored-by: Wasabi Technology, Inc.
Sponsored-by: Klara, Inc.
Closes #17531
DeltaFile
+7-27module/zfs/metaslab.c
+7-271 files

OpenZFS/src b21e04ecmd/zdb zdb.c, tests/zfs-tests/tests/functional/pool_checkpoint checkpoint_zdb.ksh

Fix zdb pool/ with -k

When examining the root dataset with zdb -k, we get into a mismatched
state. main() knows we are not examining the whole pool, but it strips
off the trailing slash. import_checkpointed_state() then thinks we are
examining the whole pool, and does not update the target path
appropriately. The fix is to directly inform import_checkpointed_state
that we are examining a filesystem, and not the whole pool.

Sponsored-by: Klara, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Rob Norris <rob.norris at klarasystems.com>
Signed-off-by: Paul Dagnelie <paul.dagnelie at klarasystems.com>
Co-authored-by: Paul Dagnelie <paul.dagnelie at klarasystems.com>
Closes #17536
DeltaFile
+11-9cmd/zdb/zdb.c
+2-0tests/zfs-tests/tests/functional/pool_checkpoint/checkpoint_zdb.ksh
+13-92 files

OpenZFS/src d323fbfinclude/os/freebsd/spl/sys vm.h, module/os/freebsd/spl spl_vm.c

FreeBSD: zfs_putpages: don't undirty pages until after write completes

In syncing mode, zfs_putpages() would put the entire range of pages onto
the ZIL, then return VM_PAGER_OK for each page to the kernel. However,
an associated zil_commit() or txg sync had not happened at this point,
so the write may not actually be on disk.

So, we rework that case to use a ZIL commit callback, and do the
post-write work of undirtying the page and signaling completion there.
We return VM_PAGER_PEND to the kernel instead so it knows that we will
take care of it.

The original version of this (238eab7dc1) copied the Linux model and did
the cleanup in a ZIL callback for both async and sync. This was a
mistake, as FreeBSD does not have a separate "busy for writeback" flag
like Linux which keeps the page usable. The full sbusy flag locks the
entire page out until the itx callback fires, which for async is after
txg sync, which could be literal seconds in the future.


    [12 lines not shown]
DeltaFile
+73-14module/os/freebsd/zfs/zfs_vnops_os.c
+1-0module/os/freebsd/spl/spl_vm.c
+1-0include/os/freebsd/spl/sys/vm.h
+75-143 files

OpenZFS/src ee2a2d9include/os/freebsd/spl/sys vm.h, module/os/freebsd/spl spl_vm.c

Revert "FreeBSD: zfs_putpages: don't undirty pages until after write completes"

This causes async putpages to leave the pages sbusied for a long time,
which hurts concurrency.  Revert for now until we have a better
approach.

This reverts commit 238eab7dc16932edbe9bcc990e8e5376bfe5b2ba.

Reported by:    Ihor Antonov <ngor at hugpoint.tech>
Discussed with: Rob Norris <rob.norris at klarasystems.com>

References: freebsd/freebsd-src at 738a9a7
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Reviewed-by: Mark Johnston <markj at FreeBSD.org>
Ported-by: Rob Norris <rob.norris at klarasystems.com>
Signed-off-by: Rob Norris <rob.norris at klarasystems.com>
Closes #17533
DeltaFile
+15-45module/os/freebsd/zfs/zfs_vnops_os.c
+0-1module/os/freebsd/spl/spl_vm.c
+0-1include/os/freebsd/spl/sys/vm.h
+15-473 files

OpenZFS/src 1b84bd1tests/runfiles common.run, tests/zfs-tests/tests Makefile.am

ZTS: test that zdb can work with libzpool tunables

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Reviewed-by: Alexander Motin <mav at FreeBSD.org>
Signed-off-by: Rob Norris <robn at despairlabs.com>
Closes #17537
DeltaFile
+71-0tests/zfs-tests/tests/functional/cli_root/zdb/zdb_tunables.ksh
+2-1tests/runfiles/common.run
+1-0tests/zfs-tests/tests/Makefile.am
+74-13 files