12085: Counters support for status tracker.
[arvados.git] / services / keep-web / webdav.go
index 98e6f01987b5de971e005eb1d471b82a5615d3ac..432c6af6d89847068cfbc154a413ade33c5585dc 100644 (file)
@@ -38,11 +38,16 @@ var (
 type webdavFS struct {
        collfs  arvados.CollectionFileSystem
        writing bool
-       reading bool
+       // webdav PROPFIND reads the first few bytes of each file
+       // whose filename extension isn't recognized, which is
+       // prohibitively expensive: we end up fetching multiple 64MiB
+       // blocks. Avoid this by returning EOF on all reads when
+       // handling a PROPFIND.
+       alwaysReadEOF bool
 }
 
 func (fs *webdavFS) makeparents(name string) {
-       dir, name := path.Split(name)
+       dir, _ := path.Split(name)
        if dir == "" || dir == "/" {
                return
        }
@@ -73,13 +78,7 @@ func (fs *webdavFS) OpenFile(ctx context.Context, name string, flag int, perm os
                // have 405.
                f = writeFailer{File: f, err: errReadOnly}
        }
-       if !fs.reading {
-               // webdav PROPFIND reads the first few bytes of each
-               // file whose filename extension isn't recognized,
-               // which is prohibitively expensive: we end up
-               // fetching multiple 64MiB blocks. Avoid this by
-               // returning EOF on all reads when handling a
-               // PROPFIND.
+       if fs.alwaysReadEOF {
                f = readEOF{File: f}
        }
        return