aboutsummaryrefslogtreecommitdiff
path: root/weed/server/webdav_server.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-03-27 04:50:51 -0700
committerChris Lu <chris.lu@gmail.com>2020-03-27 04:50:51 -0700
commitd1439c5bd3813ed6a4dfef6ab6671262b6f97386 (patch)
tree00e39713a68633e84a39fab95dcf8702f7ca5922 /weed/server/webdav_server.go
parentf06ca04451037bf4b250da55d408d06fc691c760 (diff)
downloadseaweedfs-d1439c5bd3813ed6a4dfef6ab6671262b6f97386.tar.xz
seaweedfs-d1439c5bd3813ed6a4dfef6ab6671262b6f97386.zip
fix FUSE read for large files
FUSE expects ReadAt do not return partial filled buffer with a nil error.
Diffstat (limited to 'weed/server/webdav_server.go')
-rw-r--r--weed/server/webdav_server.go9
1 files changed, 4 insertions, 5 deletions
diff --git a/weed/server/webdav_server.go b/weed/server/webdav_server.go
index 350d61721..b3b6e3e8f 100644
--- a/weed/server/webdav_server.go
+++ b/weed/server/webdav_server.go
@@ -90,7 +90,7 @@ type WebDavFile struct {
off int64
entry *filer_pb.Entry
entryViewCache []filer2.VisibleInterval
- reader io.ReadSeeker
+ reader io.ReaderAt
}
func NewWebDavFileSystem(option *WebDavOption) (webdav.FileSystem, error) {
@@ -475,12 +475,11 @@ func (f *WebDavFile) Read(p []byte) (readSize int, err error) {
f.reader = nil
}
if f.reader == nil {
- chunkViews := filer2.ViewFromVisibleIntervals(f.entryViewCache, 0, math.MaxInt64)
- f.reader = filer2.NewChunkStreamReaderFromClient(f.fs, chunkViews)
+ chunkViews := filer2.ViewFromVisibleIntervals(f.entryViewCache, 0, math.MaxInt32)
+ f.reader = filer2.NewChunkReaderAtFromClient(f.fs, chunkViews)
}
- f.reader.Seek(f.off, io.SeekStart)
- readSize, err = f.reader.Read(p)
+ readSize, err = f.reader.ReadAt(p, f.off)
glog.V(3).Infof("WebDavFileSystem.Read %v: [%d,%d)", f.name, f.off, f.off+int64(readSize))
f.off += int64(readSize)