Thanks to Miao Wang for get_transp() function

(cherry picked from debian-upstream[0]
commit 1f5433b15e4f7c823983bb90390c4b023f3d1948)

[0] https://salsa.debian.org/zfsonlinux-team/zfs
Signed-off-by: Stoiko Ivanov <[email protected]>
---
 .../zfsutils-linux/usr/lib/zfs-linux/trim     | 29 +++++++++++++++----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim 
b/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim
index 5b6305b0..91d00bb0 100755
--- a/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim
+++ b/debian/tree/zfsutils-linux/usr/lib/zfs-linux/trim
@@ -26,14 +26,33 @@ trim_if_not_already_trimming () {
        fi
 }
 
+get_transp () {
+        local dev="$1"
+        local par_dev="$dev"
+        local pd
+        while true; do
+                pd=$(lsblk -dnr -o PKNAME "$par_dev")
+                if [ "$?" -ne 0 ]; then
+                        return $?
+                fi
+                if [ -z "$pd" ]; then
+                        break
+                else
+                        par_dev="/dev/$pd"
+                fi
+        done
+        lsblk -dnr -o TRAN "$par_dev"
+}
+
 zpool_is_nvme_only () {
        zpool=$1
        # get a list of devices attached to the specified zpool
-       zpool list -vHPL "${zpool}" |
-               awk -F'\t' '$2 ~ /^\/dev\// {
-                       if($2 !~ /^\/dev\/nvme/)
-                               exit 1
-               }'
+        for x in $(zpool list -vHPL "${zpool}" |\
+            awk -F'\t' '{if($2 ~ /^\/dev\//) print $2}'); do
+                if [ "$(get_transp $x)" != "nvme" ]; then
+                        return 1
+                fi
+        done
 }
 
 # TRIM all healthy pools that are not already trimming as per their configs.
-- 
2.30.2



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to