X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/408cbfd4f3737ef5bfbf908d96ac9c469fcf6cdd..b17f04b7797eda5a5d888264f7d480d762a9966f:/services/fuse/arvados_fuse/fresh.py diff --git a/services/fuse/arvados_fuse/fresh.py b/services/fuse/arvados_fuse/fresh.py index a51dd909b6..2a3a19c54c 100644 --- a/services/fuse/arvados_fuse/fresh.py +++ b/services/fuse/arvados_fuse/fresh.py @@ -59,6 +59,10 @@ class FreshBase(object): * Clear the object contents (invalidates the object) """ + + __slots__ = ("_stale", "_poll", "_last_update", "_atime", "_poll_time", "use_count", + "ref_count", "dead", "cache_size", "cache_uuid", "allow_attr_cache") + def __init__(self): self._stale = True self._poll = False @@ -70,8 +74,9 @@ class FreshBase(object): self.dead = False self.cache_size = 0 self.cache_uuid = None + + # Can the kernel cache attributes? self.allow_attr_cache = True - self.allow_dirent_cache = True def invalidate(self): """Indicate that object contents should be refreshed from source.""" @@ -142,3 +147,13 @@ class FreshBase(object): def child_event(self, ev): pass + + def time_to_next_poll(self): + if self._poll: + t = (self._last_update + self._poll_time) - self._atime + if t < 0: + return 0 + else: + return t + else: + return self._poll_time