From b70c298c27f29df29956fe3e4c513b2e216d2dc5 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Wed, 14 Apr 2021 22:44:27 -0700 Subject: [PATCH] update findDataDir to skip inline data (#12050) --- cmd/xl-storage-format-v2.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/cmd/xl-storage-format-v2.go b/cmd/xl-storage-format-v2.go index 0eb264189..19f9eb39a 100644 --- a/cmd/xl-storage-format-v2.go +++ b/cmd/xl-storage-format-v2.go @@ -467,6 +467,7 @@ func (x *xlMetaInlineData) replace(key string, value []byte) { plSize += len(foundVal) } } + // Add one more. if !replaced { keys = append(keys, []byte(key)) @@ -1080,12 +1081,16 @@ func (z *xlMetaV2) DeleteVersion(fi FileInfo) (string, bool, error) { } } - findDataDir := func(dataDir [16]byte, versions []xlMetaV2Version) int { + findDataDir := func(v2 *xlMetaV2Object, versions []xlMetaV2Version) int { + // v2 object is inlined, if it is skip dataDir share check. + if z.data.find(uuid.UUID(v2.VersionID).String()) != nil { + return 0 + } var sameDataDirCount int for _, version := range versions { switch version.Type { case ObjectType: - if version.ObjectV2.DataDir == dataDir { + if version.ObjectV2.DataDir == v2.DataDir { sameDataDirCount++ } } @@ -1105,7 +1110,7 @@ func (z *xlMetaV2) DeleteVersion(fi FileInfo) (string, bool, error) { return uuid.UUID(version.ObjectV2.DataDir).String(), len(z.Versions) == 0, nil } z.Versions = append(z.Versions[:i], z.Versions[i+1:]...) - if findDataDir(version.ObjectV2.DataDir, z.Versions) > 0 { + if findDataDir(version.ObjectV2, z.Versions) > 0 { if fi.Deleted { z.Versions = append(z.Versions, ventry) }