diff --git a/cmd/erasure-healing.go b/cmd/erasure-healing.go index 74ec2e216..86b88f2aa 100644 --- a/cmd/erasure-healing.go +++ b/cmd/erasure-healing.go @@ -102,16 +102,13 @@ func healBucket(ctx context.Context, storageDisks []StorageAPI, storageEndpoints errs := g.Wait() - reducedErr := reduceWriteQuorumErrs(ctx, errs, bucketOpIgnoredErrs, writeQuorum-1) - if errors.Is(reducedErr, errVolumeNotFound) && !opts.Recreate { - return res, nil - } - // Initialize heal result info res = madmin.HealResultItem{ - Type: madmin.HealItemBucket, - Bucket: bucket, - DiskCount: len(storageDisks), + Type: madmin.HealItemBucket, + Bucket: bucket, + DiskCount: len(storageDisks), + ParityBlocks: len(storageDisks) / 2, + DataBlocks: len(storageDisks) / 2, } for i := range beforeState { @@ -122,6 +119,18 @@ func healBucket(ctx context.Context, storageDisks []StorageAPI, storageEndpoints }) } + reducedErr := reduceWriteQuorumErrs(ctx, errs, bucketOpIgnoredErrs, writeQuorum-1) + if errors.Is(reducedErr, errVolumeNotFound) && !opts.Recreate { + for i := range beforeState { + res.After.Drives = append(res.After.Drives, madmin.HealDriveInfo{ + UUID: "", + Endpoint: storageEndpoints[i], + State: madmin.DriveStateOk, + }) + } + return res, nil + } + // Initialize sync waitgroup. g = errgroup.WithNErrs(len(storageDisks)) diff --git a/cmd/erasure-metadata-utils.go b/cmd/erasure-metadata-utils.go index 4e33d04f9..054e4e1c9 100644 --- a/cmd/erasure-metadata-utils.go +++ b/cmd/erasure-metadata-utils.go @@ -128,7 +128,12 @@ func readAllFileInfo(ctx context.Context, disks []StorageAPI, bucket, object, ve } metadataArray[index], err = disks[index].ReadVersion(ctx, bucket, object, versionID, readData) if err != nil { - if !IsErr(err, errFileNotFound, errVolumeNotFound, errFileVersionNotFound, errDiskNotFound) { + if !IsErr(err, []error{ + errFileNotFound, + errVolumeNotFound, + errFileVersionNotFound, + errDiskNotFound, + }...) { logger.LogOnceIf(ctx, err, disks[index].String()) } }