[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