aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-08-21 11:49:29 -0700
committerchrislu <chris.lu@gmail.com>2022-08-21 11:49:29 -0700
commit388f82f322fcadfeb91ccaf14109162f1641888a (patch)
treea26ab957d3622017268357758117430837575cda
parent77e4b1376e55e3437d5d18f3fe4c7003882121e8 (diff)
downloadseaweedfs-388f82f322fcadfeb91ccaf14109162f1641888a.tar.xz
seaweedfs-388f82f322fcadfeb91ccaf14109162f1641888a.zip
minor
-rw-r--r--weed/filer/reader_at.go10
1 files changed, 5 insertions, 5 deletions
diff --git a/weed/filer/reader_at.go b/weed/filer/reader_at.go
index 6f9734b7e..9d1fab20a 100644
--- a/weed/filer/reader_at.go
+++ b/weed/filer/reader_at.go
@@ -129,8 +129,7 @@ func (c *ChunkReadAt) doReadAt(p []byte, offset int64) (n int, err error) {
if startOffset < chunk.LogicOffset {
gap := chunk.LogicOffset - startOffset
glog.V(4).Infof("zero [%d,%d)", startOffset, chunk.LogicOffset)
- zero(p, startOffset-offset, gap)
- n += int(min(gap, remaining))
+ n += zero(p, startOffset-offset, gap)
startOffset, remaining = chunk.LogicOffset, remaining-gap
if remaining <= 0 {
break
@@ -166,8 +165,7 @@ func (c *ChunkReadAt) doReadAt(p []byte, offset int64) (n int, err error) {
startOffset = max(startOffset-offset, startOffset-remaining-offset)
}
glog.V(4).Infof("zero2 [%d,%d) of file size %d bytes", startOffset, startOffset+delta, c.fileSize)
- zero(p, startOffset, delta)
- n += int(delta)
+ n += zero(p, startOffset, delta)
}
if err == nil && offset+int64(len(p)) >= c.fileSize {
@@ -206,11 +204,13 @@ func (c *ChunkReadAt) readChunkSliceAt(buffer []byte, chunkView *ChunkView, next
return
}
-func zero(buffer []byte, start, length int64) {
+func zero(buffer []byte, start, length int64) int {
end := min(start+length, int64(len(buffer)))
+ start = max(start, 0)
// zero the bytes
for o := start; o < end; o++ {
buffer[o] = 0
}
+ return int(end - start)
}