fix(smart v0.1.11): utiliser /dev/nvme0n1 au lieu de /dev/nvme0
/dev/nvme0 (contrôleur char device) : crw------- root root → root only /dev/nvme0n1 (namespace block device): brw-rw---- root disk → groupe disk OK L'agent tourne avec DynamicUser+SupplementaryGroups=disk → a accès au block device nvme0n1 mais pas au char device nvme0. Les 3 versions précédentes (v0.1.8-v0.1.10) tentaient toutes d'ouvrir le contrôleur. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "nanometrics-agent"
|
||||
version = "0.1.10"
|
||||
version = "0.1.11"
|
||||
edition = "2021"
|
||||
|
||||
[lib]
|
||||
|
||||
@@ -91,17 +91,12 @@ pub fn collect() -> Option<Vec<crate::payload::SmartMetrics>> {
|
||||
.map(|e| e.file_name().into_string().unwrap_or_default())
|
||||
.filter_map(|n| {
|
||||
if n.starts_with("sd") {
|
||||
// /dev/sda, /dev/sdb — block device, groupe disk OK
|
||||
Some(format!("/dev/{}", n))
|
||||
} else if n.starts_with("nvme") && n.contains('n') {
|
||||
// /dev/nvme0n1 — block device (brw-rw---- root disk), groupe disk OK
|
||||
// NE PAS utiliser /dev/nvme0 (contrôleur crw------- root root, root only)
|
||||
Some(format!("/dev/{}", n))
|
||||
} else if n.starts_with("nvme") {
|
||||
// /sys/block a nvme0n1 (namespace) → extraire le contrôleur nvme0
|
||||
// rfind('n') trouve le dernier 'n' séparateur namespace, ex: nvme0[n]1
|
||||
let ctrl = if let Some(pos) = n.rfind('n')
|
||||
.filter(|&p| p >= 5 && n[p+1..].chars().all(|c| c.is_ascii_digit())) {
|
||||
&n[..pos]
|
||||
} else {
|
||||
&n // déjà un nom de contrôleur (rare)
|
||||
};
|
||||
Some(format!("/dev/{}", ctrl))
|
||||
} else {
|
||||
None
|
||||
}
|
||||
|
||||
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Reference in New Issue
Block a user