mirror of
https://github.com/minio/minio.git
synced 2025-11-20 09:56:07 -05:00
Refactor of xl.PutObjectPart and erasureCreateFile. (#2193)
* XL: Refactor of xl.PutObjectPart and erasureCreateFile. * GetCheckSum and AddCheckSum methods for xlMetaV1 * Simple unit test case for erasureCreateFile()
This commit is contained in:
committed by
Harshavardhana
parent
af6109f89a
commit
b090c7112e
@@ -163,6 +163,27 @@ func (m *xlMetaV1) AddObjectPart(partNumber int, partName string, partETag strin
|
||||
sort.Sort(byObjectPartNumber(m.Parts))
|
||||
}
|
||||
|
||||
// AddCheckSum - add checksum of a part.
|
||||
func (m *xlMetaV1) AddCheckSum(partName, algorithm, checkSum string) {
|
||||
for i, sum := range m.Erasure.Checksum {
|
||||
if sum.Name == partName {
|
||||
m.Erasure.Checksum[i] = checkSumInfo{partName, "blake2b", checkSum}
|
||||
return
|
||||
}
|
||||
}
|
||||
m.Erasure.Checksum = append(m.Erasure.Checksum, checkSumInfo{partName, "blake2b", checkSum})
|
||||
}
|
||||
|
||||
// GetCheckSum - get checksum of a part.
|
||||
func (m *xlMetaV1) GetCheckSum(partName string) (checkSum, algorithm string, err error) {
|
||||
for _, sum := range m.Erasure.Checksum {
|
||||
if sum.Name == partName {
|
||||
return sum.Hash, sum.Algorithm, nil
|
||||
}
|
||||
}
|
||||
return "", "", errUnexpected
|
||||
}
|
||||
|
||||
// ObjectToPartOffset - translate offset of an object to offset of its individual part.
|
||||
func (m xlMetaV1) ObjectToPartOffset(offset int64) (partIndex int, partOffset int64, err error) {
|
||||
if offset == 0 {
|
||||
@@ -187,10 +208,11 @@ func (m xlMetaV1) ObjectToPartOffset(offset int64) (partIndex int, partOffset in
|
||||
// pickValidXLMeta - picks one valid xlMeta content and returns from a
|
||||
// slice of xlmeta content. If no value is found this function panics
|
||||
// and dies.
|
||||
func pickValidXLMeta(xlMetas []xlMetaV1) xlMetaV1 {
|
||||
for _, xlMeta := range xlMetas {
|
||||
if xlMeta.IsValid() {
|
||||
return xlMeta
|
||||
func pickValidXLMeta(metaArr []xlMetaV1, modTime time.Time) xlMetaV1 {
|
||||
// Pick latest valid metadata.
|
||||
for _, meta := range metaArr {
|
||||
if meta.IsValid() && meta.Stat.ModTime == modTime {
|
||||
return meta
|
||||
}
|
||||
}
|
||||
panic("Unable to look for valid XL metadata content")
|
||||
|
||||
Reference in New Issue
Block a user