code: func (c *iscsiDiskUnmapper) TearDownDevice(mapPath, _ string) error {
  	err := c.manager.DetachBlockISCSIDisk(*c, mapPath)
  	if err != nil {
  		return fmt.Errorf("iscsi: failed to detach disk: %s\nError: %v", mapPath, err)
  	}
  	klog.V(4).Infof("iscsi: %q is unmounted, deleting the directory", mapPath)
  	err = os.RemoveAll(mapPath)
  	if err != nil {
  		return fmt.Errorf("iscsi: failed to delete the directory: %s\nError: %v", mapPath, err)
  	}
  	klog.V(4).Infof("iscsi: successfully detached disk: %s", mapPath)
  	return nil
  }
docs: // Even though iSCSI plugin has attacher/detacher implementation, iSCSI plugin
  // needs volume detach operation during TearDownDevice(). This method is only
  // chance that operations are done on kubelet node during volume teardown sequences.