Round 316: Smartctl ext, Hdparm ext, Sdparm ext, Nvme ext, Fio ext (20 commands)

ober

2a70268d86fadfa3cf961a5ac63992b6fc8f0f6f

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index cf7893f..a3a227f 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 316 — Smartctl ext, Hdparm ext, Sdparm ext, Nvme ext, Fio ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `smartctl-attributes` | :orange_circle: | Show SMART attributes |
+| `smartctl-capabilities` | :orange_circle: | Show SMART capabilities |
+| `smartctl-error-log` | :orange_circle: | Show SMART error log |
+| `smartctl-selftest` | :orange_circle: | Run SMART self-test |
+| `hdparm-settings` | :orange_circle: | Show drive settings |
+| `hdparm-security` | :orange_circle: | Show drive security |
+| `hdparm-acoustic` | :orange_circle: | Acoustic management |
+| `hdparm-readonly` | :orange_circle: | Toggle read-only mode |
+| `sdparm-inquiry` | :orange_circle: | SCSI device inquiry |
+| `sdparm-list` | :orange_circle: | List SCSI parameters |
+| `sdparm-set` | :orange_circle: | Set SCSI parameter |
+| `sdparm-get` | :orange_circle: | Get SCSI parameter |
+| `nvme-list` | :orange_circle: | List NVMe devices |
+| `nvme-smart` | :orange_circle: | Show NVMe SMART log |
+| `nvme-identify` | :orange_circle: | Identify NVMe device |
+| `nvme-format` | :orange_circle: | Format NVMe device |
+| `fio-run` | :orange_circle: | Run fio benchmark |
+| `fio-parse` | :orange_circle: | Parse fio output |
+| `fio-generate` | :orange_circle: | Generate fio job file |
+| `fio-compare` | :orange_circle: | Compare fio results |
+
 ### Round 315 — Sysstat ext, Iostat ext, Sar ext, Pidstat ext, Mpstat ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 1391e47..a0574dd 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -23769,4 +23769,64 @@
 
 (def (cmd-mpstat-per-cpu app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Mpstat: showing per-CPU statistics")))
\ No newline at end of file
+    (echo-message! echo "Mpstat: showing per-CPU statistics")))
+
+;;; Round 316 — Sdparm ext, Nvme ext, Fio ext (batch 2)
+
+(def (cmd-sdparm-set app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Parameter=value device: "
+      (lambda (spec)
+        (echo-message! echo (str "Sdparm: setting " spec))))))
+
+(def (cmd-sdparm-get app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Parameter device: "
+      (lambda (spec)
+        (echo-message! echo (str "Sdparm: getting " spec))))))
+
+(def (cmd-nvme-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "NVMe: listing devices")))
+
+(def (cmd-nvme-smart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "NVMe: SMART log for " dev))))))
+
+(def (cmd-nvme-identify app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "NVMe: identifying " dev))))))
+
+(def (cmd-nvme-format app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "NVMe: formatting " dev))))))
+
+(def (cmd-fio-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Job file: "
+      (lambda (job)
+        (echo-message! echo (str "Fio: running " job))))))
+
+(def (cmd-fio-parse app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Output file: "
+      (lambda (file)
+        (echo-message! echo (str "Fio: parsing " file))))))
+
+(def (cmd-fio-generate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Workload type: "
+      (lambda (wl)
+        (echo-message! echo (str "Fio: generating job for " wl))))))
+
+(def (cmd-fio-compare app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Result files: "
+      (lambda (files)
+        (echo-message! echo (str "Fio: comparing " files))))))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index dc19895..49d855e 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -24480,3 +24480,63 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Sar: showing memory usage")))
 
+;;; Round 316 — Smartctl ext, Hdparm ext, Sdparm ext, Nvme ext, Fio ext (batch 1)
+
+(def (cmd-smartctl-attributes app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "SMART: showing attributes for " dev))))))
+
+(def (cmd-smartctl-capabilities app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "SMART: showing capabilities for " dev))))))
+
+(def (cmd-smartctl-error-log app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "SMART: showing error log for " dev))))))
+
+(def (cmd-smartctl-selftest app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "SMART: running self-test on " dev))))))
+
+(def (cmd-hdparm-settings app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Hdparm: showing settings for " dev))))))
+
+(def (cmd-hdparm-security app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Hdparm: showing security for " dev))))))
+
+(def (cmd-hdparm-acoustic app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Hdparm: acoustic management for " dev))))))
+
+(def (cmd-hdparm-readonly app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Hdparm: toggling read-only for " dev))))))
+
+(def (cmd-sdparm-inquiry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Device: "
+      (lambda (dev)
+        (echo-message! echo (str "Sdparm: inquiry for " dev))))))
+
+(def (cmd-sdparm-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Sdparm: listing parameters")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 0260651..11343dd 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8053,4 +8053,25 @@
   (register-command! 'tapestat-extended cmd-tapestat-extended)
   (register-command! 'mpstat-show cmd-mpstat-show)
   (register-command! 'mpstat-per-cpu cmd-mpstat-per-cpu)
+  ;; Round 316
+  (register-command! 'smartctl-attributes cmd-smartctl-attributes)
+  (register-command! 'smartctl-capabilities cmd-smartctl-capabilities)
+  (register-command! 'smartctl-error-log cmd-smartctl-error-log)
+  (register-command! 'smartctl-selftest cmd-smartctl-selftest)
+  (register-command! 'hdparm-settings cmd-hdparm-settings)
+  (register-command! 'hdparm-security cmd-hdparm-security)
+  (register-command! 'hdparm-acoustic cmd-hdparm-acoustic)
+  (register-command! 'hdparm-readonly cmd-hdparm-readonly)
+  (register-command! 'sdparm-inquiry cmd-sdparm-inquiry)
+  (register-command! 'sdparm-list cmd-sdparm-list)
+  (register-command! 'sdparm-set cmd-sdparm-set)
+  (register-command! 'sdparm-get cmd-sdparm-get)
+  (register-command! 'nvme-list cmd-nvme-list)
+  (register-command! 'nvme-smart cmd-nvme-smart)
+  (register-command! 'nvme-identify cmd-nvme-identify)
+  (register-command! 'nvme-format cmd-nvme-format)
+  (register-command! 'fio-run cmd-fio-run)
+  (register-command! 'fio-parse cmd-fio-parse)
+  (register-command! 'fio-generate cmd-fio-generate)
+  (register-command! 'fio-compare cmd-fio-compare)
 )