From 8420a0c8b5409e3b10c1f74bfc7a933a1a26e233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C4=83rcziem=20=E2=84=A2?= <118485377+spalencsar@users.noreply.github.com> Date: Fri, 3 Oct 2025 12:58:40 +0200 Subject: [PATCH] fix(performance): check if root_disk is valid and scheduler path exists before writing --- lib/performance.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/performance.sh b/lib/performance.sh index 3aef88f..747a878 100644 --- a/lib/performance.sh +++ b/lib/performance.sh @@ -45,12 +45,16 @@ EOF local disk_type=$(lsblk -d -o name,rota | awk 'NR>1 {if($2==0) print "ssd"; else print "hdd"; exit}') local root_disk=$(lsblk -no pkname $(findmnt -n -o source /) | head -n1) - if [[ "$disk_type" == "ssd" ]]; then - echo "mq-deadline" | sudo tee "/sys/block/$root_disk/queue/scheduler" > /dev/null - log_info "Optimized I/O scheduler for SSD" + if [[ -n "$root_disk" ]] && [[ -w "/sys/block/$root_disk/queue/scheduler" ]]; then + if [[ "$disk_type" == "ssd" ]]; then + echo "mq-deadline" | sudo tee "/sys/block/$root_disk/queue/scheduler" > /dev/null + log_info "Optimized I/O scheduler for SSD" + else + echo "bfq" | sudo tee "/sys/block/$root_disk/queue/scheduler" > /dev/null + log_info "Optimized I/O scheduler for HDD" + fi else - echo "bfq" | sudo tee "/sys/block/$root_disk/queue/scheduler" > /dev/null - log_info "Optimized I/O scheduler for HDD" + log_warning "Could not determine or access root disk scheduler. Skipping I/O optimization." fi # Create performance monitoring script