code: func (p *nfsProvisioner) Delete(volume *v1.PersistentVolume) error {
  	// Ignore the call if this provisioner was not the one to provision the
  	// volume. It doesn't even attempt to delete it, so it's neither a success
  	// (nil error) nor failure (any other error)
  	provisioned, err := p.provisioned(volume)
  	if err != nil {
  		return fmt.Errorf("error determining if this provisioner was the one to provision volume %q: %v", volume.Name, err)
  	}
  	if !provisioned {
  		strerr := fmt.Sprintf("this provisioner id %s didn't provision volume %q and so can't delete it; id %s did & can", p.identity, volume.Name, volume.Annotations[annProvisionerID])
  		return &controller.IgnoredError{Reason: strerr}
  	}
  
  	err = p.deleteDirectory(volume)
  	if err != nil {
  		return fmt.Errorf("error deleting volume's backing path: %v", err)
  	}
  
  	err = p.deleteExport(volume)
  	if err != nil {
  		return fmt.Errorf("deleted the volume's backing path but error deleting export: %v", err)
  	}
  
  	err = p.deleteQuota(volume)
  	if err != nil {
  		return fmt.Errorf("deleted the volume's backing path & export but error deleting quota: %v", err)
  	}
  
  	return nil
  }
docs: // Delete removes the directory that was created by Provision backing the given
  // PV and removes its export from the NFS server.