@ -727,21 +727,21 @@ func (er erasureObjects) putObject(ctx context.Context, bucket string, object st
// Whether a disk was initially or becomes offline
// Whether a disk was initially or becomes offline
// during this upload, send it to the MRF list.
// during this upload, send it to the MRF list.
for i := 0 ; i < len ( onlineDisks ) ; i ++ {
for i := 0 ; i < len ( onlineDisks ) ; i ++ {
if onlineDisks [ i ] == nil || storageDisks [ i ] == nil {
if onlineDisks [ i ] != nil && onlineDisks [ i ] . IsOnline ( ) {
continue
}
er . addPartial ( bucket , object , fi . VersionID )
er . addPartial ( bucket , object , fi . VersionID )
break
break
}
}
}
for i := 0 ; i < len ( onlineDisks ) ; i ++ {
for i := 0 ; i < len ( onlineDisks ) ; i ++ {
if onlineDisks [ i ] == nil {
if onlineDisks [ i ] != nil && onlineDisks [ i ] . IsOnline ( ) {
continue
}
// Object info is the same in all disks, so we can pick
// Object info is the same in all disks, so we can pick
// the first meta from online disk
// the first meta from online disk
fi = partsMetadata [ i ]
fi = partsMetadata [ i ]
break
break
}
}
}
return fi . ToObjectInfo ( bucket , object ) , nil
return fi . ToObjectInfo ( bucket , object ) , nil
}
}
@ -922,18 +922,17 @@ func (er erasureObjects) DeleteObjects(ctx context.Context, bucket string, objec
for _ , version := range versions {
for _ , version := range versions {
// Check if there is any offline disk and add it to the MRF list
// Check if there is any offline disk and add it to the MRF list
for _ , disk := range storageDisks {
for _ , disk := range storageDisks {
if disk == nil {
if disk != nil && disk . IsOnline ( ) {
// ignore delete markers for quorum
// Skip attempted heal on online disks.
if version . Deleted {
continue
continue
}
}
// all other direct versionId references we should
// all other direct versionId references we should
// ensure no dangling file is left over.
// ensure no dangling file is left over.
er . addPartial ( bucket , version . Name , version . VersionID )
er . addPartial ( bucket , version . Name , version . VersionID )
break
break
}
}
}
}
}
return dobjects , errs
return dobjects , errs
}
}
@ -1042,11 +1041,12 @@ func (er erasureObjects) DeleteObject(ctx context.Context, bucket, object string
}
}
for _ , disk := range storageDisks {
for _ , disk := range storageDisks {
if disk == nil {
if disk != nil && disk . IsOnline ( ) {
continue
}
er . addPartial ( bucket , object , opts . VersionID )
er . addPartial ( bucket , object , opts . VersionID )
break
break
}
}
}
return ObjectInfo {
return ObjectInfo {
Bucket : bucket ,
Bucket : bucket ,