prefer /dev/disk/azure/scsi1/ over by-id for azure disk

remove string conversion
This commit is contained in:
andyzhangx 2018-01-03 08:54:49 +00:00
parent 636a181d48
commit a4786fc8b0

View File

@ -46,13 +46,14 @@ func listAzureDiskPath(io ioHandler) []string {
return azureDiskList return azureDiskList
} }
// getDiskIDByPath get disk id by device name from /dev/disk/by-id // getDiskLinkByDevName get disk link by device name from devLinkPath, e.g. /dev/disk/azure/, /dev/disk/by-id/
func getDiskIDByPath(io ioHandler, devName string) (string, error) { func getDiskLinkByDevName(io ioHandler, devLinkPath, devName string) (string, error) {
diskIDPath := "/dev/disk/by-id/" dirs, err := io.ReadDir(devLinkPath)
dirs, err := io.ReadDir(diskIDPath) glog.V(12).Infof("azureDisk - begin to find %s from %s", devName, devLinkPath)
if err == nil { if err == nil {
for _, f := range dirs { for _, f := range dirs {
diskPath := diskIDPath + f.Name() diskPath := devLinkPath + f.Name()
glog.V(12).Infof("azureDisk - begin to Readlink: %s", diskPath)
link, linkErr := io.Readlink(diskPath) link, linkErr := io.Readlink(diskPath)
if linkErr != nil { if linkErr != nil {
glog.Warningf("azureDisk - read link (%s) error: %v", diskPath, linkErr) glog.Warningf("azureDisk - read link (%s) error: %v", diskPath, linkErr)
@ -62,9 +63,9 @@ func getDiskIDByPath(io ioHandler, devName string) (string, error) {
return diskPath, nil return diskPath, nil
} }
} }
return "", fmt.Errorf("device name(%s) is not found under %s", devName, diskIDPath) return "", fmt.Errorf("device name(%s) is not found under %s", devName, devLinkPath)
} }
return "", fmt.Errorf("read %s error: %v", diskIDPath, err) return "", fmt.Errorf("read %s error: %v", devLinkPath, err)
} }
func scsiHostRescan(io ioHandler, exec mount.Exec) { func scsiHostRescan(io ioHandler, exec mount.Exec) {
@ -154,20 +155,22 @@ func findDiskByLunWithConstraint(lun int, io ioHandler, azureDisks []string) (st
devName := dev[0].Name() devName := dev[0].Name()
for _, diskName := range azureDisks { for _, diskName := range azureDisks {
glog.V(12).Infof("azureDisk - validating disk %q with sys disk %q", devName, diskName) glog.V(12).Infof("azureDisk - validating disk %q with sys disk %q", devName, diskName)
if string(devName) == diskName { if devName == diskName {
found = true found = true
break break
} }
} }
if !found { if !found {
diskPath, err := getDiskIDByPath(io, devName) devLinkPaths := []string{"/dev/disk/azure/scsi1/", "/dev/disk/by-id/"}
if err == nil { for _, devLinkPath := range devLinkPaths {
glog.V(4).Infof("azureDisk - found %s by %s under /dev/disk/by-id", diskPath, devName) diskPath, err := getDiskLinkByDevName(io, devLinkPath, devName)
return diskPath, nil if err == nil {
} else { glog.V(4).Infof("azureDisk - found %s by %s under %s", diskPath, devName, devLinkPath)
glog.Warningf("azureDisk - getDiskIDByPath by %s failed, error: %v", devName, err) return diskPath, nil
return "/dev/" + devName, nil }
glog.Warningf("azureDisk - getDiskLinkByDevName by %s under %s failed, error: %v", devName, devLinkPath, err)
} }
return "/dev/" + devName, nil
} }
} }
} }