mirror_zfs/module/os/freebsd/zfs
Rob Norris 238eab7dc1 FreeBSD: zfs_putpages: don't undirty pages until after write completes
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 it 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.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Mark Johnston <markj@FreeBSD.org>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #17445
2025-06-12 14:45:18 -07:00
..
abd_os.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
arc_os.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
crypto_os.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
dmu_os.c Wire O_DIRECT also to Uncached I/O (#17218) 2025-05-13 14:26:55 -07:00
event_os.c FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-08-05 16:56:45 -07:00
hkdf.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
kmod_core.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
spa_os.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
sysctl_os.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
vdev_geom.c vdev_geom: converted injected EIO errors to ENXIO 2025-05-28 10:29:11 -07:00
vdev_label_os.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_acl.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_ctldir.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_debug.c SPDX: license tags: CDDL-1.0 2025-03-13 17:56:27 -07:00
zfs_dir.c dmu_tx: rename dmu_tx_assign() flags from TXG_* to DMU_TX_* (#17143) 2025-03-18 16:04:22 -07:00
zfs_file_os.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
zfs_ioctl_compat.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
zfs_ioctl_os.c SPDX: license tags: BSD-2-Clause 2025-03-13 17:56:46 -07:00
zfs_racct.c Wire O_DIRECT also to Uncached I/O (#17218) 2025-05-13 14:26:55 -07:00
zfs_vfsops.c Report default quotas via kernel interfaces 2025-04-03 10:36:38 -07:00
zfs_vnops_os.c FreeBSD: zfs_putpages: don't undirty pages until after write completes 2025-06-12 14:45:18 -07:00
zfs_znode_os.c FreeBSD: Use new SYSCTL_SIZEOF() 2025-05-08 10:31:43 -04:00
zio_crypt.c tunables: remove FreeBSD compat macros for Linux module params 2025-05-28 16:50:22 -07:00
zvol_os.c ZVOL: Make zvol_volmode module parameter platform-independent 2025-05-31 19:09:50 -04:00