code: func (attacher *rbdAttacher) WaitForAttach(spec *volume.Spec, devicePath string, pod *v1.Pod, timeout time.Duration) (string, error) {
  	klog.V(4).Infof("rbd: waiting for attach volume (name: %s) for pod (name: %s, uid: %s)", spec.Name(), pod.Name, pod.UID)
  	mounter, err := attacher.plugin.createMounterFromVolumeSpecAndPod(spec, pod)
  	if err != nil {
  		klog.Warningf("failed to create mounter: %v", spec)
  		return "", err
  	}
  	realDevicePath, err := attacher.manager.AttachDisk(*mounter)
  	if err != nil {
  		return "", err
  	}
  	klog.V(3).Infof("rbd: successfully wait for attach volume (spec: %s, pool: %s, image: %s) at %s", spec.Name(), mounter.Pool, mounter.Image, realDevicePath)
  	return realDevicePath, nil
  }
docs: // WaitForAttach implements Attacher.WaitForAttach. It's called by kubelet to
  // attach volume onto the node.
  // This method is idempotent, callers are responsible for retrying on failure.