diff --git a/autobuild.sh b/autobuild.sh new file mode 100644 index 0000000..96d9300 --- /dev/null +++ b/autobuild.sh @@ -0,0 +1,7 @@ +#!/bin/bash +sudo apt install devscripts rsync -y +yes | sudo mk-build-deps --install --remove +git submodule update --init --depth=1 +mkdir build && rsync -ra * build/ +cd build +dpkg-buildpackage -b -us -uc diff --git a/debian/changelog b/debian/changelog index 4ac24c1..de7c4df 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +pve-kernel (6.1.60) generic; urgency=medium + + * Update to Linux 6.1.60 + * Update to zfs 2.2.0 + + -- jiangcuo Tue, 31 Oct 2023 10:58:30 +0800 + pve-kernel (6.1.51) generic; urgency=medium * Update to Linux 6.1.51 diff --git a/debian/config/config.pve b/debian/config/config.pve index 773baed..bf8a9dd 100644 --- a/debian/config/config.pve +++ b/debian/config/config.pve @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 6.1.42 Kernel Configuration +# Linux/arm64 6.1.60 Kernel Configuration # CONFIG_CC_VERSION_TEXT="gcc (Debian 12.2.0-14) 12.2.0" CONFIG_CC_IS_GCC=y @@ -295,7 +295,6 @@ CONFIG_FIX_EARLYCON_MEM=y CONFIG_PGTABLE_LEVELS=4 CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_PROC_KCORE_TEXT=y -CONFIG_BROKEN_GAS_INST=y # # Platform selection @@ -351,6 +350,7 @@ CONFIG_ARCH_ZYNQMP=y # # ARM errata workarounds via the alternatives framework # +CONFIG_AMPERE_ERRATUM_AC03_CPU_38=y CONFIG_ARM64_WORKAROUND_CLEAN_CACHE=y CONFIG_ARM64_ERRATUM_826319=y CONFIG_ARM64_ERRATUM_827319=y @@ -361,6 +361,7 @@ CONFIG_ARM64_ERRATUM_834220=y CONFIG_ARM64_ERRATUM_1742098=y CONFIG_ARM64_ERRATUM_845719=y CONFIG_ARM64_ERRATUM_843419=y +CONFIG_ARM64_LD_HAS_FIX_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_1024718=y CONFIG_ARM64_ERRATUM_1418040=y CONFIG_ARM64_WORKAROUND_SPECULATIVE_AT=y @@ -381,6 +382,7 @@ CONFIG_ARM64_ERRATUM_2054223=y CONFIG_ARM64_ERRATUM_2067961=y CONFIG_ARM64_ERRATUM_2441009=y CONFIG_ARM64_ERRATUM_2457168=y +CONFIG_ARM64_ERRATUM_2966298=y CONFIG_CAVIUM_ERRATUM_22375=y CONFIG_CAVIUM_ERRATUM_23144=y CONFIG_CAVIUM_ERRATUM_23154=y @@ -422,6 +424,7 @@ CONFIG_HZ=250 CONFIG_SCHED_HRTICK=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_HW_PERF_EVENTS=y +CONFIG_CC_HAVE_SHADOW_CALL_STACK=y CONFIG_PARAVIRT=y # CONFIG_PARAVIRT_TIME_ACCOUNTING is not set CONFIG_KEXEC=y @@ -451,12 +454,17 @@ CONFIG_SETEND_EMULATION=y # CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_PAN=y +CONFIG_AS_HAS_LDAPR=y +CONFIG_AS_HAS_LSE_ATOMICS=y +CONFIG_ARM64_LSE_ATOMICS=y CONFIG_ARM64_USE_LSE_ATOMICS=y # end of ARMv8.1 architectural features # # ARMv8.2 architectural features # +CONFIG_AS_HAS_ARMV8_2=y +CONFIG_AS_HAS_SHA3=y CONFIG_ARM64_PMEM=y CONFIG_ARM64_RAS_EXTN=y CONFIG_ARM64_CNP=y @@ -466,6 +474,10 @@ CONFIG_ARM64_CNP=y # ARMv8.3 architectural features # CONFIG_ARM64_PTR_AUTH=y +CONFIG_ARM64_PTR_AUTH_KERNEL=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET=y +CONFIG_CC_HAS_SIGN_RETURN_ADDRESS=y +CONFIG_AS_HAS_PAC=y CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y # end of ARMv8.3 architectural features @@ -473,13 +485,19 @@ CONFIG_AS_HAS_CFI_NEGATE_RA_STATE=y # ARMv8.4 architectural features # CONFIG_ARM64_AMU_EXTN=y +CONFIG_AS_HAS_ARMV8_4=y +CONFIG_ARM64_TLB_RANGE=y # end of ARMv8.4 architectural features # # ARMv8.5 architectural features # +CONFIG_AS_HAS_ARMV8_5=y CONFIG_ARM64_BTI=y +CONFIG_CC_HAS_BRANCH_PROT_PAC_RET_BTI=y CONFIG_ARM64_E0PD=y +CONFIG_ARM64_AS_HAS_MTE=y +CONFIG_ARM64_MTE=y # end of ARMv8.5 architectural features # @@ -496,6 +514,8 @@ CONFIG_ARM64_PSEUDO_NMI=y CONFIG_RELOCATABLE=y CONFIG_RANDOMIZE_BASE=y CONFIG_RANDOMIZE_MODULE_REGION_FULL=y +CONFIG_CC_HAVE_STACKPROTECTOR_SYSREG=y +CONFIG_STACKPROTECTOR_PER_TASK=y CONFIG_ARCH_NR_GPIO=2048 # end of Kernel Features @@ -689,6 +709,7 @@ CONFIG_KVM=y CONFIG_CRASH_CORE=y CONFIG_KEXEC_CORE=y CONFIG_HAVE_IMA_KEXEC=y +CONFIG_ARCH_HAS_SUBPAGE_FAULTS=y CONFIG_KPROBES=y CONFIG_JUMP_LABEL=y # CONFIG_STATIC_KEYS_SELFTEST is not set @@ -738,6 +759,8 @@ CONFIG_HAVE_ARCH_STACKLEAK=y CONFIG_HAVE_STACKPROTECTOR=y CONFIG_STACKPROTECTOR=y CONFIG_STACKPROTECTOR_STRONG=y +CONFIG_ARCH_SUPPORTS_SHADOW_CALL_STACK=y +# CONFIG_SHADOW_CALL_STACK is not set CONFIG_ARCH_SUPPORTS_LTO_CLANG=y CONFIG_ARCH_SUPPORTS_LTO_CLANG_THIN=y CONFIG_LTO_NONE=y @@ -1077,6 +1100,7 @@ CONFIG_ZONE_DEVICE=y CONFIG_HMM_MIRROR=y CONFIG_GET_FREE_REGION=y CONFIG_DEVICE_PRIVATE=y +CONFIG_ARCH_USES_HIGH_VMA_FLAGS=y CONFIG_VM_EVENT_COUNTERS=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_TEST is not set @@ -1742,8 +1766,6 @@ CONFIG_NET_CLS_FW=m CONFIG_NET_CLS_U32=m # CONFIG_CLS_U32_PERF is not set CONFIG_CLS_U32_MARK=y -CONFIG_NET_CLS_RSVP=m -CONFIG_NET_CLS_RSVP6=m CONFIG_NET_CLS_FLOW=m CONFIG_NET_CLS_CGROUP=m CONFIG_NET_CLS_BPF=m @@ -2040,7 +2062,7 @@ CONFIG_NET_SOCK_MSG=y CONFIG_NET_DEVLINK=y CONFIG_PAGE_POOL=y CONFIG_PAGE_POOL_STATS=y -CONFIG_FAILOVER=m +CONFIG_FAILOVER=y CONFIG_ETHTOOL_NETLINK=y # @@ -2873,7 +2895,7 @@ CONFIG_SCSI_DEBUG=m CONFIG_SCSI_PMCRAID=m CONFIG_SCSI_PM8001=m CONFIG_SCSI_BFA_FC=m -CONFIG_SCSI_VIRTIO=m +CONFIG_SCSI_VIRTIO=y CONFIG_SCSI_CHELSIO_FCOE=m CONFIG_SCSI_DH=y CONFIG_SCSI_DH_RDAC=m @@ -3116,8 +3138,8 @@ CONFIG_RIONET_RX_SIZE=128 CONFIG_TUN=y CONFIG_TAP=m # CONFIG_TUN_VNET_CROSS_LE is not set -CONFIG_VETH=m -CONFIG_VIRTIO_NET=m +CONFIG_VETH=y +CONFIG_VIRTIO_NET=y CONFIG_NLMON=m CONFIG_NET_VRF=m CONFIG_VSOCKMON=m @@ -4184,7 +4206,7 @@ CONFIG_VMXNET3=m CONFIG_FUJITSU_ES=m CONFIG_USB4_NET=m CONFIG_NETDEVSIM=m -CONFIG_NET_FAILOVER=m +CONFIG_NET_FAILOVER=y CONFIG_ISDN=y CONFIG_ISDN_CAPI=y CONFIG_CAPI_TRACE=y @@ -4792,7 +4814,7 @@ CONFIG_I2C_MUX_MLXCPLD=m CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_SMBUS=m -CONFIG_I2C_ALGOBIT=m +CONFIG_I2C_ALGOBIT=y CONFIG_I2C_ALGOPCA=m # @@ -6870,10 +6892,7 @@ CONFIG_MEDIA_ATTACH=y # IR I2C driver auto-selected by 'Autoselect ancillary drivers' # CONFIG_VIDEO_IR_I2C=m - -# -# Camera sensor devices -# +CONFIG_VIDEO_CAMERA_SENSOR=y CONFIG_VIDEO_APTINA_PLL=m # CONFIG_VIDEO_AR0521 is not set CONFIG_VIDEO_HI556=m @@ -6944,7 +6963,6 @@ CONFIG_VIDEO_VS6624=m # CONFIG_VIDEO_CCS is not set CONFIG_VIDEO_ET8EK8=m CONFIG_VIDEO_M5MOLS=m -# end of Camera sensor devices # # Lens drivers @@ -7297,9 +7315,10 @@ CONFIG_DVB_DUMMY_FE=m # CONFIG_APERTURE_HELPERS=y # CONFIG_TEGRA_HOST1X is not set -CONFIG_DRM=m +CONFIG_DRM=y CONFIG_DRM_MIPI_DBI=m CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DEBUG_MM is not set CONFIG_DRM_KMS_HELPER=m # CONFIG_DRM_DEBUG_DP_MST_TOPOLOGY_REFS is not set # CONFIG_DRM_DEBUG_MODESET_LOCK is not set @@ -7379,7 +7398,7 @@ CONFIG_DRM_VKMS=m # CONFIG_DRM_EXYNOS is not set CONFIG_DRM_ROCKCHIP=m CONFIG_ROCKCHIP_VOP=y -# CONFIG_ROCKCHIP_VOP2 is not set +CONFIG_ROCKCHIP_VOP2=y CONFIG_ROCKCHIP_ANALOGIX_DP=y CONFIG_ROCKCHIP_CDN_DP=y CONFIG_ROCKCHIP_DW_HDMI=y @@ -9611,10 +9630,10 @@ CONFIG_VIRTIO_MENU=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_VIRTIO_VDPA=m -CONFIG_VIRTIO_PMEM=m +CONFIG_VIRTIO_PMEM=y CONFIG_VIRTIO_BALLOON=y -# CONFIG_VIRTIO_MEM is not set -CONFIG_VIRTIO_INPUT=m +CONFIG_VIRTIO_MEM=y +CONFIG_VIRTIO_INPUT=y CONFIG_VIRTIO_MMIO=y CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y CONFIG_VIRTIO_DMA_SHARED_BUFFER=m @@ -12317,7 +12336,6 @@ CONFIG_IMA_APPRAISE=y # CONFIG_IMA_APPRAISE_BUILD_POLICY is not set CONFIG_IMA_APPRAISE_BOOTPARAM=y CONFIG_IMA_APPRAISE_MODSIG=y -CONFIG_IMA_TRUSTED_KEYRING=y # CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY is not set # CONFIG_IMA_BLACKLIST_KEYRING is not set # CONFIG_IMA_LOAD_X509 is not set @@ -12976,8 +12994,10 @@ CONFIG_MEMORY_NOTIFIER_ERROR_INJECT=m # CONFIG_DEBUG_PER_CPU_MAPS is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_SW_TAGS=y +CONFIG_HAVE_ARCH_KASAN_HW_TAGS=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y # CONFIG_KASAN is not set CONFIG_HAVE_ARCH_KFENCE=y diff --git a/debian/control b/debian/control index dcf93b9..0597367 100644 --- a/debian/control +++ b/debian/control @@ -5,6 +5,8 @@ Maintainer: Fabian Mastenbroek Build-Depends: asciidoc, automake, bc, + libncurses-dev, + pkg-config, bison, cpio, debhelper (>= 10~), @@ -27,7 +29,7 @@ Build-Depends: asciidoc, xmlto, zlib1g-dev, zstd -Build-Conflicts: pve-headers-6.1.51-generic, +Build-Conflicts: pve-headers-6.1.60-generic, Vcs-Git: git://github.com/fabianishere/pve-generic-kernel.git Vcs-Browser: https://github.com/fabianishere/pve-generic-kernel @@ -46,7 +48,7 @@ Package: pve-headers-6.1-generic Architecture: all Section: admin Priority: optional -Depends: pve-headers-6.1.51-generic, +Depends: pve-headers-6.1.60-generic, Description: Latest Proxmox Edge Kernel Headers This is a metapackage which will install the kernel headers for the latest available Proxmox Edge kernel from the 6.1 @@ -57,12 +59,12 @@ Architecture: all Section: admin Priority: optional Depends: pve-firmware, - pve-kernel-6.1.51-generic, + pve-kernel-6.1.60-generic, Description: Latest Proxmox Edge Kernel Image This is a metapackage which will install the latest available Proxmox Edge kernel from the 6.1 series. -Package: pve-headers-6.1.51-generic +Package: pve-headers-6.1.60-generic Section: devel Priority: optional Architecture: any @@ -72,7 +74,7 @@ Depends: Description: The Proxmox Edge Kernel Headers This package contains the Proxmox Edge Linux kernel headers -Package: pve-kernel-6.1.51-generic +Package: pve-kernel-6.1.60-generic Section: admin Priority: optional Architecture: any diff --git a/debian/patches/series.zfs b/debian/patches/series.zfs index 0904b0f..608d8e9 100644 --- a/debian/patches/series.zfs +++ b/debian/patches/series.zfs @@ -6,5 +6,6 @@ zfs/0005-Enable-zed-emails.patch zfs/0006-dont-symlink-zed-scripts.patch zfs/0007-Add-systemd-unit-for-importing-specific-pools.patch zfs/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch -zfs/0009-arcstat-Fix-integer-division-with-python3.patch -zfs/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch +zfs/0009-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch +zfs/0010-zvol-Remove-broken-blk-mq-optimization.patch +zfs/0011-Revert-zvol-Temporally-disable-blk-mq.patch diff --git a/debian/patches/zfs/0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch b/debian/patches/zfs/0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch index b1f7818..fa365df 100644 --- a/debian/patches/zfs/0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch +++ b/debian/patches/zfs/0003-Fix-the-path-to-the-zed-binary-on-the-systemd-unit.patch @@ -13,13 +13,13 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/systemd/system/zfs-zed.service.in b/etc/systemd/system/zfs-zed.service.in -index be80025a4..20ce8e632 100644 +index be2fc6734..7606604ec 100644 --- a/etc/systemd/system/zfs-zed.service.in +++ b/etc/systemd/system/zfs-zed.service.in -@@ -4,7 +4,7 @@ Documentation=man:zed(8) - ConditionPathIsDirectory=/sys/module/zfs +@@ -5,7 +5,7 @@ ConditionPathIsDirectory=/sys/module/zfs [Service] + EnvironmentFile=-@initconfdir@/zfs -ExecStart=@sbindir@/zed -F +ExecStart=/usr/sbin/zed -F Restart=always diff --git a/debian/patches/zfs/0004-import-with-d-dev-disk-by-id-in-scan-service.patch b/debian/patches/zfs/0004-import-with-d-dev-disk-by-id-in-scan-service.patch index 5990a67..7ea61c8 100644 --- a/debian/patches/zfs/0004-import-with-d-dev-disk-by-id-in-scan-service.patch +++ b/debian/patches/zfs/0004-import-with-d-dev-disk-by-id-in-scan-service.patch @@ -14,13 +14,13 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/systemd/system/zfs-import-scan.service.in b/etc/systemd/system/zfs-import-scan.service.in -index 598ef501b..e4f3a70c1 100644 +index c5dd45d87..1c792edf0 100644 --- a/etc/systemd/system/zfs-import-scan.service.in +++ b/etc/systemd/system/zfs-import-scan.service.in -@@ -13,7 +13,7 @@ ConditionPathIsDirectory=/sys/module/zfs - [Service] +@@ -14,7 +14,7 @@ ConditionPathIsDirectory=/sys/module/zfs Type=oneshot RemainAfterExit=yes + EnvironmentFile=-@initconfdir@/zfs -ExecStart=@sbindir@/zpool import -aN -o cachefile=none $ZPOOL_IMPORT_OPTS +ExecStart=@sbindir@/zpool import -aN -d /dev/disk/by-id -o cachefile=none $ZPOOL_IMPORT_OPTS diff --git a/debian/patches/zfs/0005-Enable-zed-emails.patch b/debian/patches/zfs/0005-Enable-zed-emails.patch index d87df00..646d529 100644 --- a/debian/patches/zfs/0005-Enable-zed-emails.patch +++ b/debian/patches/zfs/0005-Enable-zed-emails.patch @@ -13,10 +13,10 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/zed/zed.d/zed.rc b/cmd/zed/zed.d/zed.rc -index 227b26c26..240d0dbfa 100644 +index 78dc1afc7..41d5539ea 100644 --- a/cmd/zed/zed.d/zed.rc +++ b/cmd/zed/zed.d/zed.rc -@@ -42,7 +42,7 @@ ZED_EMAIL_ADDR="root" +@@ -41,7 +41,7 @@ ZED_EMAIL_ADDR="root" ## # Minimum number of seconds between notifications for a similar event. # diff --git a/debian/patches/zfs/0006-dont-symlink-zed-scripts.patch b/debian/patches/zfs/0006-dont-symlink-zed-scripts.patch index 33c066b..7d0a41c 100644 --- a/debian/patches/zfs/0006-dont-symlink-zed-scripts.patch +++ b/debian/patches/zfs/0006-dont-symlink-zed-scripts.patch @@ -3,29 +3,44 @@ From: Antonio Russo Date: Fri, 20 Mar 2020 17:28:43 +0100 Subject: [PATCH] dont symlink zed scripts -(cherry picked and adapted from 5cee380324d74e640d5dd7a360faba3994c8007f [0]) +Of the zedlet scripts shipped by upstream, a subset are enabled by +default, by creating symlinks in /etc/zfs/zed.d. These symlinks are +shipped in the zfs-zed package. dpkg, however, does not support +conffile handling of symlinks, and therefore any changes (removals) to +the symlinks are not preserved on package upgrade. -[0] https://salsa.debian.org/zfsonlinux-team/zfs.git +To address this policy violation, we: -Signed-off-by: Stoiko Ivanov + 1. During package build, create a list of enabled-by-default zedlets, + instead of creating symlinks. + 2. On package removal, identify all enabled-by-default zedlets whose + symlinks do not exist (i.e., were removed by the user). This is done + by creating "whiteout" links to /dev/null in their place). + 3. On package installation, create links to enabled-by-default zedlets + UNLESS there is already a file there (i.e., abort if there is a + whiteout link). + 4. We also clean up broken symlinks to removed zedlets at package + postinst. Description: track default symlinks, instead of symlinking Forwarded: no need +(cherry picked from https://salsa.debian.org/zfsonlinux-team/zfs/-/commit/5cee380324d7) +Signed-off-by: Stoiko Ivanov Signed-off-by: Thomas Lamprecht --- cmd/zed/zed.d/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/zed/zed.d/Makefile.am b/cmd/zed/zed.d/Makefile.am -index 2c8173b3e..ad39292e4 100644 +index 812558cf6..f802cf140 100644 --- a/cmd/zed/zed.d/Makefile.am +++ b/cmd/zed/zed.d/Makefile.am -@@ -49,7 +49,7 @@ install-data-hook: - for f in $(zedconfdefaults); do \ - test -f "$(DESTDIR)$(zedconfdir)/$${f}" -o \ - -L "$(DESTDIR)$(zedconfdir)/$${f}" || \ -- ln -s "$(zedexecdir)/$${f}" "$(DESTDIR)$(zedconfdir)"; \ +@@ -48,7 +48,7 @@ zed-install-data-hook: + set -x; for f in $(zedconfdefaults); do \ + [ -f "$(DESTDIR)$(zedconfdir)/$${f}" ] ||\ + [ -L "$(DESTDIR)$(zedconfdir)/$${f}" ] || \ +- $(LN_S) "$(zedexecdir)/$${f}" "$(DESTDIR)$(zedconfdir)"; \ + echo "$${f}" >> "$(DESTDIR)$(zedexecdir)/DEFAULT-ENABLED" ; \ done - chmod 0600 "$(DESTDIR)$(zedconfdir)/zed.rc" + SHELLCHECKSCRIPTS += $(dist_zedconf_DATA) $(dist_zedexec_SCRIPTS) $(nodist_zedexec_SCRIPTS) diff --git a/debian/patches/zfs/0007-Add-systemd-unit-for-importing-specific-pools.patch b/debian/patches/zfs/0007-Add-systemd-unit-for-importing-specific-pools.patch index 3d36180..ed7adbe 100644 --- a/debian/patches/zfs/0007-Add-systemd-unit-for-importing-specific-pools.patch +++ b/debian/patches/zfs/0007-Add-systemd-unit-for-importing-specific-pools.patch @@ -13,16 +13,28 @@ can contain characters which will be escaped by systemd. Signed-off-by: Stoiko Ivanov Signed-off-by: Thomas Lamprecht --- - etc/systemd/system/50-zfs.preset.in | 1 + - etc/systemd/system/Makefile.am | 1 + + etc/Makefile.am | 1 + + etc/systemd/system/50-zfs.preset | 1 + etc/systemd/system/zfs-import@.service.in | 16 ++++++++++++++++ 3 files changed, 18 insertions(+) create mode 100644 etc/systemd/system/zfs-import@.service.in -diff --git a/etc/systemd/system/50-zfs.preset.in b/etc/systemd/system/50-zfs.preset.in +diff --git a/etc/Makefile.am b/etc/Makefile.am +index 7187762d3..de131dc87 100644 +--- a/etc/Makefile.am ++++ b/etc/Makefile.am +@@ -54,6 +54,7 @@ dist_systemdpreset_DATA = \ + systemdunit_DATA = \ + %D%/systemd/system/zfs-import-cache.service \ + %D%/systemd/system/zfs-import-scan.service \ ++ %D%/systemd/system/zfs-import@.service \ + %D%/systemd/system/zfs-import.target \ + %D%/systemd/system/zfs-mount.service \ + %D%/systemd/system/zfs-scrub-monthly@.timer \ +diff --git a/etc/systemd/system/50-zfs.preset b/etc/systemd/system/50-zfs.preset index e4056a92c..030611419 100644 ---- a/etc/systemd/system/50-zfs.preset.in -+++ b/etc/systemd/system/50-zfs.preset.in +--- a/etc/systemd/system/50-zfs.preset ++++ b/etc/systemd/system/50-zfs.preset @@ -1,6 +1,7 @@ # ZFS is enabled by default enable zfs-import-cache.service @@ -31,18 +43,6 @@ index e4056a92c..030611419 100644 enable zfs-import.target enable zfs-mount.service enable zfs-share.service -diff --git a/etc/systemd/system/Makefile.am b/etc/systemd/system/Makefile.am -index 35f833de5..af3ae597c 100644 ---- a/etc/systemd/system/Makefile.am -+++ b/etc/systemd/system/Makefile.am -@@ -7,6 +7,7 @@ systemdunit_DATA = \ - zfs-zed.service \ - zfs-import-cache.service \ - zfs-import-scan.service \ -+ zfs-import@.service \ - zfs-mount.service \ - zfs-share.service \ - zfs-volume-wait.service \ diff --git a/etc/systemd/system/zfs-import@.service.in b/etc/systemd/system/zfs-import@.service.in new file mode 100644 index 000000000..9b4ee9371 diff --git a/debian/patches/zfs/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch b/debian/patches/zfs/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch index 03135ed..b21a301 100644 --- a/debian/patches/zfs/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch +++ b/debian/patches/zfs/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch @@ -15,36 +15,36 @@ Signed-off-by: Thomas Lamprecht rename man/{man1/arcstat.1 => man8/arcstat.8} (99%) diff --git a/man/Makefile.am b/man/Makefile.am -index 64650c2b9..95a66a62f 100644 +index 36c1aede1..94fd96e58 100644 --- a/man/Makefile.am +++ b/man/Makefile.am -@@ -8,7 +8,6 @@ dist_man_MANS = \ - man1/ztest.1 \ - man1/raidz_test.1 \ - man1/zvol_wait.1 \ -- man1/arcstat.1 \ - \ - man5/vdev_id.conf.5 \ - \ +@@ -2,7 +2,6 @@ dist_noinst_man_MANS = \ + %D%/man1/cstyle.1 + + dist_man_MANS = \ +- %D%/man1/arcstat.1 \ + %D%/man1/raidz_test.1 \ + %D%/man1/test-runner.1 \ + %D%/man1/zhack.1 \ @@ -22,6 +21,7 @@ dist_man_MANS = \ - man7/zpoolconcepts.7 \ - man7/zpoolprops.7 \ + %D%/man7/zpoolconcepts.7 \ + %D%/man7/zpoolprops.7 \ \ -+ man8/arcstat.8 \ - man8/fsck.zfs.8 \ - man8/mount.zfs.8 \ - man8/vdev_id.8 \ ++ %D%/man8/arcstat.8 \ + %D%/man8/fsck.zfs.8 \ + %D%/man8/mount.zfs.8 \ + %D%/man8/vdev_id.8 \ diff --git a/man/man1/arcstat.1 b/man/man8/arcstat.8 similarity index 99% rename from man/man1/arcstat.1 rename to man/man8/arcstat.8 -index a69cd8937..dfe9c971b 100644 +index 82358fa68..a8fb55498 100644 --- a/man/man1/arcstat.1 +++ b/man/man8/arcstat.8 @@ -13,7 +13,7 @@ .\" Copyright (c) 2020 by AJ Jordan. All rights reserved. .\" - .Dd May 26, 2021 + .Dd December 23, 2022 -.Dt ARCSTAT 1 +.Dt ARCSTAT 8 .Os diff --git a/debian/patches/zfs/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch b/debian/patches/zfs/0009-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch similarity index 89% rename from debian/patches/zfs/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch rename to debian/patches/zfs/0009-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch index 61f03b5..fde0529 100644 --- a/debian/patches/zfs/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch +++ b/debian/patches/zfs/0009-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch @@ -22,15 +22,15 @@ l2_bufc_data_asize l2_bufc_metadata_asize to .get accessor Signed-off-by: Stoiko Ivanov Signed-off-by: Thomas Lamprecht --- - cmd/arc_summary/arc_summary3 | 28 ++++++++++++++-------------- - cmd/arcstat/arcstat.in | 14 +++++++------- + cmd/arc_summary | 28 ++++++++++++++-------------- + cmd/arcstat.in | 14 +++++++------- 2 files changed, 21 insertions(+), 21 deletions(-) -diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3 -index 9d0c2d30d..fd2581ae2 100755 ---- a/cmd/arc_summary/arc_summary3 -+++ b/cmd/arc_summary/arc_summary3 -@@ -609,13 +609,13 @@ def section_arc(kstats_dict): +diff --git a/cmd/arc_summary b/cmd/arc_summary +index 426e02070..9de198150 100755 +--- a/cmd/arc_summary ++++ b/cmd/arc_summary +@@ -655,13 +655,13 @@ def section_arc(kstats_dict): prt_i1('L2 cached evictions:', f_bytes(arc_stats['evict_l2_cached'])) prt_i1('L2 eligible evictions:', f_bytes(arc_stats['evict_l2_eligible'])) prt_i2('L2 eligible MFU evictions:', @@ -48,7 +48,7 @@ index 9d0c2d30d..fd2581ae2 100755 prt_i1('L2 ineligible evictions:', f_bytes(arc_stats['evict_l2_ineligible'])) print() -@@ -757,20 +757,20 @@ def section_l2arc(kstats_dict): +@@ -851,20 +851,20 @@ def section_l2arc(kstats_dict): f_perc(arc_stats['l2_hdr_size'], arc_stats['l2_size']), f_bytes(arc_stats['l2_hdr_size'])) prt_i2('MFU allocated size:', @@ -79,11 +79,11 @@ index 9d0c2d30d..fd2581ae2 100755 print() prt_1('L2ARC breakdown:', f_hits(l2_access_total)) -diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in -index d2b2e28d1..8004940b3 100755 ---- a/cmd/arcstat/arcstat.in -+++ b/cmd/arcstat/arcstat.in -@@ -482,8 +482,8 @@ def calculate(): +diff --git a/cmd/arcstat.in b/cmd/arcstat.in +index 8df1c62f7..833348d0e 100755 +--- a/cmd/arcstat.in ++++ b/cmd/arcstat.in +@@ -565,8 +565,8 @@ def calculate(): v["el2skip"] = d["evict_l2_skip"] // sint v["el2cach"] = d["evict_l2_cached"] // sint v["el2el"] = d["evict_l2_eligible"] // sint @@ -94,7 +94,7 @@ index d2b2e28d1..8004940b3 100755 v["el2inel"] = d["evict_l2_ineligible"] // sint v["mtxmis"] = d["mutex_miss"] // sint -@@ -498,11 +498,11 @@ def calculate(): +@@ -581,11 +581,11 @@ def calculate(): v["l2size"] = cur["l2_size"] v["l2bytes"] = d["l2_read_bytes"] // sint diff --git a/debian/patches/zfs/0009-arcstat-Fix-integer-division-with-python3.patch b/debian/patches/zfs/0009-arcstat-Fix-integer-division-with-python3.patch deleted file mode 100644 index 863c02b..0000000 --- a/debian/patches/zfs/0009-arcstat-Fix-integer-division-with-python3.patch +++ /dev/null @@ -1,134 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Valmiky Arquissandas -Date: Fri, 8 Oct 2021 16:32:27 +0100 -Subject: [PATCH] arcstat: Fix integer division with python3 - -The arcstat script requests compatibility with python2 and python3, but -PEP 238 modified the / operator and results in erroneous output when -run under python3. - -This commit replaces instances of / with //, yielding the expected -result in both versions of Python. - -Reviewed-by: Brian Behlendorf -Reviewed-by: John Kennedy -Reviewed-by: Ryan Moeller -Signed-off-by: Valmiky Arquissandas -Closes #12603 -(cherry picked from commit 2d02bba23d83ae8fede8d281edc255f01ccd28e9) -Signed-off-by: Thomas Lamprecht ---- - cmd/arcstat/arcstat.in | 66 +++++++++++++++++++++--------------------- - 1 file changed, 33 insertions(+), 33 deletions(-) - -diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in -index 0128fd817..d2b2e28d1 100755 ---- a/cmd/arcstat/arcstat.in -+++ b/cmd/arcstat/arcstat.in -@@ -441,73 +441,73 @@ def calculate(): - - v = dict() - v["time"] = time.strftime("%H:%M:%S", time.localtime()) -- v["hits"] = d["hits"] / sint -- v["miss"] = d["misses"] / sint -+ v["hits"] = d["hits"] // sint -+ v["miss"] = d["misses"] // sint - v["read"] = v["hits"] + v["miss"] -- v["hit%"] = 100 * v["hits"] / v["read"] if v["read"] > 0 else 0 -+ v["hit%"] = 100 * v["hits"] // v["read"] if v["read"] > 0 else 0 - v["miss%"] = 100 - v["hit%"] if v["read"] > 0 else 0 - -- v["dhit"] = (d["demand_data_hits"] + d["demand_metadata_hits"]) / sint -- v["dmis"] = (d["demand_data_misses"] + d["demand_metadata_misses"]) / sint -+ v["dhit"] = (d["demand_data_hits"] + d["demand_metadata_hits"]) // sint -+ v["dmis"] = (d["demand_data_misses"] + d["demand_metadata_misses"]) // sint - - v["dread"] = v["dhit"] + v["dmis"] -- v["dh%"] = 100 * v["dhit"] / v["dread"] if v["dread"] > 0 else 0 -+ v["dh%"] = 100 * v["dhit"] // v["dread"] if v["dread"] > 0 else 0 - v["dm%"] = 100 - v["dh%"] if v["dread"] > 0 else 0 - -- v["phit"] = (d["prefetch_data_hits"] + d["prefetch_metadata_hits"]) / sint -+ v["phit"] = (d["prefetch_data_hits"] + d["prefetch_metadata_hits"]) // sint - v["pmis"] = (d["prefetch_data_misses"] + -- d["prefetch_metadata_misses"]) / sint -+ d["prefetch_metadata_misses"]) // sint - - v["pread"] = v["phit"] + v["pmis"] -- v["ph%"] = 100 * v["phit"] / v["pread"] if v["pread"] > 0 else 0 -+ v["ph%"] = 100 * v["phit"] // v["pread"] if v["pread"] > 0 else 0 - v["pm%"] = 100 - v["ph%"] if v["pread"] > 0 else 0 - - v["mhit"] = (d["prefetch_metadata_hits"] + -- d["demand_metadata_hits"]) / sint -+ d["demand_metadata_hits"]) // sint - v["mmis"] = (d["prefetch_metadata_misses"] + -- d["demand_metadata_misses"]) / sint -+ d["demand_metadata_misses"]) // sint - - v["mread"] = v["mhit"] + v["mmis"] -- v["mh%"] = 100 * v["mhit"] / v["mread"] if v["mread"] > 0 else 0 -+ v["mh%"] = 100 * v["mhit"] // v["mread"] if v["mread"] > 0 else 0 - v["mm%"] = 100 - v["mh%"] if v["mread"] > 0 else 0 - - v["arcsz"] = cur["size"] - v["size"] = cur["size"] - v["c"] = cur["c"] -- v["mfu"] = d["mfu_hits"] / sint -- v["mru"] = d["mru_hits"] / sint -- v["mrug"] = d["mru_ghost_hits"] / sint -- v["mfug"] = d["mfu_ghost_hits"] / sint -- v["eskip"] = d["evict_skip"] / sint -- v["el2skip"] = d["evict_l2_skip"] / sint -- v["el2cach"] = d["evict_l2_cached"] / sint -- v["el2el"] = d["evict_l2_eligible"] / sint -- v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint -- v["el2mru"] = d["evict_l2_eligible_mru"] / sint -- v["el2inel"] = d["evict_l2_ineligible"] / sint -- v["mtxmis"] = d["mutex_miss"] / sint -+ v["mfu"] = d["mfu_hits"] // sint -+ v["mru"] = d["mru_hits"] // sint -+ v["mrug"] = d["mru_ghost_hits"] // sint -+ v["mfug"] = d["mfu_ghost_hits"] // sint -+ v["eskip"] = d["evict_skip"] // sint -+ v["el2skip"] = d["evict_l2_skip"] // sint -+ v["el2cach"] = d["evict_l2_cached"] // sint -+ v["el2el"] = d["evict_l2_eligible"] // sint -+ v["el2mfu"] = d["evict_l2_eligible_mfu"] // sint -+ v["el2mru"] = d["evict_l2_eligible_mru"] // sint -+ v["el2inel"] = d["evict_l2_ineligible"] // sint -+ v["mtxmis"] = d["mutex_miss"] // sint - - if l2exist: -- v["l2hits"] = d["l2_hits"] / sint -- v["l2miss"] = d["l2_misses"] / sint -+ v["l2hits"] = d["l2_hits"] // sint -+ v["l2miss"] = d["l2_misses"] // sint - v["l2read"] = v["l2hits"] + v["l2miss"] -- v["l2hit%"] = 100 * v["l2hits"] / v["l2read"] if v["l2read"] > 0 else 0 -+ v["l2hit%"] = 100 * v["l2hits"] // v["l2read"] if v["l2read"] > 0 else 0 - - v["l2miss%"] = 100 - v["l2hit%"] if v["l2read"] > 0 else 0 - v["l2asize"] = cur["l2_asize"] - v["l2size"] = cur["l2_size"] -- v["l2bytes"] = d["l2_read_bytes"] / sint -+ v["l2bytes"] = d["l2_read_bytes"] // sint - - v["l2pref"] = cur["l2_prefetch_asize"] - v["l2mfu"] = cur["l2_mfu_asize"] - v["l2mru"] = cur["l2_mru_asize"] - v["l2data"] = cur["l2_bufc_data_asize"] - v["l2meta"] = cur["l2_bufc_metadata_asize"] -- v["l2pref%"] = 100 * v["l2pref"] / v["l2asize"] -- v["l2mfu%"] = 100 * v["l2mfu"] / v["l2asize"] -- v["l2mru%"] = 100 * v["l2mru"] / v["l2asize"] -- v["l2data%"] = 100 * v["l2data"] / v["l2asize"] -- v["l2meta%"] = 100 * v["l2meta"] / v["l2asize"] -+ v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"] -+ v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"] -+ v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"] -+ v["l2data%"] = 100 * v["l2data"] // v["l2asize"] -+ v["l2meta%"] = 100 * v["l2meta"] // v["l2asize"] - - v["grow"] = 0 if cur["arc_no_grow"] else 1 - v["need"] = cur["arc_need_free"] diff --git a/debian/patches/zfs/0010-zvol-Remove-broken-blk-mq-optimization.patch b/debian/patches/zfs/0010-zvol-Remove-broken-blk-mq-optimization.patch new file mode 100644 index 0000000..178e68e --- /dev/null +++ b/debian/patches/zfs/0010-zvol-Remove-broken-blk-mq-optimization.patch @@ -0,0 +1,99 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Hutter +Date: Mon, 23 Oct 2023 14:45:06 -0700 +Subject: [PATCH] zvol: Remove broken blk-mq optimization + +This fix removes a dubious optimization in zfs_uiomove_bvec_rq() +that saved the iterator contents of a rq_for_each_segment(). This +optimization allowed restoring the "saved state" from a previous +rq_for_each_segment() call on the same uio so that you wouldn't +need to iterate though each bvec on every zfs_uiomove_bvec_rq() call. +However, if the kernel is manipulating the requests/bios/bvecs under +the covers between zfs_uiomove_bvec_rq() calls, then it could result +in corruption from using the "saved state". This optimization +results in an unbootable system after installing an OS on a zvol +with blk-mq enabled. + +Reviewed-by: Brian Behlendorf +Signed-off-by: Tony Hutter +Closes #15351 +(cherry picked from commit 7c9b6fed16ed5034fd1cdfdaedfad93dc97b1557) +Signed-off-by: Stoiko Ivanov +--- + include/os/linux/spl/sys/uio.h | 8 -------- + module/os/linux/zfs/zfs_uio.c | 29 ----------------------------- + 2 files changed, 37 deletions(-) + +diff --git a/include/os/linux/spl/sys/uio.h b/include/os/linux/spl/sys/uio.h +index cce097e16..a4b600004 100644 +--- a/include/os/linux/spl/sys/uio.h ++++ b/include/os/linux/spl/sys/uio.h +@@ -73,13 +73,6 @@ typedef struct zfs_uio { + size_t uio_skip; + + struct request *rq; +- +- /* +- * Used for saving rq_for_each_segment() state between calls +- * to zfs_uiomove_bvec_rq(). +- */ +- struct req_iterator iter; +- struct bio_vec bv; + } zfs_uio_t; + + +@@ -138,7 +131,6 @@ zfs_uio_bvec_init(zfs_uio_t *uio, struct bio *bio, struct request *rq) + } else { + uio->uio_bvec = NULL; + uio->uio_iovcnt = 0; +- memset(&uio->iter, 0, sizeof (uio->iter)); + } + + uio->uio_loffset = io_offset(bio, rq); +diff --git a/module/os/linux/zfs/zfs_uio.c b/module/os/linux/zfs/zfs_uio.c +index 3efd4ab15..c2ed67c43 100644 +--- a/module/os/linux/zfs/zfs_uio.c ++++ b/module/os/linux/zfs/zfs_uio.c +@@ -204,22 +204,6 @@ zfs_uiomove_bvec_rq(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) + this_seg_start = orig_loffset; + + rq_for_each_segment(bv, rq, iter) { +- if (uio->iter.bio) { +- /* +- * If uio->iter.bio is present, then we know we've saved +- * uio->iter from a previous call to this function, and +- * we can skip ahead in this rq_for_each_segment() loop +- * to where we last left off. That way, we don't need +- * to iterate over tons of segments we've already +- * processed - we can just restore the "saved state". +- */ +- iter = uio->iter; +- bv = uio->bv; +- this_seg_start = uio->uio_loffset; +- memset(&uio->iter, 0, sizeof (uio->iter)); +- continue; +- } +- + /* + * Lookup what the logical offset of the last byte of this + * segment is. +@@ -260,19 +244,6 @@ zfs_uiomove_bvec_rq(void *p, size_t n, zfs_uio_rw_t rw, zfs_uio_t *uio) + copied = 1; /* We copied some data */ + } + +- if (n == 0) { +- /* +- * All done copying. Save our 'iter' value to the uio. +- * This allows us to "save our state" and skip ahead in +- * the rq_for_each_segment() loop the next time we call +- * call zfs_uiomove_bvec_rq() on this uio (which we +- * will be doing for any remaining data in the uio). +- */ +- uio->iter = iter; /* make a copy of the struct data */ +- uio->bv = bv; +- return (0); +- } +- + this_seg_start = this_seg_end + 1; + } + diff --git a/debian/patches/zfs/0011-Revert-zvol-Temporally-disable-blk-mq.patch b/debian/patches/zfs/0011-Revert-zvol-Temporally-disable-blk-mq.patch new file mode 100644 index 0000000..2671cda --- /dev/null +++ b/debian/patches/zfs/0011-Revert-zvol-Temporally-disable-blk-mq.patch @@ -0,0 +1,123 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Hutter +Date: Mon, 23 Oct 2023 14:39:59 -0700 +Subject: [PATCH] Revert "zvol: Temporally disable blk-mq" + +This reverts commit aefb6a2bd6c24597cde655e9ce69edd0a4c34357. + +aefb6a2bd temporally disabled blk-mq until we could fix a fix for + +Signed-off-by: Tony Hutter +Closes #15439 +(cherry picked from commit 05c4710e8958832afc2868102c9535a4f18115be) +Signed-off-by: Stoiko Ivanov +--- + man/man4/zfs.4 | 57 ++++++++++++++++++++++++++++ + module/os/linux/zfs/zvol_os.c | 12 ++++++ + tests/zfs-tests/include/tunables.cfg | 2 +- + 3 files changed, 70 insertions(+), 1 deletion(-) + +diff --git a/man/man4/zfs.4 b/man/man4/zfs.4 +index 71a3e67ee..cfadd79d8 100644 +--- a/man/man4/zfs.4 ++++ b/man/man4/zfs.4 +@@ -2317,6 +2317,63 @@ If + .Sy zvol_threads + to the number of CPUs present or 32 (whichever is greater). + . ++.It Sy zvol_blk_mq_threads Ns = Ns Sy 0 Pq uint ++The number of threads per zvol to use for queuing IO requests. ++This parameter will only appear if your kernel supports ++.Li blk-mq ++and is only read and assigned to a zvol at zvol load time. ++If ++.Sy 0 ++(the default) then internally set ++.Sy zvol_blk_mq_threads ++to the number of CPUs present. ++. ++.It Sy zvol_use_blk_mq Ns = Ns Sy 0 Ns | Ns 1 Pq uint ++Set to ++.Sy 1 ++to use the ++.Li blk-mq ++API for zvols. ++Set to ++.Sy 0 ++(the default) to use the legacy zvol APIs. ++This setting can give better or worse zvol performance depending on ++the workload. ++This parameter will only appear if your kernel supports ++.Li blk-mq ++and is only read and assigned to a zvol at zvol load time. ++. ++.It Sy zvol_blk_mq_blocks_per_thread Ns = Ns Sy 8 Pq uint ++If ++.Sy zvol_use_blk_mq ++is enabled, then process this number of ++.Sy volblocksize Ns -sized blocks per zvol thread. ++This tunable can be use to favor better performance for zvol reads (lower ++values) or writes (higher values). ++If set to ++.Sy 0 , ++then the zvol layer will process the maximum number of blocks ++per thread that it can. ++This parameter will only appear if your kernel supports ++.Li blk-mq ++and is only applied at each zvol's load time. ++. ++.It Sy zvol_blk_mq_queue_depth Ns = Ns Sy 0 Pq uint ++The queue_depth value for the zvol ++.Li blk-mq ++interface. ++This parameter will only appear if your kernel supports ++.Li blk-mq ++and is only applied at each zvol's load time. ++If ++.Sy 0 ++(the default) then use the kernel's default queue depth. ++Values are clamped to the kernel's ++.Dv BLKDEV_MIN_RQ ++and ++.Dv BLKDEV_MAX_RQ Ns / Ns Dv BLKDEV_DEFAULT_RQ ++limits. ++. + .It Sy zvol_volmode Ns = Ns Sy 1 Pq uint + Defines zvol block devices behaviour when + .Sy volmode Ns = Ns Sy default : +diff --git a/module/os/linux/zfs/zvol_os.c b/module/os/linux/zfs/zvol_os.c +index 76521c959..7a95b54bd 100644 +--- a/module/os/linux/zfs/zvol_os.c ++++ b/module/os/linux/zfs/zvol_os.c +@@ -1620,6 +1620,18 @@ MODULE_PARM_DESC(zvol_prefetch_bytes, "Prefetch N bytes at zvol start+end"); + module_param(zvol_volmode, uint, 0644); + MODULE_PARM_DESC(zvol_volmode, "Default volmode property value"); + ++#ifdef HAVE_BLK_MQ ++module_param(zvol_blk_mq_queue_depth, uint, 0644); ++MODULE_PARM_DESC(zvol_blk_mq_queue_depth, "Default blk-mq queue depth"); ++ ++module_param(zvol_use_blk_mq, uint, 0644); ++MODULE_PARM_DESC(zvol_use_blk_mq, "Use the blk-mq API for zvols"); ++ ++module_param(zvol_blk_mq_blocks_per_thread, uint, 0644); ++MODULE_PARM_DESC(zvol_blk_mq_blocks_per_thread, ++ "Process volblocksize blocks per thread"); ++#endif ++ + #ifndef HAVE_BLKDEV_GET_ERESTARTSYS + module_param(zvol_open_timeout_ms, uint, 0644); + MODULE_PARM_DESC(zvol_open_timeout_ms, "Timeout for ZVOL open retries"); +diff --git a/tests/zfs-tests/include/tunables.cfg b/tests/zfs-tests/include/tunables.cfg +index 8010a9451..80e7bcb3b 100644 +--- a/tests/zfs-tests/include/tunables.cfg ++++ b/tests/zfs-tests/include/tunables.cfg +@@ -89,7 +89,7 @@ VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip + VOL_INHIBIT_DEV UNSUPPORTED zvol_inhibit_dev + VOL_MODE vol.mode zvol_volmode + VOL_RECURSIVE vol.recursive UNSUPPORTED +-VOL_USE_BLK_MQ UNSUPPORTED UNSUPPORTED ++VOL_USE_BLK_MQ UNSUPPORTED zvol_use_blk_mq + XATTR_COMPAT xattr_compat zfs_xattr_compat + ZEVENT_LEN_MAX zevent.len_max zfs_zevent_len_max + ZEVENT_RETAIN_MAX zevent.retain_max zfs_zevent_retain_max diff --git a/linux b/linux index c2cbfe5..32c9cdb 160000 --- a/linux +++ b/linux @@ -1 +1 @@ -Subproject commit c2cbfe5f51227dfe6ef7be013f0d56a32c040faa +Subproject commit 32c9cdbe383c153af23cfa1df0a352b97ab3df7a diff --git a/zfs b/zfs index 86783d7..9578519 160000 --- a/zfs +++ b/zfs @@ -1 +1 @@ -Subproject commit 86783d7d92cf7a859464719a917fdff845b9a9e1 +Subproject commit 95785196f26e92d82cf4445654ba84e4a9671c57