save MinIO version with each version (8-bytes extra) (#15170)

store MinIO version along with each version in 'xl.meta'
for future purposes, can be used as ways to add specific
code for bug fixes if any.
This commit is contained in:
Harshavardhana
2022-06-27 03:59:41 -07:00
committed by GitHub
parent 7b9b7cef11
commit 6722f58668
10 changed files with 92 additions and 25 deletions

View File

@@ -178,10 +178,11 @@ type xlMetaV2Object struct {
// on what Type field carries, it is imperative for the caller
// to verify which journal type first before accessing rest of the fields.
type xlMetaV2Version struct {
Type VersionType `json:"Type" msg:"Type"`
ObjectV1 *xlMetaV1Object `json:"V1Obj,omitempty" msg:"V1Obj,omitempty"`
ObjectV2 *xlMetaV2Object `json:"V2Obj,omitempty" msg:"V2Obj,omitempty"`
DeleteMarker *xlMetaV2DeleteMarker `json:"DelObj,omitempty" msg:"DelObj,omitempty"`
Type VersionType `json:"Type" msg:"Type"`
ObjectV1 *xlMetaV1Object `json:"V1Obj,omitempty" msg:"V1Obj,omitempty"`
ObjectV2 *xlMetaV2Object `json:"V2Obj,omitempty" msg:"V2Obj,omitempty"`
DeleteMarker *xlMetaV2DeleteMarker `json:"DelObj,omitempty" msg:"DelObj,omitempty"`
WrittenByVersion uint64 `msg:"v"` // Tracks written by MinIO version
}
// xlFlags contains flags on the object.
@@ -409,16 +410,22 @@ func (j xlMetaV2Version) getVersionID() [16]byte {
}
// ToFileInfo returns FileInfo of the underlying type.
func (j *xlMetaV2Version) ToFileInfo(volume, path string) (FileInfo, error) {
func (j *xlMetaV2Version) ToFileInfo(volume, path string) (fi FileInfo, err error) {
if j == nil {
return fi, errFileNotFound
}
switch j.Type {
case ObjectType:
return j.ObjectV2.ToFileInfo(volume, path)
fi, err = j.ObjectV2.ToFileInfo(volume, path)
case DeleteType:
return j.DeleteMarker.ToFileInfo(volume, path)
fi, err = j.DeleteMarker.ToFileInfo(volume, path)
case LegacyType:
return j.ObjectV1.ToFileInfo(volume, path)
fi, err = j.ObjectV1.ToFileInfo(volume, path)
default:
return fi, errFileNotFound
}
return FileInfo{}, errFileNotFound
fi.WrittenByVersion = j.WrittenByVersion
return fi, err
}
const (
@@ -1424,7 +1431,9 @@ func (x *xlMetaV2) AddVersion(fi FileInfo) error {
}
}
ventry := xlMetaV2Version{}
ventry := xlMetaV2Version{
WrittenByVersion: fi.WrittenByVersion,
}
if fi.Deleted {
ventry.Type = DeleteType