]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/commitdiff
fuse/impl_a: fix a suspected bug in caching
authorrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 3 Oct 2008 17:13:09 +0000 (10:13 -0700)
committerrobk-tahoe <robk-tahoe@allmydata.com>
Fri, 3 Oct 2008 17:13:09 +0000 (10:13 -0700)
from my examination of the tahoe_fuse ('impl_a') code, it looks like
the intention is to cache the file contents in memory while it's open,
since it does in fact do that.  however it looks like it also ignored
that cache entirely, and made an individual tahoe webapi GET request
for each and every read() operation regardless of the relative size of
the read block and the file in question.

this changes that to make read() use the data in memory rather than
fetch the data over again.   if there's something more subtle going
on, please let me know.

contrib/fuse/impl_a/tahoe_fuse.py

index c9553d3c01f6e337688e211cbc3c65bbd0328103..63868301247f3d30d89e4c98e56d656d90c99c36 100644 (file)
@@ -201,9 +201,11 @@ class TahoeFS (fuse.Fuse):
             return self.rootdir.resolve_path(parts)
     
     def _get_contents(self, path):
-        node = self._get_node(path)
-        contents = node.open().read()
-        self.filecontents[path] = contents
+        contents = self.filecontents.get(path)
+        if contents is None:
+            node = self._get_node(path)
+            contents = node.open().read()
+            self.filecontents[path] = contents
         return contents
     
     @trace_calls