From bbafc3070ee92af66191b58ad4c8325e3d70226f Mon Sep 17 00:00:00 2001 From: Shingo Kawamura Date: Thu, 21 Feb 2019 23:06:04 +0900 Subject: [PATCH] Add sysfs spec --- _samples/blkinfo.go | 17 ++++++++++++++++- blkinfo.go | 3 +++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/_samples/blkinfo.go b/_samples/blkinfo.go index 9fdd41b..bd49085 100644 --- a/_samples/blkinfo.go +++ b/_samples/blkinfo.go @@ -2,13 +2,28 @@ package main import ( "fmt" + "os" + "strings" blkinfo "github.com/blp1526/go-blkinfo" "gopkg.in/yaml.v2" ) func main() { - bi, err := blkinfo.New("/dev/sda1") + args := os.Args + if len(args) != 2 { + desc := []string{ + "USAGE:", + " go run _samples/blkinfo.go [device]", + "EXAMPLE:", + " go run _samples/blkinfo.go /dev/sda1", + } + fmt.Println(strings.Join(desc, "\n")) + os.Exit(0) + } + + path := args[1] + bi, err := blkinfo.New(path) if err != nil { panic(err) } diff --git a/blkinfo.go b/blkinfo.go index a65feca..664a76e 100644 --- a/blkinfo.go +++ b/blkinfo.go @@ -150,6 +150,9 @@ func mountpoint(mtab string, realPath string) (string, error) { } func majorMinor(realPath string) (string, error) { + // https://github.com/torvalds/linux/blob/d13937116f1e82bf508a6325111b322c30c85eb9/fs/block_dev.c#L1229-L1242 + // /sys/block/dm-0/slaves/sda --> /sys/block/sda + // /sys/block/sda/holders/dm-0 --> /sys/block/dm-0 baseName := filepath.Base(realPath) sysBlockPath := filepath.Join("/", "sys", "block") fileInfos, err := ioutil.ReadDir(sysBlockPath)