code: func (util *DiskUtil) AttachDisk(b *cinderVolumeMounter, globalPDPath string) error {
  	options := []string{}
  	if b.readOnly {
  		options = append(options, "ro")
  	}
  	cloud, err := b.plugin.getCloudProvider()
  	if err != nil {
  		return err
  	}
  	instanceid, err := cloud.InstanceID()
  	if err != nil {
  		return err
  	}
  	diskid, err := cloud.AttachDisk(instanceid, b.pdName)
  	if err != nil {
  		return err
  	}
  
  	var devicePath string
  	numTries := 0
  	for {
  		devicePath = cloud.GetDevicePath(diskid)
  		probeAttachedVolume()
  
  		_, err := os.Stat(devicePath)
  		if err == nil {
  			break
  		}
  		if err != nil && !os.IsNotExist(err) {
  			return err
  		}
  		numTries++
  		if numTries == 10 {
  			return errors.New("Could not attach disk: Timeout after 60s")
  		}
  		time.Sleep(time.Second * 6)
  	}
  	notmnt, err := b.mounter.IsLikelyNotMountPoint(globalPDPath)
  	if err != nil {
  		if os.IsNotExist(err) {
  			if err := os.MkdirAll(globalPDPath, 0750); err != nil {
  				return err
  			}
  			notmnt = true
  		} else {
  			return err
  		}
  	}
  	if notmnt {
  		err = b.blockDeviceMounter.FormatAndMount(devicePath, globalPDPath, b.fsType, options)
  		if err != nil {
  			os.Remove(globalPDPath)
  			return err
  		}
  		klog.V(2).Infof("Safe mount successful: %q\n", devicePath)
  	}
  	return nil
  }
docs: // AttachDisk attaches a disk specified by a volume.CinderPersistenDisk to the current kubelet.
  // Mounts the disk to its global path.