Go to file
Fabian-Gruenbichler 8ff37c68d2 linux: zvols: correctly detect flush requests
since 4.10, bio->bi_opf needs to be checked to determine all kinds of
flush requests. this was the case prior to the commit referenced below,
but the order of ifdefs was not the usual one (newest up top), which
might have caused this to slip through.

this fixes a regression when using zvols as Qemu block devices, but
might have broken other use cases as well. the symptoms are that all
sync writes from within a VM configured to use such a virtual block
devices are ignored and treated as async writes by the host ZFS layer.

this can be verified using fio in sync mode inside the VM, for example
with

 fio \
 --filename=/dev/sda --ioengine=libaio --loops=1 --size=10G \
 --time_based --runtime=60 --group_reporting --stonewall --name=cc1 \
 --description="CC1" --rw=write --bs=4k --direct=1 --iodepth=1 \
 --numjobs=1 --sync=1

which shows an IOPS number way above what the physical device underneath
supports, with "zpool iostat -r 1" on the hypervisor side showing no
sync IO occuring during the benchmark.

with the regression fixed, both fio inside the VM and the IO stats on
the host show the expected numbers.

Fixes: 846b598519
"config: remove HAVE_REQ_OP_* and HAVE_REQ_*"

Signed-off-by: Fabian-Gruenbichler <f.gruenbichler@proxmox.com>
Co-authored-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Closes #17131
(cherry picked from commit 41823a0ede)
2025-05-27 14:41:45 -07:00
.github ZTS: Add Fedora 41, remove Fedora 39 2024-11-05 11:09:22 -08:00
cmd zdb/ztest: send dbgmsg output to stderr 2024-11-15 10:15:01 -08:00
config Linux 6.14: dops->d_revalidate now takes four args 2025-05-27 14:41:45 -07:00
contrib config: remove ZFS_GLOBAL_ZONE_PAGE_STATE and ZFS_ENUM_* generation 2024-11-15 10:15:00 -08:00
etc etc/init.d: decide which variant to use at build time. 2024-04-22 09:28:06 -07:00
include linux: zvols: correctly detect flush requests 2025-05-27 14:41:45 -07:00
lib Fix race in libzfs_run_process_impl 2024-12-04 14:12:39 -08:00
man Increase L2ARC write rate and headroom 2024-11-15 10:15:00 -08:00
module Linux 6.14: BLK_MQ_F_SHOULD_MERGE was removed 2025-05-27 14:41:45 -07:00
rpm contrib: link zpool to zfs in bash-completion (#16376) 2024-08-26 15:10:16 -07:00
scripts config: remove ZFS_GLOBAL_ZONE_PAGE_STATE and ZFS_ENUM_* generation 2024-11-15 10:15:00 -08:00
tests ZTS: Avoid embedded blocks in bclone/bclone_prop_sync 2024-11-26 09:55:29 -08:00
udev Avoid computing strlen() inside loops 2024-11-05 15:43:52 -08:00
.cirrus.yml CI: add FreeBSD build with Cirrus CI 2023-10-07 09:08:20 -07:00
.editorconfig Add an .editorconfig; document git whitespace settings 2020-01-27 13:32:52 -08:00
.gitignore Packaging: Auto-generate changelog during configure (#15528) 2023-11-16 14:23:03 -08:00
.gitmodules .gitmodules: link to openzfs github repository 2021-04-12 09:37:23 -07:00
.mailmap AUTHORS: refresh with recent new contributors (#16362) 2024-07-23 11:58:49 -07:00
AUTHORS AUTHORS: refresh with recent new contributors (#16362) 2024-07-23 11:58:49 -07:00
autogen.sh Ubuntu 22.04 integration: ShellCheck 2022-11-18 11:24:48 -08:00
CODE_OF_CONDUCT.md Documentation corrections 2022-12-22 11:34:28 -08:00
configure.ac Packaging: Auto-generate changelog during configure (#15528) 2023-11-16 14:23:03 -08:00
copy-builtin copy-builtin: add hooks with sed/>> 2022-05-10 10:17:43 -07:00
COPYRIGHT Fix typos 2020-06-09 21:24:09 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
Makefile.am Process script directory for all configs 2022-10-27 16:45:14 -07:00
META Tag zfs-2.2.7 2024-12-04 14:12:39 -08:00
NEWS Fix NEWS file 2020-08-26 21:44:41 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md FreeBSD: remove support for FreeBSD < 13.0-RELEASE (#16372) 2024-11-15 10:15:00 -08:00
RELEASES.md Add RELEASES.md file 2021-04-02 16:33:40 -07:00
TEST Remove CI builder customization from TEST 2020-03-16 10:46:03 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. This repository contains the code for running OpenZFS on Linux and FreeBSD.

codecov coverity

Official Resources

Installation

Full documentation for installing OpenZFS on your favorite operating system can be found at the Getting Started Page.

Contribute & Develop

We have a separate document with contribution guidelines.

We have a Code of Conduct.

Release

OpenZFS is released under a CDDL license. For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197

Supported Kernels

  • The META file contains the officially recognized supported Linux kernel versions.
  • Supported FreeBSD versions are any supported branches and releases starting from 13.0-RELEASE.