code: func (util *fcUtil) DetachDisk(c fcDiskUnmounter, devicePath string) error {
  	var devices []string
  	// devicePath might be like /dev/mapper/mpathX. Find destination.
  	dstPath, err := c.io.EvalSymlinks(devicePath)
  	if err != nil {
  		return err
  	}
  	// Find slave
  	if strings.HasPrefix(dstPath, "/dev/dm-") {
  		devices = c.deviceUtil.FindSlaveDevicesOnMultipath(dstPath)
  	} else {
  		// Add single devicepath to devices
  		devices = append(devices, dstPath)
  	}
  	klog.V(4).Infof("fc: DetachDisk devicePath: %v, dstPath: %v, devices: %v", devicePath, dstPath, devices)
  	var lastErr error
  	for _, device := range devices {
  		err := util.detachFCDisk(c.io, device)
  		if err != nil {
  			klog.Errorf("fc: detachFCDisk failed. device: %v err: %v", device, err)
  			lastErr = fmt.Errorf("fc: detachFCDisk failed. device: %v err: %v", device, err)
  		}
  	}
  	if lastErr != nil {
  		klog.Errorf("fc: last error occurred during detach disk:\n%v", lastErr)
  		return lastErr
  	}
  	return nil
  }
docs: // DetachDisk removes scsi device file such as /dev/sdX from the node.