code: func (c *sioClient) Devs() (map[string]string, error) {
  	volumeMap := make(map[string]string)
  
  	files, err := c.getSioDiskPaths()
  	if err != nil {
  		return nil, err
  	}
  
  	for _, f := range files {
  		// split emc-vol-<mdmID>-<volumeID> to pull out volumeID
  		parts := strings.Split(f.Name(), "-")
  		if len(parts) != 4 {
  			return nil, errors.New("unexpected ScaleIO device name format")
  		}
  		volumeID := parts[3]
  		devPath, err := filepath.EvalSymlinks(fmt.Sprintf("%s/%s", sioDiskIDPath, f.Name()))
  		if err != nil {
  			klog.Error(log("devicepath-to-volID mapping error: %v", err))
  			return nil, err
  		}
  		// map volumeID to devicePath
  		volumeMap[volumeID] = devPath
  	}
  	return volumeMap, nil
  }
docs: // Devs returns a map of local devices as map[<volume.id>]<deviceName>