From bce44b5c1bb80b0de023025ecd4c33d5fdbd490e Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 09:55:35 +0100 Subject: [PATCH 01/46] grab info --- erigon-lib/diskutils/diskutils.go | 2 +- erigon-lib/diskutils/diskutils_linux.go | 108 ++++++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 erigon-lib/diskutils/diskutils_linux.go diff --git a/erigon-lib/diskutils/diskutils.go b/erigon-lib/diskutils/diskutils.go index e22567b35e8..8335b460699 100644 --- a/erigon-lib/diskutils/diskutils.go +++ b/erigon-lib/diskutils/diskutils.go @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Lesser General Public License // along with Erigon. If not, see . -//go:build !darwin && !windows +//go:build !darwin && !windows && !linux package diskutils diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go new file mode 100644 index 00000000000..2350916376d --- /dev/null +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -0,0 +1,108 @@ +// Copyright 2024 The Erigon Authors +// This file is part of Erigon. +// +// Erigon is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// Erigon is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with Erigon. If not, see . + +//go:build linux + +package diskutils + +import ( + "bufio" + "fmt" + "os" + "os/exec" + "strings" + "syscall" + + "github.com/erigontech/erigon-lib/log/v3" +) + +func MountPointForDirPath(dirPath string) string { + actualPath := SmlinkForDirPath(dirPath) + + var stat syscall.Statfs_t + if err := syscall.Statfs(actualPath, &stat); err != nil { + log.Debug("[diskutils] Error getting mount point for dir path:", actualPath, "Error:", err) + return "/" + } + + mountPointBytes := []byte{} + for _, b := range &stat.Mntonname { + if b == 0 { + break + } + mountPointBytes = append(mountPointBytes, byte(b)) + } + mountPoint := string(mountPointBytes) + + return mountPoint +} + +func SmlinkForDirPath(dirPath string) string { + fileInfo, err := os.Lstat(dirPath) + if err != nil { + log.Debug("[diskutils] Error getting file info for dir path:", dirPath, "Error:", err) + return dirPath + } + + if fileInfo.Mode()&os.ModeSymlink != 0 { + targetPath, err := os.Readlink(dirPath) + if err != nil { + log.Debug("[diskutils] Error getting target path for symlink:", dirPath, "Error:", err) + return dirPath + } else { + return targetPath + } + } else { + return dirPath + } +} + +func DiskInfo(disk string) (string, error) { + cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") + + // Capture the output + output, err := cmd.Output() + if err != nil { + log.Fatalf("Error executing lsblk command: %v", err) + } + + // Process the output + scanner := bufio.NewScanner(strings.NewReader(string(output))) + header := true + + for scanner.Scan() { + line := scanner.Text() + + // Skip the header line + if header { + header = false + continue + } + + // Check if the line contains the mount point + if strings.Contains(line, mountPoint) { + fmt.Println(line) + return line, nil + } + } + + if err := scanner.Err(); err != nil { + log.Fatalf("Error reading output: %v", err) + } + + outputStr := output.String() + return outputStr, nil +} From cd8e0d384d9c8c8c749388ce937abfa0a1b463a0 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 09:57:50 +0100 Subject: [PATCH 02/46] fix --- erigon-lib/diskutils/diskutils_linux.go | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 2350916376d..ebf635066ca 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -76,7 +76,7 @@ func DiskInfo(disk string) (string, error) { // Capture the output output, err := cmd.Output() if err != nil { - log.Fatalf("Error executing lsblk command: %v", err) + fmt.Println("Error executing lsblk command: %v", err) } // Process the output @@ -93,16 +93,15 @@ func DiskInfo(disk string) (string, error) { } // Check if the line contains the mount point - if strings.Contains(line, mountPoint) { + if strings.Contains(line, disk) { fmt.Println(line) return line, nil } } if err := scanner.Err(); err != nil { - log.Fatalf("Error reading output: %v", err) + fmt.Println("Error reading output: %v", err) } - outputStr := output.String() - return outputStr, nil + return "unknown", nil } From ef58254411c8d3edfc3ccd118a1ec4bb9e121011 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:01:20 +0100 Subject: [PATCH 03/46] fix --- erigon-lib/diskutils/diskutils_linux.go | 45 +++++++++++++++++++------ 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ebf635066ca..2e35442d87b 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -29,25 +29,48 @@ import ( "github.com/erigontech/erigon-lib/log/v3" ) +func getDeviceID(path string) (uint64, error) { + var stat syscall.Stat_t + err := syscall.Stat(path, &stat) + if err != nil { + return 0, fmt.Errorf("error stating path: %v", err) + } + return stat.Dev, nil +} + func MountPointForDirPath(dirPath string) string { actualPath := SmlinkForDirPath(dirPath) - var stat syscall.Statfs_t - if err := syscall.Statfs(actualPath, &stat); err != nil { - log.Debug("[diskutils] Error getting mount point for dir path:", actualPath, "Error:", err) - return "/" + devID, err := getDeviceID(actualPath) + if err != nil { + return "" } - mountPointBytes := []byte{} - for _, b := range &stat.Mntonname { - if b == 0 { - break + // Open /proc/self/mountinfo + mountsFile, err := os.Open("/proc/self/mountinfo") + if err != nil { + return "" + } + defer mountsFile.Close() + + // Read mountinfo to find matching device ID + scanner := os.NewScanner(mountsFile) + for scanner.Scan() { + line := scanner.Text() + fields := strings.Fields(line) + if len(fields) < 5 { + continue + } + + // Extract device ID from the mountinfo line + var deviceID uint64 + fmt.Sscanf(fields[4], "%d", &deviceID) + if deviceID == devID { + return fields[4] } - mountPointBytes = append(mountPointBytes, byte(b)) } - mountPoint := string(mountPointBytes) - return mountPoint + return "" } func SmlinkForDirPath(dirPath string) string { From e655fb09696746a798017ab38f244c318c45f34e Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:02:03 +0100 Subject: [PATCH 04/46] fix --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 2e35442d87b..4408294cf27 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -54,7 +54,7 @@ func MountPointForDirPath(dirPath string) string { defer mountsFile.Close() // Read mountinfo to find matching device ID - scanner := os.NewScanner(mountsFile) + scanner := bufio.NewScanner(mountsFile) for scanner.Scan() { line := scanner.Text() fields := strings.Fields(line) From f5e41d74f1c529ba187cf46f0d9d7974b2e6da58 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:14:50 +0100 Subject: [PATCH 05/46] test --- erigon-lib/diskutils/diskutils_linux.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 4408294cf27..ad9a053367b 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -115,11 +115,21 @@ func DiskInfo(disk string) (string, error) { continue } - // Check if the line contains the mount point - if strings.Contains(line, disk) { - fmt.Println(line) + //create map key value NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR + + //split line to array of strings + + array := strings.Fields(line) + fmt.Println("line: ", array) + if array[7] == disk { return line, nil } + + // Check if the line contains the mount point + //if strings.Contains(line, disk) { + // fmt.Println(line) + // return line, nil + //} } if err := scanner.Err(); err != nil { From c519ea47bd2555c729060071bc3a9205255e4be0 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:25:19 +0100 Subject: [PATCH 06/46] test --- erigon-lib/diskutils/diskutils_linux.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ad9a053367b..a7a9cd1d6b2 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -117,11 +117,19 @@ func DiskInfo(disk string) (string, error) { //create map key value NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR + expectedLength := 40 //split line to array of strings array := strings.Fields(line) - fmt.Println("line: ", array) + fmt.Println("array len: ", len(array)) + fmt.Println("array mount point is: ", array[7]) + if len(array) != expectedLength { + fmt.Println("Error: unexpected number of fields in lsblk output: %d", len(array)) + fmt.Println("line: ", array) + } + //fmt.Println("line: ", array) if array[7] == disk { + fmt.Println("Final line: ", array) return line, nil } From f2e136787f2fbc3e1cd5247376bce59a4c3d9e36 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:31:53 +0100 Subject: [PATCH 07/46] test --- erigon-lib/diskutils/diskutils_linux.go | 58 ++++++++++++++++--------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index a7a9cd1d6b2..ac66b2884f0 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -93,8 +93,8 @@ func SmlinkForDirPath(dirPath string) string { } } -func DiskInfo(disk string) (string, error) { - cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") +func diskUUID(disk string) (string, error) { + cmd := exec.Command("lsblk", "-o", "UUID") // Capture the output output, err := cmd.Output() @@ -115,29 +115,47 @@ func DiskInfo(disk string) (string, error) { continue } - //create map key value NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR + // Check if the line contains the mount point + if strings.Contains(line, disk) { + return line, nil + } + } + + if err := scanner.Err(); err != nil { + fmt.Println("Error reading output: %v", err) + } + + return "unknown", nil +} - expectedLength := 40 - //split line to array of strings +func DiskInfo(disk string) (string, error) { + uuid := diskUUID(disk) + cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") - array := strings.Fields(line) - fmt.Println("array len: ", len(array)) - fmt.Println("array mount point is: ", array[7]) - if len(array) != expectedLength { - fmt.Println("Error: unexpected number of fields in lsblk output: %d", len(array)) - fmt.Println("line: ", array) + // Capture the output + output, err := cmd.Output() + if err != nil { + fmt.Println("Error executing lsblk command: %v", err) + } + + // Process the output + scanner := bufio.NewScanner(strings.NewReader(string(output))) + header := true + + for scanner.Scan() { + line := scanner.Text() + + // Skip the header line + if header { + header = false + continue } - //fmt.Println("line: ", array) - if array[7] == disk { - fmt.Println("Final line: ", array) + + Check if the line contains the mount point + if strings.Contains(line, uuid) { + fmt.Println("result", line) return line, nil } - - // Check if the line contains the mount point - //if strings.Contains(line, disk) { - // fmt.Println(line) - // return line, nil - //} } if err := scanner.Err(); err != nil { From 204e2682e83118b1621c7353d8990d3c0c009d7f Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:32:18 +0100 Subject: [PATCH 08/46] test --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ac66b2884f0..8185078d0b1 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -151,7 +151,7 @@ func DiskInfo(disk string) (string, error) { continue } - Check if the line contains the mount point + //Check if the line contains the mount point if strings.Contains(line, uuid) { fmt.Println("result", line) return line, nil From a472b5ed77501f485efde796a40e679369b20548 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:32:49 +0100 Subject: [PATCH 09/46] test --- erigon-lib/diskutils/diskutils_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 8185078d0b1..52ec809cd6c 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -129,7 +129,10 @@ func diskUUID(disk string) (string, error) { } func DiskInfo(disk string) (string, error) { - uuid := diskUUID(disk) + uuid, err := diskUUID(disk) + if err != nil { + return "", err + } cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") // Capture the output From 96eb5939afc0c325bea986905875278d158ef692 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:35:18 +0100 Subject: [PATCH 10/46] test --- erigon-lib/diskutils/diskutils_linux.go | 1 + 1 file changed, 1 insertion(+) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 52ec809cd6c..db324e6f639 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -130,6 +130,7 @@ func diskUUID(disk string) (string, error) { func DiskInfo(disk string) (string, error) { uuid, err := diskUUID(disk) + fmt.Println("uuuid", uuid) if err != nil { return "", err } From 47a622967f81539d2b90bf32b38a23267b3e0822 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:38:57 +0100 Subject: [PATCH 11/46] test --- erigon-lib/diskutils/diskutils_linux.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index db324e6f639..e0b65991fe8 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -94,7 +94,7 @@ func SmlinkForDirPath(dirPath string) string { } func diskUUID(disk string) (string, error) { - cmd := exec.Command("lsblk", "-o", "UUID") + cmd := exec.Command("lsblk", "-o", "UUID,MOUNTPOINT") // Capture the output output, err := cmd.Output() @@ -116,8 +116,13 @@ func diskUUID(disk string) (string, error) { } // Check if the line contains the mount point - if strings.Contains(line, disk) { - return line, nil + arr := strings.Fields(line) + fmt.Println("arr", arr) + for i, v := range arr { + if v == disk { + fmt.Println("result", arr[i-1]) + return arr[i-1], nil + } } } From 7fa519991fc9cceca45fbb35f7da77ca27353588 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:44:38 +0100 Subject: [PATCH 12/46] test --- erigon-lib/diskutils/diskutils_linux.go | 56 +++++++++++++++++++------ 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index e0b65991fe8..645f4d655b4 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -20,6 +20,7 @@ package diskutils import ( "bufio" + "bytes" "fmt" "os" "os/exec" @@ -119,9 +120,8 @@ func diskUUID(disk string) (string, error) { arr := strings.Fields(line) fmt.Println("arr", arr) for i, v := range arr { - if v == disk { - fmt.Println("result", arr[i-1]) - return arr[i-1], nil + if v == disk && i == 0 { + return arr[0], nil } } } @@ -135,19 +135,20 @@ func diskUUID(disk string) (string, error) { func DiskInfo(disk string) (string, error) { uuid, err := diskUUID(disk) - fmt.Println("uuuid", uuid) if err != nil { return "", err } cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") - - // Capture the output - output, err := cmd.Output() + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() if err != nil { - fmt.Println("Error executing lsblk command: %v", err) + return "", err } - // Process the output + output := out.String() + fmt.Println("output", output) + //find disk with uuid scanner := bufio.NewScanner(strings.NewReader(string(output))) header := true @@ -157,6 +158,7 @@ func DiskInfo(disk string) (string, error) { // Skip the header line if header { header = false + fmt.Println("header", line) continue } @@ -167,9 +169,37 @@ func DiskInfo(disk string) (string, error) { } } - if err := scanner.Err(); err != nil { - fmt.Println("Error reading output: %v", err) - } + return output, nil + /* + // Capture the output + output, err := cmd.Output() + if err != nil { + fmt.Println("Error executing lsblk command: %v", err) + } - return "unknown", nil + // Process the output + scanner := bufio.NewScanner(strings.NewReader(string(output))) + header := true + + for scanner.Scan() { + line := scanner.Text() + + // Skip the header line + if header { + header = false + continue + } + + //Check if the line contains the mount point + if strings.Contains(line, uuid) { + fmt.Println("result", line) + return line, nil + } + } + + if err := scanner.Err(); err != nil { + fmt.Println("Error reading output: %v", err) + } + + return "unknown", nil*/ } From a46cc3bd73eb211ce4a42a59c36603bd755a451e Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:45:03 +0100 Subject: [PATCH 13/46] test --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 645f4d655b4..9e4d0fa5f30 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -141,7 +141,7 @@ func DiskInfo(disk string) (string, error) { cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") var out bytes.Buffer cmd.Stdout = &out - err := cmd.Run() + err = cmd.Run() if err != nil { return "", err } From 232dbd0f81d6ecdb1aa479c48c6f9fb684ab2f3d Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 10:57:51 +0100 Subject: [PATCH 14/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 9e4d0fa5f30..fa68ec31a9b 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -138,7 +138,7 @@ func DiskInfo(disk string) (string, error) { if err != nil { return "", err } - cmd := exec.Command("lsblk", "-o", "NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,UUID,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") + cmd := exec.Command("lsblk", "-o", "NAME,PATH,FSAVAIL,FSTYPE,MOUNTPOINT,UUID,SIZE,TYPE,MODEL,STATE,GROUP,MODE,DISC-ALN,DISC-GRAN,WSAME,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From dc5b69a293a391408bc1fef8f865f3399554864d Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 11:13:48 +0100 Subject: [PATCH 15/46] save --- erigon-lib/diskutils/diskutils_linux.go | 35 ++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index fa68ec31a9b..53a6fc9cc5c 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -138,7 +138,11 @@ func DiskInfo(disk string) (string, error) { if err != nil { return "", err } - cmd := exec.Command("lsblk", "-o", "NAME,PATH,FSAVAIL,FSTYPE,MOUNTPOINT,UUID,SIZE,TYPE,MODEL,STATE,GROUP,MODE,DISC-ALN,DISC-GRAN,WSAME,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR") + + headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "SIZE", "TYPE", "MODEL", "STATE", "GROUP", "MODE", "WSAME", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headersString := strings.Join(headrsArray, ",") + + cmd := exec.Command("lsblk", "-o", headersString) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() @@ -150,22 +154,29 @@ func DiskInfo(disk string) (string, error) { fmt.Println("output", output) //find disk with uuid scanner := bufio.NewScanner(strings.NewReader(string(output))) - header := true for scanner.Scan() { line := scanner.Text() - // Skip the header line - if header { - header = false - fmt.Println("header", line) - continue - } + resultmap := make(map[string]string) + arr := strings.Fields(line) + for i, v := range arr { + found := false + if arr[0] == uuid { + resultmap[headrsArray[i]] = v + found = true + } - //Check if the line contains the mount point - if strings.Contains(line, uuid) { - fmt.Println("result", line) - return line, nil + if found { + fmt.Println("resultmap", resultmap) + //map to string + var str string + for k, v := range resultmap { + str = str + k + ":" + v + "," + } + fmt.Println("str", str) + return str, nil + } } } From e9aa5c0bec042dfe77870811cbe825f0b391727b Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 11:19:10 +0100 Subject: [PATCH 16/46] save --- erigon-lib/diskutils/diskutils_linux.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 53a6fc9cc5c..3e32d4a1127 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -95,7 +95,7 @@ func SmlinkForDirPath(dirPath string) string { } func diskUUID(disk string) (string, error) { - cmd := exec.Command("lsblk", "-o", "UUID,MOUNTPOINT") + cmd := exec.Command("lsblk", "-o", "MOUNTPOINT, UUID") // Capture the output output, err := cmd.Output() @@ -118,10 +118,10 @@ func diskUUID(disk string) (string, error) { // Check if the line contains the mount point arr := strings.Fields(line) - fmt.Println("arr", arr) - for i, v := range arr { - if v == disk && i == 0 { - return arr[0], nil + if len(arr) > 1 { + if arr[0] == disk { + fmt.Println("Found uuid:", arr[1]) + return arr[1], nil } } } @@ -130,7 +130,7 @@ func diskUUID(disk string) (string, error) { fmt.Println("Error reading output: %v", err) } - return "unknown", nil + return "", nil } func DiskInfo(disk string) (string, error) { @@ -139,7 +139,7 @@ func DiskInfo(disk string) (string, error) { return "", err } - headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "SIZE", "TYPE", "MODEL", "STATE", "GROUP", "MODE", "WSAME", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") cmd := exec.Command("lsblk", "-o", headersString) @@ -151,7 +151,6 @@ func DiskInfo(disk string) (string, error) { } output := out.String() - fmt.Println("output", output) //find disk with uuid scanner := bufio.NewScanner(strings.NewReader(string(output))) @@ -162,7 +161,9 @@ func DiskInfo(disk string) (string, error) { arr := strings.Fields(line) for i, v := range arr { found := false + fmt.Println("uuid to scan:", arr) if arr[0] == uuid { + fmt.Println("found uuid:", arr[0]) resultmap[headrsArray[i]] = v found = true } From ec784f2fbe997df2572ab8ec6da4b80a104ddc35 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 11:21:47 +0100 Subject: [PATCH 17/46] save --- erigon-lib/diskutils/diskutils_linux.go | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 3e32d4a1127..82c6840ee6c 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -95,7 +95,7 @@ func SmlinkForDirPath(dirPath string) string { } func diskUUID(disk string) (string, error) { - cmd := exec.Command("lsblk", "-o", "MOUNTPOINT, UUID") + cmd := exec.Command("lsblk", "-o", "MOUNTPOINT,UUID") // Capture the output output, err := cmd.Output() @@ -105,19 +105,13 @@ func diskUUID(disk string) (string, error) { // Process the output scanner := bufio.NewScanner(strings.NewReader(string(output))) - header := true for scanner.Scan() { line := scanner.Text() - // Skip the header line - if header { - header = false - continue - } - // Check if the line contains the mount point arr := strings.Fields(line) + fmt.Println("uuid search arr", arr) if len(arr) > 1 { if arr[0] == disk { fmt.Println("Found uuid:", arr[1]) @@ -130,12 +124,14 @@ func diskUUID(disk string) (string, error) { fmt.Println("Error reading output: %v", err) } + fmt.Println("UUID not found") return "", nil } func DiskInfo(disk string) (string, error) { uuid, err := diskUUID(disk) if err != nil { + fmt.Println("Error getting disk UUID: %v", err) return "", err } @@ -147,6 +143,7 @@ func DiskInfo(disk string) (string, error) { cmd.Stdout = &out err = cmd.Run() if err != nil { + fmt.Println("Error executing lsblk command: %v", err) return "", err } From c3356a700fad3c5afdd4c620e793cff90c15e326 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:05:21 +0100 Subject: [PATCH 18/46] save --- erigon-lib/diskutils/diskutils_linux.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 82c6840ee6c..84985964222 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -135,7 +135,8 @@ func DiskInfo(disk string) (string, error) { return "", err } - headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} + headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") cmd := exec.Command("lsblk", "-o", headersString) @@ -162,6 +163,10 @@ func DiskInfo(disk string) (string, error) { if arr[0] == uuid { fmt.Println("found uuid:", arr[0]) resultmap[headrsArray[i]] = v + fmt.Println("resultmap upd", resultmap) + fmt.Println("i", i) + fmt.Println("v", v) + fmt.Println("headrsArray[i]", headrsArray[i]) found = true } From 0cb8bdce29a0b695b2b3704b6a13be07c09230f3 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:08:37 +0100 Subject: [PATCH 19/46] save --- erigon-lib/diskutils/diskutils_linux.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 84985964222..50174a94977 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -157,17 +157,20 @@ func DiskInfo(disk string) (string, error) { resultmap := make(map[string]string) arr := strings.Fields(line) - for i, v := range arr { - found := false - fmt.Println("uuid to scan:", arr) + found := false + if len(arr) > 0 { if arr[0] == uuid { - fmt.Println("found uuid:", arr[0]) - resultmap[headrsArray[i]] = v - fmt.Println("resultmap upd", resultmap) - fmt.Println("i", i) - fmt.Println("v", v) - fmt.Println("headrsArray[i]", headrsArray[i]) found = true + for i, v := range arr { + if arr[0] == uuid { + fmt.Println("found uuid:", arr[0]) + resultmap[headrsArray[i]] = v + fmt.Println("resultmap upd", resultmap) + fmt.Println("i", i) + fmt.Println("v", v) + fmt.Println("headrsArray[i]", headrsArray[i]) + } + } } if found { @@ -181,6 +184,7 @@ func DiskInfo(disk string) (string, error) { return str, nil } } + } return output, nil From a41a6789050c59c2261c469b5fc059efa28767c4 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:10:18 +0100 Subject: [PATCH 20/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 50174a94977..be46e805f60 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -178,7 +178,7 @@ func DiskInfo(disk string) (string, error) { //map to string var str string for k, v := range resultmap { - str = str + k + ":" + v + "," + str = str + k + ":" + v + "\n" } fmt.Println("str", str) return str, nil From 9694c25d1cd8f623994451bb1ce1df44b86747ab Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:11:02 +0100 Subject: [PATCH 21/46] save --- erigon-lib/diskutils/diskutils_linux.go | 39 ------------------------- 1 file changed, 39 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index be46e805f60..a9055753692 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -163,19 +163,12 @@ func DiskInfo(disk string) (string, error) { found = true for i, v := range arr { if arr[0] == uuid { - fmt.Println("found uuid:", arr[0]) resultmap[headrsArray[i]] = v - fmt.Println("resultmap upd", resultmap) - fmt.Println("i", i) - fmt.Println("v", v) - fmt.Println("headrsArray[i]", headrsArray[i]) } } } if found { - fmt.Println("resultmap", resultmap) - //map to string var str string for k, v := range resultmap { str = str + k + ":" + v + "\n" @@ -188,36 +181,4 @@ func DiskInfo(disk string) (string, error) { } return output, nil - /* - // Capture the output - output, err := cmd.Output() - if err != nil { - fmt.Println("Error executing lsblk command: %v", err) - } - - // Process the output - scanner := bufio.NewScanner(strings.NewReader(string(output))) - header := true - - for scanner.Scan() { - line := scanner.Text() - - // Skip the header line - if header { - header = false - continue - } - - //Check if the line contains the mount point - if strings.Contains(line, uuid) { - fmt.Println("result", line) - return line, nil - } - } - - if err := scanner.Err(); err != nil { - fmt.Println("Error reading output: %v", err) - } - - return "unknown", nil*/ } From 78edc75f51b5a28ea1b6cb1874f38da489d29160 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:25:24 +0100 Subject: [PATCH 22/46] save --- erigon-lib/diskutils/diskutils_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index a9055753692..ac4e3970b65 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -58,7 +58,10 @@ func MountPointForDirPath(dirPath string) string { scanner := bufio.NewScanner(mountsFile) for scanner.Scan() { line := scanner.Text() - fields := strings.Fields(line) + //fields := strings.Fields(line) + fmt.Println("line", line) + fields := strings.Split(line, " ") + fmt.Println("fields", fields) if len(fields) < 5 { continue } From 53baab2660d7ac7b6b41ca8bc47c59a418a87c64 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:38:15 +0100 Subject: [PATCH 23/46] save --- erigon-lib/diskutils/diskutils_linux.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ac4e3970b65..49e7baccc20 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -142,7 +142,16 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("lsblk", "-o", headersString) + cmd := exec.Command("lsblk", "-o", headersString+`| awk -F\' \' { + for (i=1; i<=NF; i++) { + if ($i == "") { + printf "%-20s ", "EMPTY" + } else { + printf "%-20s ", $i + } + } + print "" + }'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() @@ -152,6 +161,7 @@ func DiskInfo(disk string) (string, error) { } output := out.String() + fmt.Println("output", output) //find disk with uuid scanner := bufio.NewScanner(strings.NewReader(string(output))) @@ -159,7 +169,8 @@ func DiskInfo(disk string) (string, error) { line := scanner.Text() resultmap := make(map[string]string) - arr := strings.Fields(line) + //arr := strings.Fields(line) + arr := strings.Split(line, "|") found := false if len(arr) > 0 { if arr[0] == uuid { From 5ba78ada00dceaf63c26350e05c6810dee7e093a Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:49:16 +0100 Subject: [PATCH 24/46] save --- erigon-lib/diskutils/diskutils_linux.go | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 49e7baccc20..186d4a2a77f 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -142,16 +142,7 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("lsblk", "-o", headersString+`| awk -F\' \' { - for (i=1; i<=NF; i++) { - if ($i == "") { - printf "%-20s ", "EMPTY" - } else { - printf "%-20s ", $i - } - } - print "" - }'`) + cmd := exec.Command("lsblk", "-o", headersString+`| awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From d6c99e0cea1c1f75bb3367e8fb7112964eb23892 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:51:53 +0100 Subject: [PATCH 25/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 186d4a2a77f..37e8186c4cd 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -142,7 +142,7 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("lsblk", "-o", headersString+`| awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) + cmd := exec.Command("lsblk", "-o", headersString+`| awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From e7fb8338b98152a040bdd444e2b6e2e622ae3064 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:53:05 +0100 Subject: [PATCH 26/46] save --- erigon-lib/diskutils/diskutils_linux.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 37e8186c4cd..01b98560f4f 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -58,10 +58,7 @@ func MountPointForDirPath(dirPath string) string { scanner := bufio.NewScanner(mountsFile) for scanner.Scan() { line := scanner.Text() - //fields := strings.Fields(line) - fmt.Println("line", line) fields := strings.Split(line, " ") - fmt.Println("fields", fields) if len(fields) < 5 { continue } @@ -127,7 +124,6 @@ func diskUUID(disk string) (string, error) { fmt.Println("Error reading output: %v", err) } - fmt.Println("UUID not found") return "", nil } From 644def05003aa41edad4b8ff209fa9c10ba78355 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:57:58 +0100 Subject: [PATCH 27/46] save --- erigon-lib/diskutils/diskutils_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 01b98560f4f..cca97f35d4b 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -138,7 +138,10 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("lsblk", "-o", headersString+`| awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) + cmd := exec.Command("bash", "-c", + `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + + // Capture the output var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From e001e3e83879493b9b8cae27f24b572dab1c15ef Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 13:58:26 +0100 Subject: [PATCH 28/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index cca97f35d4b..2c7a9157918 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -136,7 +136,7 @@ func DiskInfo(disk string) (string, error) { headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} - headersString := strings.Join(headrsArray, ",") + //headersString := strings.Join(headrsArray, ",") cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) From 26b360996dfdd0f6a9d662259bb111ede67716b4 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:12:15 +0100 Subject: [PATCH 29/46] save --- erigon-lib/diskutils/diskutils_linux.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 2c7a9157918..f5a0e7c1925 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -135,11 +135,18 @@ func DiskInfo(disk string) (string, error) { } headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} - //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} - //headersString := strings.Join(headrsArray, ",") + + // Construct the lsblk command dynamically + lsblkOptions := strings.Join(headersArray, ",") + awkFormat := strings.Repeat("%s|", len(headersArray)-1) + "%s\n" + awkCommand := fmt.Sprintf("awk 'NR>1 {printf \"%s\", %s}'", awkFormat, strings.Join(strings.Split(fmt.Sprintf("$%d", 1), ""), ",$")) cmd := exec.Command("bash", "-c", - `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + fmt.Sprintf( + "lsblk -o %s | %s", + lsblkOptions, + awkCommand, + )) // Capture the output var out bytes.Buffer From f4f89b840b2a32d766fc3341ce6cb676a8b3817f Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:12:41 +0100 Subject: [PATCH 30/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index f5a0e7c1925..ba7e5693eb4 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -134,7 +134,7 @@ func DiskInfo(disk string) (string, error) { return "", err } - headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headersArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} // Construct the lsblk command dynamically lsblkOptions := strings.Join(headersArray, ",") From d132070673278ff762e10a6725c7e6b4b8070fda Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:13:18 +0100 Subject: [PATCH 31/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ba7e5693eb4..df08db9f837 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -174,7 +174,7 @@ func DiskInfo(disk string) (string, error) { found = true for i, v := range arr { if arr[0] == uuid { - resultmap[headrsArray[i]] = v + resultmap[headersArray[i]] = v } } } From 00dea1c3b29a7b57cc7ddb5b37eb3630c845c4ea Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:15:54 +0100 Subject: [PATCH 32/46] save --- erigon-lib/diskutils/diskutils_linux.go | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index df08db9f837..0f683023779 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -134,21 +134,11 @@ func DiskInfo(disk string) (string, error) { return "", err } - headersArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} + headersString := strings.Join(headrsArray, ",") - // Construct the lsblk command dynamically - lsblkOptions := strings.Join(headersArray, ",") - awkFormat := strings.Repeat("%s|", len(headersArray)-1) + "%s\n" - awkCommand := fmt.Sprintf("awk 'NR>1 {printf \"%s\", %s}'", awkFormat, strings.Join(strings.Split(fmt.Sprintf("$%d", 1), ""), ",$")) - - cmd := exec.Command("bash", "-c", - fmt.Sprintf( - "lsblk -o %s | %s", - lsblkOptions, - awkCommand, - )) - - // Capture the output + cmd := exec.Command("lsblk", "-o", `UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() @@ -174,7 +164,7 @@ func DiskInfo(disk string) (string, error) { found = true for i, v := range arr { if arr[0] == uuid { - resultmap[headersArray[i]] = v + resultmap[headrsArray[i]] = v } } } From 5189f16c66acea13614fbc08c80ec9e45c674a8b Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:16:16 +0100 Subject: [PATCH 33/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 0f683023779..35bdb53c8d0 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -136,7 +136,7 @@ func DiskInfo(disk string) (string, error) { headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} - headersString := strings.Join(headrsArray, ",") + //headersString := strings.Join(headrsArray, ",") cmd := exec.Command("lsblk", "-o", `UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) var out bytes.Buffer From 3dd2896b753bbde11f986307f396ef953846d1bd Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:21:18 +0100 Subject: [PATCH 34/46] save --- erigon-lib/diskutils/diskutils_linux.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 35bdb53c8d0..fe968a3f286 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -134,11 +134,12 @@ func DiskInfo(disk string) (string, error) { return "", err } - headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + //headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} //headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("lsblk", "-o", `UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1' {print "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40, §41}'`) + cmd := exec.Command("bash", "-c", + `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From eedf11cb91ee5a224607bd2bf3b301f15be08f36 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:21:33 +0100 Subject: [PATCH 35/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index fe968a3f286..452657ec06d 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -134,7 +134,7 @@ func DiskInfo(disk string) (string, error) { return "", err } - //headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} //headersString := strings.Join(headrsArray, ",") From f112f9603c64d9fb47606bb52d434a70dba02bf4 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:23:38 +0100 Subject: [PATCH 36/46] save --- erigon-lib/diskutils/diskutils_linux.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 452657ec06d..ff64625761d 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -136,10 +136,10 @@ func DiskInfo(disk string) (string, error) { headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} - //headersString := strings.Join(headrsArray, ",") + headersString := strings.Join(headrsArray, ",") - cmd := exec.Command("bash", "-c", - `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From 0535bebd50ae7295e32e78a89cde475c87a9d16a Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:25:58 +0100 Subject: [PATCH 37/46] save --- erigon-lib/diskutils/diskutils_linux.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index ff64625761d..8823c7acb3e 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -138,8 +138,11 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") + percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s\n" + //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) - cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From da329acb73266abb5629b0ca0ef5d4b9da7fe69b Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:28:01 +0100 Subject: [PATCH 38/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 8823c7acb3e..3b657801fda 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -139,6 +139,8 @@ func DiskInfo(disk string) (string, error) { headersString := strings.Join(headrsArray, ",") percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s\n" + fmt.Println("percentSstring", percentSstring) + fmt.Println("len", len(strings.Split(percentSstring, "|"))) //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) From 6d4071c48c940d63375fe62e4fccea66d39c9551 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:29:53 +0100 Subject: [PATCH 39/46] save --- erigon-lib/diskutils/diskutils_linux.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 3b657801fda..5bc60250193 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -138,13 +138,13 @@ func DiskInfo(disk string) (string, error) { //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} headersString := strings.Join(headrsArray, ",") - percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s\n" + percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s" fmt.Println("percentSstring", percentSstring) fmt.Println("len", len(strings.Split(percentSstring, "|"))) //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) - cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From 12e56754c89c51b6701cbcaadab3de4c81617bac Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:34:39 +0100 Subject: [PATCH 40/46] save --- erigon-lib/diskutils/diskutils_linux.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 5bc60250193..2120ef01d17 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -139,12 +139,18 @@ func DiskInfo(disk string) (string, error) { headersString := strings.Join(headrsArray, ",") percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s" + valString := "" + for i := 0; i < len(headrsArray)-1; i++ { + valString = fmt.Sprintf("%s$%d,", valString, i+1) + } + valString = fmt.Sprintf("%s$%d", valString, len(headrsArray)) fmt.Println("percentSstring", percentSstring) - fmt.Println("len", len(strings.Split(percentSstring, "|"))) + fmt.Println("valString", valString) //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) - cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) + cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", `+valString+`}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() From e540cddaa6da7f7a45a2b02a6fea711e4d4f0f4e Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:39:46 +0100 Subject: [PATCH 41/46] save --- erigon-lib/diskutils/diskutils_linux.go | 40 ++++++++----------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 2120ef01d17..12a0ac03c91 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -34,7 +34,7 @@ func getDeviceID(path string) (uint64, error) { var stat syscall.Stat_t err := syscall.Stat(path, &stat) if err != nil { - return 0, fmt.Errorf("error stating path: %v", err) + return 0, log.Debug("[diskutils] error stating path: %v", err) } return stat.Dev, nil } @@ -100,7 +100,7 @@ func diskUUID(disk string) (string, error) { // Capture the output output, err := cmd.Output() if err != nil { - fmt.Println("Error executing lsblk command: %v", err) + log.Debug("[diskutils] Error executing lsblk command: %v", err) } // Process the output @@ -111,17 +111,15 @@ func diskUUID(disk string) (string, error) { // Check if the line contains the mount point arr := strings.Fields(line) - fmt.Println("uuid search arr", arr) if len(arr) > 1 { if arr[0] == disk { - fmt.Println("Found uuid:", arr[1]) return arr[1], nil } } } if err := scanner.Err(); err != nil { - fmt.Println("Error reading output: %v", err) + log.Debug("[diskutils] Error reading output: %v", err) } return "", nil @@ -130,54 +128,43 @@ func diskUUID(disk string) (string, error) { func DiskInfo(disk string) (string, error) { uuid, err := diskUUID(disk) if err != nil { - fmt.Println("Error getting disk UUID: %v", err) + log.Debug("[diskutils] Error getting disk UUID: %v", err) return "", err } - headrsArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} - //headrsArray := []string{"UUID", "NAME", "PATH", "FSAVAIL", "FSTYPE", "MOUNTPOINT", "TYPE", "MODEL", "TRAN", "VENDOR"} - headersString := strings.Join(headrsArray, ",") + headersArray := []string{"UUID", "NAME", "KNAME", "PATH", "MAJ:MIN", "FSAVAIL", "FSUSE%", "FSTYPE", "MOUNTPOINT", "LABEL", "SIZE", "TYPE", "RO", "RM", "MODEL", "SERIAL", "STATE", "OWNER", "GROUP", "MODE", "ALIGNMENT", "MIN-IO", "OPT-IO", "PHY-SEC", "LOG-SEC", "ROTA", "SCHED", "RQ-SIZE", "DISC-ALN", "DISC-GRAN", "DISC-MAX", "DISC-ZERO", "WSAME", "WWN", "RAND", "PKNAME", "HCTL", "TRAN", "SUBSYSTEMS", "REV", "VENDOR"} + headersString := strings.Join(headersArray, ",") - percentSstring := strings.Repeat("%s|", len(headrsArray)-2) + "%s" + percentSstring := strings.Repeat("%s|", len(headersArray)-2) + "%s" valString := "" - for i := 0; i < len(headrsArray)-1; i++ { + for i := 0; i < len(headersArray)-1; i++ { valString = fmt.Sprintf("%s$%d,", valString, i+1) } - valString = fmt.Sprintf("%s$%d", valString, len(headrsArray)) - fmt.Println("percentSstring", percentSstring) - fmt.Println("valString", valString) + valString = fmt.Sprintf("%s$%d", valString, len(headersArray)) - //cmd := exec.Command("bash", "-c", `lsblk -o UUID,NAME,KNAME,PATH,MAJ:MIN,FSAVAIL,FSUSE%,FSTYPE,MOUNTPOINT,LABEL,SIZE,TYPE,RO,RM,MODEL,SERIAL,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO,WSAME,WWN,RAND,PKNAME,HCTL,TRAN,SUBSYSTEMS,REV,VENDOR | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) - //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) - //cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$40,$41}'`) cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", `+valString+`}'`) var out bytes.Buffer cmd.Stdout = &out err = cmd.Run() if err != nil { - fmt.Println("Error executing lsblk command: %v", err) + log.Debug("[diskutils] Error executing lsblk command: %v", err) return "", err } output := out.String() - fmt.Println("output", output) - //find disk with uuid - scanner := bufio.NewScanner(strings.NewReader(string(output))) + scanner := bufio.NewScanner(strings.NewReader(string(output))) for scanner.Scan() { line := scanner.Text() resultmap := make(map[string]string) - //arr := strings.Fields(line) arr := strings.Split(line, "|") found := false if len(arr) > 0 { if arr[0] == uuid { found = true for i, v := range arr { - if arr[0] == uuid { - resultmap[headrsArray[i]] = v - } + resultmap[headersArray[i]] = v } } @@ -186,12 +173,11 @@ func DiskInfo(disk string) (string, error) { for k, v := range resultmap { str = str + k + ":" + v + "\n" } - fmt.Println("str", str) return str, nil } } } - return output, nil + return "", nil } From a1bf7de9e3c950d9a490e4eb70388a363dd02dd8 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:40:39 +0100 Subject: [PATCH 42/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 12a0ac03c91..85fa70444d7 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -34,7 +34,7 @@ func getDeviceID(path string) (uint64, error) { var stat syscall.Stat_t err := syscall.Stat(path, &stat) if err != nil { - return 0, log.Debug("[diskutils] error stating path: %v", err) + return 0, fmt.Errorf("error stating path: %v", err) } return stat.Dev, nil } From 2ce3b2208e9cd2b2bb1522e55d7ae8dfda0ddc15 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 14:50:27 +0100 Subject: [PATCH 43/46] save --- erigon-lib/diskutils/diskutils_linux.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 85fa70444d7..0f3fac71f55 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -153,31 +153,31 @@ func DiskInfo(disk string) (string, error) { output := out.String() + return processOutput(output, uuid, headersArray) +} + +func processOutput(output string, uuid string, headersArray []string) (string, error) { scanner := bufio.NewScanner(strings.NewReader(string(output))) for scanner.Scan() { line := scanner.Text() - resultmap := make(map[string]string) arr := strings.Split(line, "|") - found := false if len(arr) > 0 { if arr[0] == uuid { - found = true + resultmap := make(map[string]string) for i, v := range arr { resultmap[headersArray[i]] = v } - } - if found { - var str string + var builder strings.Builder for k, v := range resultmap { - str = str + k + ":" + v + "\n" + builder.WriteString(fmt.Sprintf("%s: %s\n", k, v)) } - return str, nil + + return builder.String(), nil } } - } - return "", nil + return "", fmt.Errorf("UUID %s not found", uuid) } From 209c7c7b0ecd716da84b7530e6eaf8137c73e705 Mon Sep 17 00:00:00 2001 From: Dmytro Vovk Date: Thu, 12 Sep 2024 15:32:22 +0100 Subject: [PATCH 44/46] save --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 0f3fac71f55..daf820e5db1 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -34,7 +34,7 @@ func getDeviceID(path string) (uint64, error) { var stat syscall.Stat_t err := syscall.Stat(path, &stat) if err != nil { - return 0, fmt.Errorf("error stating path: %v", err) + return 0, fmt.Errorf("error stating path: %w", err) } return stat.Dev, nil } From c17b8a2fe13bd19ebd49c91103a0c7ae9cf2d662 Mon Sep 17 00:00:00 2001 From: dvovk Date: Thu, 12 Sep 2024 15:11:36 +0100 Subject: [PATCH 45/46] fix lint --- erigon-lib/diskutils/diskutils_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index daf820e5db1..97879c55fa6 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -104,7 +104,7 @@ func diskUUID(disk string) (string, error) { } // Process the output - scanner := bufio.NewScanner(strings.NewReader(string(output))) + scanner := bufio.NewScanner(bytes.NewReader(output)) for scanner.Scan() { line := scanner.Text() From 8d314aed6831e6128b8d9852722235e3b7c4d4d2 Mon Sep 17 00:00:00 2001 From: dvovk Date: Thu, 12 Sep 2024 15:31:07 +0100 Subject: [PATCH 46/46] fix lint --- erigon-lib/diskutils/diskutils_linux.go | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/erigon-lib/diskutils/diskutils_linux.go b/erigon-lib/diskutils/diskutils_linux.go index 97879c55fa6..99830705b81 100644 --- a/erigon-lib/diskutils/diskutils_linux.go +++ b/erigon-lib/diskutils/diskutils_linux.go @@ -143,21 +143,16 @@ func DiskInfo(disk string) (string, error) { valString = fmt.Sprintf("%s$%d", valString, len(headersArray)) cmd := exec.Command("bash", "-c", "lsblk -o"+headersString+` | awk 'NR>1 {printf "`+percentSstring+`\n", `+valString+`}'`) - var out bytes.Buffer - cmd.Stdout = &out - err = cmd.Run() + output, err := cmd.Output() if err != nil { log.Debug("[diskutils] Error executing lsblk command: %v", err) - return "", err } - output := out.String() - return processOutput(output, uuid, headersArray) } -func processOutput(output string, uuid string, headersArray []string) (string, error) { - scanner := bufio.NewScanner(strings.NewReader(string(output))) +func processOutput(output []byte, uuid string, headersArray []string) (string, error) { + scanner := bufio.NewScanner(bytes.NewReader(output)) for scanner.Scan() { line := scanner.Text()