Tweak readall allocation and renameData buffer reuse (#13108)

Use a single allocation for reading the file, not the growing buffer of `io.ReadAll`.

Reuse the write buffer if we can when writing metadata in RenameData.
This commit is contained in:
Klaus Post 2021-08-30 17:38:11 +02:00 committed by GitHub
parent 88e0aa1cb2
commit 470553ff5d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 4 deletions

View File

@ -2091,7 +2091,8 @@ func (s *xlStorage) RenameData(ctx context.Context, srcVolume, srcPath string, f
return err
}
dstBuf, err = xlMeta.AppendTo(nil)
dstBuf, err = xlMeta.AppendTo(metaDataPoolGet())
defer metaDataPoolPut(dstBuf)
if err != nil {
logger.LogIf(ctx, err)
if legacyPreserved {

View File

@ -135,7 +135,7 @@ GLOBAL FLAGS:
}
data = b
default:
return errors.New("unknown metadata version")
return fmt.Errorf("unknown metadata version %d", minor)
}
if c.Bool("data") {

View File

@ -34,6 +34,11 @@ func ReadFile(name string) ([]byte, error) {
return nil, err
}
defer f.Close()
return io.ReadAll(f)
st, err := f.Stat()
if err != nil {
return io.ReadAll(f)
}
dst := make([]byte, st.Size())
_, err = io.ReadFull(f, dst)
return dst, err
}