diff --git a/cmd/erasure-healing.go b/cmd/erasure-healing.go index 3b8216195..fdca9299a 100644 --- a/cmd/erasure-healing.go +++ b/cmd/erasure-healing.go @@ -632,15 +632,15 @@ func defaultHealResult(lfi FileInfo, storageDisks []StorageAPI, storageEndpoints VersionID: versionID, DiskCount: len(storageDisks), } + if lfi.IsValid() { result.ObjectSize = lfi.Size result.ParityBlocks = lfi.Erasure.ParityBlocks - result.DataBlocks = lfi.Erasure.DataBlocks } else { // Default to most common configuration for erasure blocks. result.ParityBlocks = defaultParityCount - result.DataBlocks = len(storageDisks) - defaultParityCount } + result.DataBlocks = len(storageDisks) - result.ParityBlocks if errs == nil { // No disks related errors are provided, quit @@ -750,8 +750,13 @@ func (er erasureObjects) purgeObjectDangling(ctx context.Context, bucket, object // remove we simply delete it from namespace. m, ok := isObjectDangling(metaArr, errs, dataErrs) if ok { - writeQuorum := m.Erasure.DataBlocks - if m.Erasure.DataBlocks == 0 || m.Erasure.DataBlocks == m.Erasure.ParityBlocks { + parityBlocks := m.Erasure.ParityBlocks + if m.Erasure.ParityBlocks == 0 { + parityBlocks = er.defaultParityCount + } + dataBlocks := len(storageDisks) - parityBlocks + writeQuorum := dataBlocks + if dataBlocks == parityBlocks { writeQuorum++ } var err error