diff --git a/lib/install/management/store_files.go b/lib/install/management/store_files.go index 2046fb7ab6..1c432ab6b1 100644 --- a/lib/install/management/store_files.go +++ b/lib/install/management/store_files.go @@ -158,23 +158,22 @@ func (d *Dispatcher) isVSAN(ds *object.Datastore) bool { func (d *Dispatcher) deleteFilesIteratively(m *object.DatastoreFileManager, ds *object.Datastore, dsPath string) error { defer trace.End(trace.Begin(dsPath, d.op)) - if d.isVSAN(ds) { - // Get sorted result to make sure child files are listed ahead of their parent folder so we empty the folder before deleting it. - // This behaviour is specifically for vSan, as vSan sometimes throws an error when deleting a folder that is not empty. - res, err := d.getSortedChildren(ds, dsPath) - if err != nil { - if !types.IsFileNotFound(err) { - err = errors.Errorf("Failed to browse sub folders %q: %s", dsPath, err) - return err - } - d.op.Debugf("Folder %q is not found", dsPath) - return nil + // Get sorted result to make sure child files are listed ahead of their parent folder so we empty the folder before deleting it. + // This behaviour was specifically for vSan, as vSan sometimes throws an error when deleting a folder that is not empty. + // Sometimes for non-vSAN type datastores, deleting non-empty directories would throw error as well + res, err := d.getSortedChildren(ds, dsPath) + if err != nil { + if !types.IsFileNotFound(err) { + err = errors.Errorf("Failed to browse sub folders %q: %s", dsPath, err) + return err } + d.op.Debugf("Folder %q is not found", dsPath) + return nil + } - for _, path := range res { - if err = d.deleteVMFSFiles(m, ds, path); err != nil { - return err - } + for _, path := range res { + if err = d.deleteVMFSFiles(m, ds, path); err != nil { + return err } }