diff --git a/gofsutil_mount_unix.go b/gofsutil_mount_unix.go index 1f74acb..0ea5ad4 100644 --- a/gofsutil_mount_unix.go +++ b/gofsutil_mount_unix.go @@ -205,13 +205,18 @@ func (fs *FS) wwnToDevicePath( symlinkPath := fmt.Sprintf("%s%s", MultipathDevDiskByIDPrefix, wwn) devPath, err := os.Readlink(symlinkPath) - // Look for regular path device. + // Look for nvme path device. if err != nil || devPath == "" { - symlinkPath = fmt.Sprintf("/dev/disk/by-id/wwn-0x%s", wwn) + symlinkPath = fmt.Sprintf("/dev/disk/by-id/nvme-eui.%s", wwn) devPath, err = os.Readlink(symlinkPath) - if err != nil { - log.Printf("Check for disk path %s not found", symlinkPath) - return "", "", err + if err != nil || devPath == "" { + // Look for normal path device + symlinkPath = fmt.Sprintf("/dev/disk/by-id/wwn-0x%s", wwn) + devPath, err = os.Readlink(symlinkPath) + if err != nil { + log.Printf("Check for disk path %s not found", symlinkPath) + return "", "", err + } } } components := strings.Split(devPath, "/") diff --git a/gofsutil_unix_test.go b/gofsutil_unix_test.go index 1be2e33..57ba131 100644 --- a/gofsutil_unix_test.go +++ b/gofsutil_unix_test.go @@ -147,6 +147,12 @@ func TestWWNToDevicePath(t *testing.T) { wwn: "60570970000197900046533030394146", result: "/dev/mydevb", }, + { + src: "/dev/disk/by-id/nvme-eui.12635330303134340000976000012000", + tgt: "../../mydevb", + wwn: "12635330303134340000976000012000", + result: "/dev/mydevb", + }, } for _, tt := range tests { t.Run("", func(_ *testing.T) {