From 7de24b887022d8944e4be0e7615e6365c37c9db5 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Mon, 30 Mar 2026 15:37:46 -0400 Subject: [PATCH] fix mq-deadline for hdds: 2 --- modules/hardware.nix | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/hardware.nix b/modules/hardware.nix index f0ba280..907729c 100644 --- a/modules/hardware.nix +++ b/modules/hardware.nix @@ -44,13 +44,20 @@ Type = "oneshot"; RemainAfterExit = true; }; + path = with pkgs; [ + coreutils + gawk + zfs + ]; script = '' - for dev in /sys/block/sd*; do - [ -f "$dev/queue/rotational" ] || continue - [ "$(cat "$dev/queue/rotational")" = "1" ] || continue - - # skip removable devices (USB sticks report removable=1) - [ "$(cat "$dev/removable")" = "0" ] || continue + # Only tune disks in the hdds pool — not all rotational disks. + # zpool status gives by-id device names; we resolve to /sys/block/. + zpool status hdds | awk '/^\t/ && $1 ~ /^(ata-|nvme-|scsi-)/ {print $1}' | while read -r id; do + link="/dev/disk/by-id/$id" + [ -L "$link" ] || continue + name=$(basename "$(readlink -f "$link")") + dev="/sys/block/$name" + [ -d "$dev" ] || continue echo mq-deadline > "$dev/queue/scheduler" echo 4096 > "$dev/queue/read_ahead_kb" @@ -63,7 +70,7 @@ echo 4096 > "$dev/queue/max_sectors_kb" 2>/dev/null || true - echo "Tuned $(basename "$dev"): mq-deadline, 4M readahead, 15s deadlines" + echo "Tuned $id -> $name: mq-deadline, 4M readahead, 15s deadlines" done ''; };