Send length instead of empty buffer for ReadFile() (#6414)

master
Krishna Srinivas 6 years ago committed by Harshavardhana
parent 9e32cc283f
commit 81b7e5c7a8
  1. 2
      cmd/storage-rpc-client.go
  2. 7
      cmd/storage-rpc-server.go

@ -227,7 +227,7 @@ func (client *StorageRPCClient) ReadFile(volume string, path string, offset int6
Vol: volume, Vol: volume,
Path: path, Path: path,
Offset: offset, Offset: offset,
Buffer: buffer, Length: int64(len(buffer)),
Verified: true, // mark read as verified by default Verified: true, // mark read as verified by default
} }
if verifier != nil { if verifier != nil {

@ -127,7 +127,7 @@ type ReadFileArgs struct {
Vol string Vol string
Path string Path string
Offset int64 Offset int64
Buffer []byte Length int64
Algo BitrotAlgorithm Algo BitrotAlgorithm
ExpectedHash []byte ExpectedHash []byte
Verified bool Verified bool
@ -140,13 +140,14 @@ func (receiver *storageRPCReceiver) ReadFile(args *ReadFileArgs, reply *[]byte)
verifier = NewBitrotVerifier(args.Algo, args.ExpectedHash) verifier = NewBitrotVerifier(args.Algo, args.ExpectedHash)
} }
n, err := receiver.local.ReadFile(args.Vol, args.Path, args.Offset, args.Buffer, verifier) buf := make([]byte, args.Length)
n, err := receiver.local.ReadFile(args.Vol, args.Path, args.Offset, buf, verifier)
// Ignore io.ErrEnexpectedEOF for short reads i.e. less content available than requested. // Ignore io.ErrEnexpectedEOF for short reads i.e. less content available than requested.
if err == io.ErrUnexpectedEOF { if err == io.ErrUnexpectedEOF {
err = nil err = nil
} }
*reply = args.Buffer[0:n] *reply = buf[0:n]
return err return err
} }

Loading…
Cancel
Save