projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '18682-use-keyrings-instead-of-key-ids'
[arvados.git]
/
services
/
fuse
/
arvados_fuse
/
fresh.py
diff --git
a/services/fuse/arvados_fuse/fresh.py
b/services/fuse/arvados_fuse/fresh.py
index 2075741dbd64b923b37a8ca6da84808bbbb83cc2..53214ee94d70b214f79e3cca5c5193a41ebe2567 100644
(file)
--- a/
services/fuse/arvados_fuse/fresh.py
+++ b/
services/fuse/arvados_fuse/fresh.py
@@
-1,3
+1,8
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+from builtins import object
import time
import ciso8601
import calendar
import time
import ciso8601
import calendar
@@
-8,7
+13,7
@@
def convertTime(t):
if not t:
return 0
try:
if not t:
return 0
try:
- return calendar.timegm(ciso8601.parse_datetime_
unawar
e(t).timetuple())
+ return calendar.timegm(ciso8601.parse_datetime_
as_naiv
e(t).timetuple())
except (TypeError, ValueError):
return 0
except (TypeError, ValueError):
return 0
@@
-55,6
+60,10
@@
class FreshBase(object):
* Clear the object contents (invalidates the 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
def __init__(self):
self._stale = True
self._poll = False
@@
-64,16
+73,20
@@
class FreshBase(object):
self.use_count = 0
self.ref_count = 0
self.dead = False
self.use_count = 0
self.ref_count = 0
self.dead = False
- self.cache_priority = None
self.cache_size = 0
self.cache_uuid = None
self.cache_size = 0
self.cache_uuid = None
+
+ # Can the kernel cache attributes?
self.allow_attr_cache = True
self.allow_attr_cache = True
- self.allow_dirent_cache = True
- # Mark the value as stale
def invalidate(self):
def invalidate(self):
+ """Indicate that object contents should be refreshed from source."""
self._stale = True
self._stale = True
+ def kernel_invalidate(self):
+ """Indicate that an invalidation for this object should be sent to the kernel."""
+ pass
+
# Test if the entries dict is stale.
def stale(self):
if self._stale:
# Test if the entries dict is stale.
def stale(self):
if self._stale:
@@
-92,7
+105,7
@@
class FreshBase(object):
def persisted(self):
return False
def persisted(self):
return False
- def clear(self
, force=False
):
+ def clear(self):
pass
def in_use(self):
pass
def in_use(self):
@@
-112,6
+125,18
@@
class FreshBase(object):
self.ref_count -= n
return self.ref_count
self.ref_count -= n
return self.ref_count
+ def has_ref(self, only_children):
+ """Determine if there are any kernel references to this
+ object or its children.
+
+ If only_children is True, ignore refcount of self and only consider
+ children.
+ """
+ if only_children:
+ return False
+ else:
+ return self.ref_count > 0
+
def objsize(self):
return 0
def objsize(self):
return 0
@@
-120,3
+145,16
@@
class FreshBase(object):
def finalize(self):
pass
def finalize(self):
pass
+
+ 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