mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
Check for abandoned data when healing (#16122)
This commit is contained in:
@@ -1191,6 +1191,40 @@ func (x *xlMetaV2) setIdx(idx int, ver xlMetaV2Version) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
// getDataDirs will return all data directories in the metadata
|
||||
// as well as all version ids used for inline data.
|
||||
func (x *xlMetaV2) getDataDirs() ([]string, error) {
|
||||
dds := make([]string, len(x.versions)*2)
|
||||
for i, ver := range x.versions {
|
||||
if ver.header.Type == DeleteType {
|
||||
continue
|
||||
}
|
||||
|
||||
obj, err := x.getIdx(i)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
switch ver.header.Type {
|
||||
case ObjectType:
|
||||
if obj.ObjectV2 == nil {
|
||||
return nil, errors.New("obj.ObjectV2 unexpectedly nil")
|
||||
}
|
||||
dds = append(dds, uuid.UUID(obj.ObjectV2.DataDir).String())
|
||||
if obj.ObjectV2.VersionID == [16]byte{} {
|
||||
dds = append(dds, nullVersionID)
|
||||
} else {
|
||||
dds = append(dds, uuid.UUID(obj.ObjectV2.VersionID).String())
|
||||
}
|
||||
case LegacyType:
|
||||
if obj.ObjectV1 == nil {
|
||||
return nil, errors.New("obj.ObjectV1 unexpectedly nil")
|
||||
}
|
||||
dds = append(dds, obj.ObjectV1.DataDir)
|
||||
}
|
||||
}
|
||||
return dds, nil
|
||||
}
|
||||
|
||||
// sortByModTime will sort versions by modtime in descending order,
|
||||
// meaning index 0 will be latest version.
|
||||
func (x *xlMetaV2) sortByModTime() {
|
||||
|
||||
Reference in New Issue
Block a user