]> git.proxmox.com Git - zfsonlinux.git/commitdiff
update ZFS submodule to 2.1.11 and refresh patches
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 20 Apr 2023 07:26:09 +0000 (09:26 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 20 Apr 2023 07:30:22 +0000 (09:30 +0200)
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
13 files changed:
debian/patches/0006-dont-symlink-zed-scripts.patch
debian/patches/0007-Add-systemd-unit-for-importing-specific-pools.patch [new file with mode: 0644]
debian/patches/0007-Use-installed-python3.patch [deleted file]
debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch [deleted file]
debian/patches/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch [new file with mode: 0644]
debian/patches/0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch [deleted file]
debian/patches/0009-arcstat-Fix-integer-division-with-python3.patch [new file with mode: 0644]
debian/patches/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch [new file with mode: 0644]
debian/patches/0010-arcstat-Fix-integer-division-with-python3.patch [deleted file]
debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch [deleted file]
debian/patches/0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch [deleted file]
debian/patches/series
upstream

index 60fe55078250776e0be7d35dae3648f1d71fcfcf..33c066bdad0a0702d895d1c9850e2e8cbced08ec 100644 (file)
@@ -11,6 +11,7 @@ Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
 
 Description: track default symlinks, instead of symlinking
 Forwarded: no need
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
 ---
  cmd/zed/zed.d/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/patches/0007-Add-systemd-unit-for-importing-specific-pools.patch b/debian/patches/0007-Add-systemd-unit-for-importing-specific-pools.patch
new file mode 100644 (file)
index 0000000..3d36180
--- /dev/null
@@ -0,0 +1,67 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Stoiko Ivanov <s.ivanov@proxmox.com>
+Date: Tue, 15 Sep 2020 19:07:24 +0200
+Subject: [PATCH] Add systemd-unit for importing specific pools
+
+The unit can be instantiated with a specific poolname, which will get imported
+by scanning /dev/disk/by-id, irrespective of the existence and content of
+/etc/zfs/zpool.cache.
+
+the instance name is used unescaped (see systemd.unit(5)), since zpool names
+can contain characters which will be escaped by systemd.
+
+Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+---
+ etc/systemd/system/50-zfs.preset.in       |  1 +
+ etc/systemd/system/Makefile.am            |  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
+index e4056a92c..030611419 100644
+--- a/etc/systemd/system/50-zfs.preset.in
++++ b/etc/systemd/system/50-zfs.preset.in
+@@ -1,6 +1,7 @@
+ # ZFS is enabled by default
+ enable zfs-import-cache.service
+ disable zfs-import-scan.service
++enable zfs-import@.service
+ 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
+--- /dev/null
++++ b/etc/systemd/system/zfs-import@.service.in
+@@ -0,0 +1,16 @@
++[Unit]
++Description=Import ZFS pool %i
++Documentation=man:zpool(8)
++DefaultDependencies=no
++After=systemd-udev-settle.service
++After=cryptsetup.target
++After=multipathd.target
++Before=zfs-import.target
++
++[Service]
++Type=oneshot
++RemainAfterExit=yes
++ExecStart=@sbindir@/zpool import -N -d /dev/disk/by-id -o cachefile=none %I
++
++[Install]
++WantedBy=zfs-import.target
diff --git a/debian/patches/0007-Use-installed-python3.patch b/debian/patches/0007-Use-installed-python3.patch
deleted file mode 100644 (file)
index 69e5dd7..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Antonio Russo <antonio.e.russo@gmail.com>
-Date: Tue, 5 May 2020 22:15:16 -0600
-Subject: [PATCH] Use installed python3
-
----
- .../functional/cli_root/zfs_program/zfs_program_json.ksh    | 6 +++---
- .../tests/functional/rsend/send_encrypted_files.ksh         | 2 +-
- .../tests/functional/rsend/send_realloc_dnode_size.ksh      | 2 +-
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
-index 3788543b0..c7ee4ae9a 100755
---- a/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
-+++ b/tests/zfs-tests/tests/functional/cli_root/zfs_program/zfs_program_json.ksh
-@@ -100,10 +100,10 @@ typeset -a pos_cmds_out=(
- # the same as the input and the --sort-keys option was added.  Detect when
- # --sort-keys is supported and apply the option to ensure the expected order.
- #
--if python -m json.tool --sort-keys <<< "{}"; then
--      JSON_TOOL_CMD="python -m json.tool --sort-keys"
-+if python3 -m json.tool --sort-keys <<< "{}"; then
-+      JSON_TOOL_CMD="python3 -m json.tool --sort-keys"
- else
--      JSON_TOOL_CMD="python -m json.tool"
-+      JSON_TOOL_CMD="python3 -m json.tool"
- fi
- typeset -i cnt=0
-diff --git a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh b/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
-index 370f5382e..661fbe85d 100755
---- a/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
-+++ b/tests/zfs-tests/tests/functional/rsend/send_encrypted_files.ksh
-@@ -87,7 +87,7 @@ log_must xattrtest -f 10 -x 3 -s 32768 -r -k -p /$TESTPOOL/$TESTFS2/xattrsadir
- # OpenZFS issue #7432
- log_must zfs set compression=on xattr=sa $TESTPOOL/$TESTFS2
- log_must touch /$TESTPOOL/$TESTFS2/attrs
--log_must eval "python -c 'print \"a\" * 4096' | \
-+log_must eval "python3 -c 'print \"a\" * 4096' | \
-       set_xattr_stdin bigval /$TESTPOOL/$TESTFS2/attrs"
- log_must zfs set compression=off xattr=on $TESTPOOL/$TESTFS2
-diff --git a/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh b/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
-index 551ed15db..bd30488ea 100755
---- a/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
-+++ b/tests/zfs-tests/tests/functional/rsend/send_realloc_dnode_size.ksh
-@@ -88,7 +88,7 @@ log_must zfs snapshot $POOL/fs@c
- # 4. Create an empty file and add xattrs to it to exercise reclaiming a
- #    dnode that requires more than 1 slot for its bonus buffer (Zol #7433)
- log_must zfs set compression=on xattr=sa $POOL/fs
--log_must eval "python -c 'print \"a\" * 512' |
-+log_must eval "python3 -c 'print \"a\" * 512' |
-     set_xattr_stdin bigval /$POOL/fs/attrs"
- log_must zfs snapshot $POOL/fs@d
diff --git a/debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch b/debian/patches/0008-Add-systemd-unit-for-importing-specific-pools.patch
deleted file mode 100644 (file)
index e724b2f..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Stoiko Ivanov <s.ivanov@proxmox.com>
-Date: Tue, 15 Sep 2020 19:07:24 +0200
-Subject: [PATCH] Add systemd-unit for importing specific pools
-
-The unit can be instantiated with a specific poolname, which will get imported
-by scanning /dev/disk/by-id, irrespective of the existence and content of
-/etc/zfs/zpool.cache.
-
-the instance name is used unescaped (see systemd.unit(5)), since zpool names
-can contain characters which will be escaped by systemd.
-
-Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
----
- etc/systemd/system/50-zfs.preset.in       |  1 +
- etc/systemd/system/Makefile.am            |  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
-index e4056a92c..030611419 100644
---- a/etc/systemd/system/50-zfs.preset.in
-+++ b/etc/systemd/system/50-zfs.preset.in
-@@ -1,6 +1,7 @@
- # ZFS is enabled by default
- enable zfs-import-cache.service
- disable zfs-import-scan.service
-+enable zfs-import@.service
- 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
---- /dev/null
-+++ b/etc/systemd/system/zfs-import@.service.in
-@@ -0,0 +1,16 @@
-+[Unit]
-+Description=Import ZFS pool %i
-+Documentation=man:zpool(8)
-+DefaultDependencies=no
-+After=systemd-udev-settle.service
-+After=cryptsetup.target
-+After=multipathd.target
-+Before=zfs-import.target
-+
-+[Service]
-+Type=oneshot
-+RemainAfterExit=yes
-+ExecStart=@sbindir@/zpool import -N -d /dev/disk/by-id -o cachefile=none %I
-+
-+[Install]
-+WantedBy=zfs-import.target
diff --git a/debian/patches/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch b/debian/patches/0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
new file mode 100644 (file)
index 0000000..03135ed
--- /dev/null
@@ -0,0 +1,52 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Stoiko Ivanov <s.ivanov@proxmox.com>
+Date: Thu, 4 Feb 2021 19:01:12 +0100
+Subject: [PATCH] Patch: move manpage arcstat(1) to arcstat(8).
+
+Originally-By: Mo Zhou <cdluminate@gmail.com>
+Originally-By: Antonio Russo <aerusso@aerusso.net>
+
+Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+---
+ man/Makefile.am                        | 2 +-
+ man/{man1/arcstat.1 => man8/arcstat.8} | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+ rename man/{man1/arcstat.1 => man8/arcstat.8} (99%)
+
+diff --git a/man/Makefile.am b/man/Makefile.am
+index 64650c2b9..95a66a62f 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 \
+       \
+@@ -22,6 +21,7 @@ dist_man_MANS = \
+       man7/zpoolconcepts.7 \
+       man7/zpoolprops.7 \
+       \
++      man8/arcstat.8 \
+       man8/fsck.zfs.8 \
+       man8/mount.zfs.8 \
+       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
+--- 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
+-.Dt ARCSTAT 1
++.Dt ARCSTAT 8
+ .Os
+ .
+ .Sh NAME
diff --git a/debian/patches/0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch b/debian/patches/0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
deleted file mode 100644 (file)
index 16ab943..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Stoiko Ivanov <s.ivanov@proxmox.com>
-Date: Thu, 4 Feb 2021 19:01:12 +0100
-Subject: [PATCH] Patch: move manpage arcstat(1) to arcstat(8).
-
-Originally-By: Mo Zhou <cdluminate@gmail.com>
-Originally-By: Antonio Russo <aerusso@aerusso.net>
-
-Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
----
- man/Makefile.am                        | 2 +-
- man/{man1/arcstat.1 => man8/arcstat.8} | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
- rename man/{man1/arcstat.1 => man8/arcstat.8} (99%)
-
-diff --git a/man/Makefile.am b/man/Makefile.am
-index 64650c2b9..95a66a62f 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 \
-       \
-@@ -22,6 +21,7 @@ dist_man_MANS = \
-       man7/zpoolconcepts.7 \
-       man7/zpoolprops.7 \
-       \
-+      man8/arcstat.8 \
-       man8/fsck.zfs.8 \
-       man8/mount.zfs.8 \
-       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
---- 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
--.Dt ARCSTAT 1
-+.Dt ARCSTAT 8
- .Os
- .
- .Sh NAME
diff --git a/debian/patches/0009-arcstat-Fix-integer-division-with-python3.patch b/debian/patches/0009-arcstat-Fix-integer-division-with-python3.patch
new file mode 100644 (file)
index 0000000..863c02b
--- /dev/null
@@ -0,0 +1,134 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Valmiky Arquissandas <kayvlim@gmail.com>
+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 <behlendorf1@llnl.gov>
+Reviewed-by: John Kennedy <john.kennedy@delphix.com>
+Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
+Signed-off-by: Valmiky Arquissandas <foss@kayvlim.com>
+Closes #12603
+(cherry picked from commit 2d02bba23d83ae8fede8d281edc255f01ccd28e9)
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+---
+ 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/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch b/debian/patches/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
new file mode 100644 (file)
index 0000000..61f03b5
--- /dev/null
@@ -0,0 +1,113 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Thomas Lamprecht <t.lamprecht@proxmox.com>
+Date: Wed, 10 Nov 2021 09:29:47 +0100
+Subject: [PATCH] arc stat/summary: guard access to l2arc MFU/MRU stats
+
+commit 085321621e79a75bea41c2b6511da6ebfbf2ba0a added printing MFU
+and MRU stats for 2.1 user space tools, but those keys are not
+available in the 2.0 module. That means it may break the arcstat and
+arc_summary tools after upgrade to 2.1 (user space), before a reboot
+to the new 2.1 ZFS kernel-module happened, due to python raising a
+KeyError on the dict access then.
+
+Move those two keys to a .get accessor with `0` as fallback, as it
+should be better to show some possible wrong data for new stat-keys
+than throwing an exception.
+
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+
+also move l2_mfu_asize  l2_mru_asize l2_prefetch_asize
+l2_bufc_data_asize l2_bufc_metadata_asize to .get accessor
+(these are only present with a cache device in the pool)
+Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+---
+ cmd/arc_summary/arc_summary3 | 28 ++++++++++++++--------------
+ cmd/arcstat/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):
+     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:',
+-           f_perc(arc_stats['evict_l2_eligible_mfu'],
++           f_perc(arc_stats.get('evict_l2_eligible_mfu', 0), # 2.0 module compat
+            arc_stats['evict_l2_eligible']),
+-           f_bytes(arc_stats['evict_l2_eligible_mfu']))
++           f_bytes(arc_stats.get('evict_l2_eligible_mfu', 0)))
+     prt_i2('L2 eligible MRU evictions:',
+-           f_perc(arc_stats['evict_l2_eligible_mru'],
++           f_perc(arc_stats.get('evict_l2_eligible_mru', 0), # 2.0 module compat
+            arc_stats['evict_l2_eligible']),
+-           f_bytes(arc_stats['evict_l2_eligible_mru']))
++           f_bytes(arc_stats.get('evict_l2_eligible_mru', 0)))
+     prt_i1('L2 ineligible evictions:',
+            f_bytes(arc_stats['evict_l2_ineligible']))
+     print()
+@@ -757,20 +757,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:',
+-           f_perc(arc_stats['l2_mfu_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_mfu_asize']))
++           f_perc(arc_stats.get('l2_mfu_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_mfu_asize', 0))) # 2.0 module compat
+     prt_i2('MRU allocated size:',
+-           f_perc(arc_stats['l2_mru_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_mru_asize']))
++           f_perc(arc_stats.get('l2_mru_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_mru_asize', 0))) # 2.0 module compat
+     prt_i2('Prefetch allocated size:',
+-           f_perc(arc_stats['l2_prefetch_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_prefetch_asize']))
++           f_perc(arc_stats.get('l2_prefetch_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_prefetch_asize',0))) # 2.0 module compat
+     prt_i2('Data (buffer content) allocated size:',
+-           f_perc(arc_stats['l2_bufc_data_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_bufc_data_asize']))
++           f_perc(arc_stats.get('l2_bufc_data_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_bufc_data_asize', 0))) # 2.0 module compat
+     prt_i2('Metadata (buffer content) allocated size:',
+-           f_perc(arc_stats['l2_bufc_metadata_asize'], arc_stats['l2_asize']),
+-           f_bytes(arc_stats['l2_bufc_metadata_asize']))
++           f_perc(arc_stats.get('l2_bufc_metadata_asize', 0), arc_stats['l2_asize']),
++           f_bytes(arc_stats.get('l2_bufc_metadata_asize', 0))) # 2.0 module compat
+     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():
+     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["el2mfu"] = d.get("evict_l2_eligible_mfu", 0) // sint
++    v["el2mru"] = d.get("evict_l2_eligible_mru", 0) // sint
+     v["el2inel"] = d["evict_l2_ineligible"] // sint
+     v["mtxmis"] = d["mutex_miss"] // sint
+@@ -498,11 +498,11 @@ def calculate():
+         v["l2size"] = cur["l2_size"]
+         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"] = cur.get("l2_prefetch_asize", 0)
++        v["l2mfu"] = cur.get("l2_mfu_asize", 0)
++        v["l2mru"] = cur.get("l2_mru_asize", 0)
++        v["l2data"] = cur.get("l2_bufc_data_asize", 0)
++        v["l2meta"] = cur.get("l2_bufc_metadata_asize", 0)
+         v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"]
+         v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"]
+         v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"]
diff --git a/debian/patches/0010-arcstat-Fix-integer-division-with-python3.patch b/debian/patches/0010-arcstat-Fix-integer-division-with-python3.patch
deleted file mode 100644 (file)
index 33633e5..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Valmiky Arquissandas <kayvlim@gmail.com>
-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 <behlendorf1@llnl.gov>
-Reviewed-by: John Kennedy <john.kennedy@delphix.com>
-Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
-Signed-off-by: Valmiky Arquissandas <foss@kayvlim.com>
-Closes #12603
-(cherry picked from commit 2d02bba23d83ae8fede8d281edc255f01ccd28e9)
-Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
----
- 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 425e52d1f..010f69ec0 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/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch b/debian/patches/0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
deleted file mode 100644 (file)
index 020186c..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Thomas Lamprecht <t.lamprecht@proxmox.com>
-Date: Wed, 10 Nov 2021 09:29:47 +0100
-Subject: [PATCH] arc stat/summary: guard access to l2arc MFU/MRU stats
-
-commit 085321621e79a75bea41c2b6511da6ebfbf2ba0a added printing MFU
-and MRU stats for 2.1 user space tools, but those keys are not
-available in the 2.0 module. That means it may break the arcstat and
-arc_summary tools after upgrade to 2.1 (user space), before a reboot
-to the new 2.1 ZFS kernel-module happened, due to python raising a
-KeyError on the dict access then.
-
-Move those two keys to a .get accessor with `0` as fallback, as it
-should be better to show some possible wrong data for new stat-keys
-than throwing an exception.
-
-Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
-
-also move l2_mfu_asize  l2_mru_asize l2_prefetch_asize
-l2_bufc_data_asize l2_bufc_metadata_asize to .get accessor
-(these are only present with a cache device in the pool)
-Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
----
- cmd/arc_summary/arc_summary3 | 28 ++++++++++++++--------------
- cmd/arcstat/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 301c485b3..ac46f5843 100755
---- a/cmd/arc_summary/arc_summary3
-+++ b/cmd/arc_summary/arc_summary3
-@@ -617,13 +617,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:',
--           f_perc(arc_stats['evict_l2_eligible_mfu'],
-+           f_perc(arc_stats.get('evict_l2_eligible_mfu', 0), # 2.0 module compat
-            arc_stats['evict_l2_eligible']),
--           f_bytes(arc_stats['evict_l2_eligible_mfu']))
-+           f_bytes(arc_stats.get('evict_l2_eligible_mfu', 0)))
-     prt_i2('L2 eligible MRU evictions:',
--           f_perc(arc_stats['evict_l2_eligible_mru'],
-+           f_perc(arc_stats.get('evict_l2_eligible_mru', 0), # 2.0 module compat
-            arc_stats['evict_l2_eligible']),
--           f_bytes(arc_stats['evict_l2_eligible_mru']))
-+           f_bytes(arc_stats.get('evict_l2_eligible_mru', 0)))
-     prt_i1('L2 ineligible evictions:',
-            f_bytes(arc_stats['evict_l2_ineligible']))
-     print()
-@@ -765,20 +765,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:',
--           f_perc(arc_stats['l2_mfu_asize'], arc_stats['l2_asize']),
--           f_bytes(arc_stats['l2_mfu_asize']))
-+           f_perc(arc_stats.get('l2_mfu_asize', 0), arc_stats['l2_asize']),
-+           f_bytes(arc_stats.get('l2_mfu_asize', 0))) # 2.0 module compat
-     prt_i2('MRU allocated size:',
--           f_perc(arc_stats['l2_mru_asize'], arc_stats['l2_asize']),
--           f_bytes(arc_stats['l2_mru_asize']))
-+           f_perc(arc_stats.get('l2_mru_asize', 0), arc_stats['l2_asize']),
-+           f_bytes(arc_stats.get('l2_mru_asize', 0))) # 2.0 module compat
-     prt_i2('Prefetch allocated size:',
--           f_perc(arc_stats['l2_prefetch_asize'], arc_stats['l2_asize']),
--           f_bytes(arc_stats['l2_prefetch_asize']))
-+           f_perc(arc_stats.get('l2_prefetch_asize', 0), arc_stats['l2_asize']),
-+           f_bytes(arc_stats.get('l2_prefetch_asize',0))) # 2.0 module compat
-     prt_i2('Data (buffer content) allocated size:',
--           f_perc(arc_stats['l2_bufc_data_asize'], arc_stats['l2_asize']),
--           f_bytes(arc_stats['l2_bufc_data_asize']))
-+           f_perc(arc_stats.get('l2_bufc_data_asize', 0), arc_stats['l2_asize']),
-+           f_bytes(arc_stats.get('l2_bufc_data_asize', 0))) # 2.0 module compat
-     prt_i2('Metadata (buffer content) allocated size:',
--           f_perc(arc_stats['l2_bufc_metadata_asize'], arc_stats['l2_asize']),
--           f_bytes(arc_stats['l2_bufc_metadata_asize']))
-+           f_perc(arc_stats.get('l2_bufc_metadata_asize', 0), arc_stats['l2_asize']),
-+           f_bytes(arc_stats.get('l2_bufc_metadata_asize', 0))) # 2.0 module compat
-     print()
-     prt_1('L2ARC breakdown:', f_hits(l2_access_total))
-diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
-index 010f69ec0..50e5a7150 100755
---- a/cmd/arcstat/arcstat.in
-+++ b/cmd/arcstat/arcstat.in
-@@ -482,8 +482,8 @@ def calculate():
-     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["el2mfu"] = d.get("evict_l2_eligible_mfu", 0) // sint
-+    v["el2mru"] = d.get("evict_l2_eligible_mru", 0) // sint
-     v["el2inel"] = d["evict_l2_ineligible"] // sint
-     v["mtxmis"] = d["mutex_miss"] // sint
-@@ -498,11 +498,11 @@ def calculate():
-         v["l2size"] = cur["l2_size"]
-         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"] = cur.get("l2_prefetch_asize", 0)
-+        v["l2mfu"] = cur.get("l2_mfu_asize", 0)
-+        v["l2mru"] = cur.get("l2_mru_asize", 0)
-+        v["l2data"] = cur.get("l2_bufc_data_asize", 0)
-+        v["l2meta"] = cur.get("l2_bufc_metadata_asize", 0)
-         v["l2pref%"] = 100 * v["l2pref"] // v["l2asize"]
-         v["l2mfu%"] = 100 * v["l2mfu"] // v["l2asize"]
-         v["l2mru%"] = 100 * v["l2mru"] // v["l2asize"]
diff --git a/debian/patches/0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch b/debian/patches/0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch
deleted file mode 100644 (file)
index fde8569..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Rich Ercolani <214141+rincebrain@users.noreply.github.com>
-Date: Mon, 27 Mar 2023 14:29:19 -0400
-Subject: [PATCH] linux 6.3 compat: add another bdev_io_acct case
-
-Linux 6.3+, and backports from it (6.2.8+), changed the
-signatures on bdev_io_{start,end}_acct.  Add a case for it.
-
-Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
-Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
-Closes #14658
-Closes #14668
-(cherry picked from commit 59f187563937aa0d6c74a9854eb1cab6632866f9)
-Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
----
- config/kernel-generic_io_acct.m4              | 98 ++++++++++++-------
- include/os/linux/kernel/linux/blkdev_compat.h | 10 +-
- 2 files changed, 69 insertions(+), 39 deletions(-)
-
-diff --git a/config/kernel-generic_io_acct.m4 b/config/kernel-generic_io_acct.m4
-index a8a448c6f..a6a109004 100644
---- a/config/kernel-generic_io_acct.m4
-+++ b/config/kernel-generic_io_acct.m4
-@@ -2,7 +2,20 @@ dnl #
- dnl # Check for generic io accounting interface.
- dnl #
- AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [
--      ZFS_LINUX_TEST_SRC([bdev_io_acct], [
-+      ZFS_LINUX_TEST_SRC([bdev_io_acct_63], [
-+              #include <linux/blkdev.h>
-+      ], [
-+              struct block_device *bdev = NULL;
-+              struct bio *bio = NULL;
-+              unsigned long passed_time = 0;
-+              unsigned long start_time;
-+
-+              start_time = bdev_start_io_acct(bdev, bio_op(bio),
-+                  passed_time);
-+              bdev_end_io_acct(bdev, bio_op(bio), bio_sectors(bio), start_time);
-+      ])
-+
-+      ZFS_LINUX_TEST_SRC([bdev_io_acct_old], [
-               #include <linux/blkdev.h>
-       ], [
-               struct block_device *bdev = NULL;
-@@ -63,74 +76,85 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_GENERIC_IO_ACCT], [
- AC_DEFUN([ZFS_AC_KERNEL_GENERIC_IO_ACCT], [
-       dnl #
--      dnl # 5.19 API,
-+      dnl # Linux 6.3, and then backports thereof, changed
-+      dnl # the signatures on bdev_start_io_acct/bdev_end_io_acct
-       dnl #
--      dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by
--      dnl # bdev_start_io_acct() and bdev_end_io_acct().
--      dnl #
--      AC_MSG_CHECKING([whether generic bdev_*_io_acct() are available])
--      ZFS_LINUX_TEST_RESULT([bdev_io_acct], [
-+      AC_MSG_CHECKING([whether 6.3+ bdev_*_io_acct() are available])
-+      ZFS_LINUX_TEST_RESULT([bdev_io_acct_63], [
-               AC_MSG_RESULT(yes)
--              AC_DEFINE(HAVE_BDEV_IO_ACCT, 1, [bdev_*_io_acct() available])
-+              AC_DEFINE(HAVE_BDEV_IO_ACCT_63, 1, [bdev_*_io_acct() available])
-       ], [
-               AC_MSG_RESULT(no)
-               dnl #
--              dnl # 5.12 API,
-+              dnl # 5.19 API,
-               dnl #
--              dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported
--              dnl # so use disk_start_io_acct() and disk_end_io_acct() instead
-+              dnl # disk_start_io_acct() and disk_end_io_acct() have been replaced by
-+              dnl # bdev_start_io_acct() and bdev_end_io_acct().
-               dnl #
--              AC_MSG_CHECKING([whether generic disk_*_io_acct() are available])
--              ZFS_LINUX_TEST_RESULT([disk_io_acct], [
-+              AC_MSG_CHECKING([whether pre-6.3 bdev_*_io_acct() are available])
-+              ZFS_LINUX_TEST_RESULT([bdev_io_acct_old], [
-                       AC_MSG_RESULT(yes)
--                      AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available])
-+                      AC_DEFINE(HAVE_BDEV_IO_ACCT_OLD, 1, [bdev_*_io_acct() available])
-               ], [
-                       AC_MSG_RESULT(no)
--
-                       dnl #
--                      dnl # 5.7 API,
-+                      dnl # 5.12 API,
-                       dnl #
--                      dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers.
-+                      dnl # bio_start_io_acct() and bio_end_io_acct() became GPL-exported
-+                      dnl # so use disk_start_io_acct() and disk_end_io_acct() instead
-                       dnl #
--                      AC_MSG_CHECKING([whether generic bio_*_io_acct() are available])
--                      ZFS_LINUX_TEST_RESULT([bio_io_acct], [
-+                      AC_MSG_CHECKING([whether generic disk_*_io_acct() are available])
-+                      ZFS_LINUX_TEST_RESULT([disk_io_acct], [
-                               AC_MSG_RESULT(yes)
--                              AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available])
-+                              AC_DEFINE(HAVE_DISK_IO_ACCT, 1, [disk_*_io_acct() available])
-                       ], [
-                               AC_MSG_RESULT(no)
-                               dnl #
--                              dnl # 4.14 API,
-+                              dnl # 5.7 API,
-                               dnl #
--                              dnl # generic_start_io_acct/generic_end_io_acct now require
--                              dnl # request_queue to be provided. No functional changes,
--                              dnl # but preparation for inflight accounting.
-+                              dnl # Added bio_start_io_acct() and bio_end_io_acct() helpers.
-                               dnl #
--                              AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args])
--                              ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args],
--                                  [generic_start_io_acct], [block/bio.c], [
-+                              AC_MSG_CHECKING([whether generic bio_*_io_acct() are available])
-+                              ZFS_LINUX_TEST_RESULT([bio_io_acct], [
-                                       AC_MSG_RESULT(yes)
--                                      AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1,
--                                          [generic_*_io_acct() 4 arg available])
-+                                      AC_DEFINE(HAVE_BIO_IO_ACCT, 1, [bio_*_io_acct() available])
-                               ], [
-                                       AC_MSG_RESULT(no)
-                                       dnl #
--                                      dnl # 3.19 API addition
-+                                      dnl # 4.14 API,
-                                       dnl #
--                                      dnl # torvalds/linux@394ffa50 allows us to increment
--                                      dnl # iostat counters without generic_make_request().
-+                                      dnl # generic_start_io_acct/generic_end_io_acct now require
-+                                      dnl # request_queue to be provided. No functional changes,
-+                                      dnl # but preparation for inflight accounting.
-                                       dnl #
--                                      AC_MSG_CHECKING(
--                                          [whether generic_*_io_acct wants 3 args])
--                                      ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args],
-+                                      AC_MSG_CHECKING([whether generic_*_io_acct wants 4 args])
-+                                      ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_4args],
-                                           [generic_start_io_acct], [block/bio.c], [
-                                               AC_MSG_RESULT(yes)
--                                              AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1,
--                                                  [generic_*_io_acct() 3 arg available])
-+                                              AC_DEFINE(HAVE_GENERIC_IO_ACCT_4ARG, 1,
-+                                                  [generic_*_io_acct() 4 arg available])
-                                       ], [
-                                               AC_MSG_RESULT(no)
-+
-+                                              dnl #
-+                                              dnl # 3.19 API addition
-+                                              dnl #
-+                                              dnl # torvalds/linux@394ffa50 allows us to increment
-+                                              dnl # iostat counters without generic_make_request().
-+                                              dnl #
-+                                              AC_MSG_CHECKING(
-+                                                  [whether generic_*_io_acct wants 3 args])
-+                                              ZFS_LINUX_TEST_RESULT_SYMBOL([generic_acct_3args],
-+                                                  [generic_start_io_acct], [block/bio.c], [
-+                                                      AC_MSG_RESULT(yes)
-+                                                      AC_DEFINE(HAVE_GENERIC_IO_ACCT_3ARG, 1,
-+                                                          [generic_*_io_acct() 3 arg available])
-+                                              ], [
-+                                                      AC_MSG_RESULT(no)
-+                                              ])
-                                       ])
-                               ])
-                       ])
-diff --git a/include/os/linux/kernel/linux/blkdev_compat.h b/include/os/linux/kernel/linux/blkdev_compat.h
-index bac5c2279..3a3f264d7 100644
---- a/include/os/linux/kernel/linux/blkdev_compat.h
-+++ b/include/os/linux/kernel/linux/blkdev_compat.h
-@@ -555,7 +555,10 @@ blk_generic_start_io_acct(struct request_queue *q __attribute__((unused)),
-     struct gendisk *disk __attribute__((unused)),
-     int rw __attribute__((unused)), struct bio *bio)
- {
--#if defined(HAVE_BDEV_IO_ACCT)
-+#if defined(HAVE_BDEV_IO_ACCT_63)
-+      return (bdev_start_io_acct(bio->bi_bdev, bio_op(bio),
-+          jiffies));
-+#elif defined(HAVE_BDEV_IO_ACCT_OLD)
-       return (bdev_start_io_acct(bio->bi_bdev, bio_sectors(bio),
-           bio_op(bio), jiffies));
- #elif defined(HAVE_DISK_IO_ACCT)
-@@ -581,7 +584,10 @@ blk_generic_end_io_acct(struct request_queue *q __attribute__((unused)),
-     struct gendisk *disk __attribute__((unused)),
-     int rw __attribute__((unused)), struct bio *bio, unsigned long start_time)
- {
--#if defined(HAVE_BDEV_IO_ACCT)
-+#if defined(HAVE_BDEV_IO_ACCT_63)
-+      bdev_end_io_acct(bio->bi_bdev, bio_op(bio), bio_sectors(bio),
-+          start_time);
-+#elif defined(HAVE_BDEV_IO_ACCT_OLD)
-       bdev_end_io_acct(bio->bi_bdev, bio_op(bio), start_time);
- #elif defined(HAVE_DISK_IO_ACCT)
-       disk_end_io_acct(disk, bio_op(bio), start_time);
index aed00d727a79798c1ce657d8173df639c1b06a89..6bd127570382623533b6b4955008678f7b7dc22b 100644 (file)
@@ -4,9 +4,7 @@
 0004-import-with-d-dev-disk-by-id-in-scan-service.patch
 0005-Enable-zed-emails.patch
 0006-dont-symlink-zed-scripts.patch
-0007-Use-installed-python3.patch
-0008-Add-systemd-unit-for-importing-specific-pools.patch
-0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
-0010-arcstat-Fix-integer-division-with-python3.patch
-0011-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
-0012-linux-6.3-compat-add-another-bdev_io_acct-case.patch
+0007-Add-systemd-unit-for-importing-specific-pools.patch
+0008-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
+0009-arcstat-Fix-integer-division-with-python3.patch
+0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
index 92e0d9d183ce6752cd52f7277c8321d81df9ffee..e25f9131d679692704c11dc0c1df6d4585b70c35 160000 (submodule)
--- a/upstream
+++ b/upstream
@@ -1 +1 @@
-Subproject commit 92e0d9d183ce6752cd52f7277c8321d81df9ffee
+Subproject commit e25f9131d679692704c11dc0c1df6d4585b70c35