[ARVADOS] created: 1.1.2-14-geae6972
Git user
git at public.curoverse.com
Fri Jan 5 14:40:49 EST 2018
at eae6972da6ffbf73d31fd47138cb49c13fed77de (commit)
commit eae6972da6ffbf73d31fd47138cb49c13fed77de
Author: Peter Amstutz <pamstutz at veritasgenetics.com>
Date: Fri Jan 5 19:39:51 2018 +0000
12870: Don't send invalidation for inodes still referenced by kernel
When trying to flush cached inode contents, invalidating dentries
which are still referenced can race with lookups, causing the kernel to return
spurious "not found" errors.
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz at veritasgenetics.com>
diff --git a/services/fuse/arvados_fuse/__init__.py b/services/fuse/arvados_fuse/__init__.py
index 418f748..788d475 100644
--- a/services/fuse/arvados_fuse/__init__.py
+++ b/services/fuse/arvados_fuse/__init__.py
@@ -159,10 +159,11 @@ class InodeCache(object):
if obj.in_use():
_logger.debug("InodeCache cannot clear inode %i, in use", obj.inode)
return
- obj.kernel_invalidate()
if obj.has_ref(True):
- _logger.debug("InodeCache sent kernel invalidate inode %i", obj.inode)
+ _logger.debug("InodeCache cannot clear inode %i, still referenced", obj.inode)
return
+ obj.kernel_invalidate()
+ _logger.debug("InodeCache sent kernel invalidate inode %i", obj.inode)
obj.clear()
# The llfuse lock is released in del_entry(), which is called by
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list