Try to clean up the locking for LRU lists.
[bluesky.git] / bluesky / inode.c
index 4f970fe..ee63820 100644 (file)
@@ -342,12 +342,15 @@ static void complete_inode_fetch(BlueSkyStoreAsync *async, BlueSkyInode *inode)
         g_print("    failed to load inode, cleaning up\n");
         g_mutex_lock(inode->fs->lock);
         g_hash_table_remove(inode->fs->inodes, &inode->inum);
+        bluesky_list_unlink(&inode->fs->accessed_list, inode->accessed_list);
+        inode->accessed_list = NULL;
         g_mutex_unlock(inode->fs->lock);
         bluesky_inode_unref(inode);
     }
 
     inode->access_time = bluesky_get_current_time();
     g_mutex_lock(inode->fs->lock);
+    bluesky_list_unlink(&inode->fs->accessed_list, inode->accessed_list);
     inode->accessed_list = bluesky_list_prepend(&inode->fs->accessed_list, inode);
     g_mutex_unlock(inode->fs->lock);