]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Use io.ReadFull in fs reads
authorMatt Joiner <anacrolix@gmail.com>
Mon, 15 Feb 2021 04:53:32 +0000 (15:53 +1100)
committerMatt Joiner <anacrolix@gmail.com>
Mon, 15 Feb 2021 04:53:32 +0000 (15:53 +1100)
fs/file_handle.go

index 41517296b2a0680ff4e59b2c5d49b3607fd8fbc7..0ba6d2e8decb81e12e6252f2ea92ebf9a583a389 100644 (file)
@@ -3,6 +3,7 @@ package torrentfs
 import (
        "context"
        "io"
+       "log"
 
        "bazil.org/fuse"
        "bazil.org/fuse/fs"
@@ -26,7 +27,8 @@ func (me fileHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse
        if req.Dir {
                panic("read on directory")
        }
-       pos, err := me.r.Seek(req.Offset, io.SeekStart)
+       r := me.r
+       pos, err := r.Seek(req.Offset, io.SeekStart)
        if err != nil {
                panic(err)
        }
@@ -44,10 +46,15 @@ func (me fileHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fuse
                me.fn.FS.event.Broadcast()
                me.fn.FS.mu.Unlock()
                var n int
-               r := missinggo.ContextedReader{me.r, ctx}
-               n, readErr = r.Read(resp.Data)
-               if readErr == io.EOF {
-                       readErr = nil
+               r := missinggo.ContextedReader{r, ctx}
+               log.Printf("reading %v bytes at %v", len(resp.Data), req.Offset)
+               if true {
+                       n, readErr = io.ReadFull(r, resp.Data)
+               } else {
+                       n, readErr = r.Read(resp.Data)
+                       if readErr == io.EOF {
+                               readErr = nil
+                       }
                }
                resp.Data = resp.Data[:n]
        }()