mirror of
https://github.com/pgsty/minio.git
synced 2026-08-11 00:33:28 +03:00
committed by
Harshavardhana
parent
c87f259820
commit
feb337098d
+7
-37
@@ -1,9 +1,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"path"
|
||||
"sort"
|
||||
)
|
||||
@@ -22,28 +20,6 @@ type fsMetaV1 struct {
|
||||
Parts []objectPartInfo `json:"parts,omitempty"`
|
||||
}
|
||||
|
||||
// ReadFrom - read from implements io.ReaderFrom interface for
|
||||
// unmarshalling fsMetaV1.
|
||||
func (m *fsMetaV1) ReadFrom(reader io.Reader) (n int64, err error) {
|
||||
var buffer bytes.Buffer
|
||||
n, err = buffer.ReadFrom(reader)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
err = json.Unmarshal(buffer.Bytes(), m)
|
||||
return n, err
|
||||
}
|
||||
|
||||
// WriteTo - write to implements io.WriterTo interface for marshalling fsMetaV1.
|
||||
func (m fsMetaV1) WriteTo(writer io.Writer) (n int64, err error) {
|
||||
metadataBytes, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
p, err := writer.Write(metadataBytes)
|
||||
return int64(p), err
|
||||
}
|
||||
|
||||
// ObjectPartIndex - returns the index of matching object part number.
|
||||
func (m fsMetaV1) ObjectPartIndex(partNumber int) (partIndex int) {
|
||||
for i, part := range m.Parts {
|
||||
@@ -81,12 +57,12 @@ func (m *fsMetaV1) AddObjectPart(partNumber int, partName string, partETag strin
|
||||
|
||||
// readFSMetadata - returns the object metadata `fs.json` content.
|
||||
func (fs fsObjects) readFSMetadata(bucket, object string) (fsMeta fsMetaV1, err error) {
|
||||
r, err := fs.storage.ReadFile(bucket, path.Join(object, fsMetaJSONFile), int64(0))
|
||||
buffer := make([]byte, blockSize)
|
||||
n, err := fs.storage.ReadFile(bucket, path.Join(object, fsMetaJSONFile), int64(0), buffer)
|
||||
if err != nil {
|
||||
return fsMetaV1{}, err
|
||||
}
|
||||
defer r.Close()
|
||||
_, err = fsMeta.ReadFrom(r)
|
||||
err = json.Unmarshal(buffer[:n], &fsMeta)
|
||||
if err != nil {
|
||||
return fsMetaV1{}, err
|
||||
}
|
||||
@@ -104,22 +80,16 @@ func newFSMetaV1() (fsMeta fsMetaV1) {
|
||||
|
||||
// writeFSMetadata - writes `fs.json` metadata.
|
||||
func (fs fsObjects) writeFSMetadata(bucket, prefix string, fsMeta fsMetaV1) error {
|
||||
w, err := fs.storage.CreateFile(bucket, path.Join(prefix, fsMetaJSONFile))
|
||||
metadataBytes, err := json.Marshal(fsMeta)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = fsMeta.WriteTo(w)
|
||||
n, err := fs.storage.AppendFile(bucket, path.Join(prefix, fsMetaJSONFile), metadataBytes)
|
||||
if err != nil {
|
||||
if mErr := safeCloseAndRemove(w); mErr != nil {
|
||||
return mErr
|
||||
}
|
||||
return err
|
||||
}
|
||||
if err = w.Close(); err != nil {
|
||||
if mErr := safeCloseAndRemove(w); mErr != nil {
|
||||
return mErr
|
||||
}
|
||||
return err
|
||||
if n != int64(len(metadataBytes)) {
|
||||
return errUnexpected
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user