Lines Matching refs:cache
99 static void cachefiles_mark_object_buried(struct cachefiles_cache *cache, in cachefiles_mark_object_buried() argument
108 write_lock(&cache->active_lock); in cachefiles_mark_object_buried()
110 p = cache->active_nodes.rb_node; in cachefiles_mark_object_buried()
121 write_unlock(&cache->active_lock); in cachefiles_mark_object_buried()
141 write_unlock(&cache->active_lock); in cachefiles_mark_object_buried()
148 static int cachefiles_mark_object_active(struct cachefiles_cache *cache, in cachefiles_mark_object_active() argument
158 write_lock(&cache->active_lock); in cachefiles_mark_object_active()
167 _p = &cache->active_nodes.rb_node; in cachefiles_mark_object_active()
184 rb_insert_color(&object->active_node, &cache->active_nodes); in cachefiles_mark_object_active()
186 write_unlock(&cache->active_lock); in cachefiles_mark_object_active()
200 write_unlock(&cache->active_lock); in cachefiles_mark_object_active()
250 cache->cache.ops->put_object(&xobject->fscache); in cachefiles_mark_object_active()
255 cache->cache.ops->put_object(&xobject->fscache); in cachefiles_mark_object_active()
267 static int cachefiles_bury_object(struct cachefiles_cache *cache, in cachefiles_bury_object() argument
286 path.mnt = cache->mnt; in cachefiles_bury_object()
290 cachefiles_io_error(cache, "Unlink security error"); in cachefiles_bury_object()
295 cachefiles_mark_object_buried(cache, rep, why); in cachefiles_bury_object()
301 cachefiles_io_error(cache, "Unlink failed"); in cachefiles_bury_object()
315 (uint32_t) atomic_inc_return(&cache->gravecounter)); in cachefiles_bury_object()
318 trap = lock_rename(cache->graveyard, dir); in cachefiles_bury_object()
324 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
329 if (!d_can_lookup(cache->graveyard)) { in cachefiles_bury_object()
330 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
331 cachefiles_io_error(cache, "Graveyard no longer a directory"); in cachefiles_bury_object()
336 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
337 cachefiles_io_error(cache, "May not make directory loop"); in cachefiles_bury_object()
342 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
343 cachefiles_io_error(cache, "Mountpoint in cache"); in cachefiles_bury_object()
347 grave = lookup_one_len(nbuffer, cache->graveyard, strlen(nbuffer)); in cachefiles_bury_object()
349 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
356 cachefiles_io_error(cache, "Lookup error %ld", in cachefiles_bury_object()
362 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
370 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
372 cachefiles_io_error(cache, "Mountpoint in graveyard"); in cachefiles_bury_object()
378 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
380 cachefiles_io_error(cache, "May not make directory loop"); in cachefiles_bury_object()
385 path.mnt = cache->mnt; in cachefiles_bury_object()
387 path_to_graveyard.mnt = cache->mnt; in cachefiles_bury_object()
388 path_to_graveyard.dentry = cache->graveyard; in cachefiles_bury_object()
391 cachefiles_io_error(cache, "Rename security error %d", ret); in cachefiles_bury_object()
394 d_inode(cache->graveyard), grave, NULL, 0); in cachefiles_bury_object()
396 cachefiles_io_error(cache, in cachefiles_bury_object()
400 cachefiles_mark_object_buried(cache, rep, why); in cachefiles_bury_object()
403 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
412 int cachefiles_delete_object(struct cachefiles_cache *cache, in cachefiles_delete_object() argument
438 ret = cachefiles_bury_object(cache, dir, in cachefiles_delete_object()
464 struct cachefiles_cache *cache; in cachefiles_walk_to_object() local
475 cache = container_of(parent->fscache.cache, in cachefiles_walk_to_object()
476 struct cachefiles_cache, cache); in cachefiles_walk_to_object()
477 path.mnt = cache->mnt; in cachefiles_walk_to_object()
527 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_walk_to_object()
556 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_walk_to_object()
609 ret = cachefiles_bury_object(cache, dir, next, true, in cachefiles_walk_to_object()
624 ret = cachefiles_mark_object_active(cache, object); in cachefiles_walk_to_object()
678 cachefiles_io_error(cache, "Create/mkdir failed"); in cachefiles_walk_to_object()
687 write_lock(&cache->active_lock); in cachefiles_walk_to_object()
688 rb_erase(&object->active_node, &cache->active_nodes); in cachefiles_walk_to_object()
691 write_unlock(&cache->active_lock); in cachefiles_walk_to_object()
705 cachefiles_io_error(cache, "Lookup failed"); in cachefiles_walk_to_object()
720 struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache, in cachefiles_get_directory() argument
748 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_get_directory()
754 path.mnt = cache->mnt; in cachefiles_get_directory()
826 static struct dentry *cachefiles_check_active(struct cachefiles_cache *cache, in cachefiles_check_active() argument
862 read_lock(&cache->active_lock); in cachefiles_check_active()
864 _n = cache->active_nodes.rb_node; in cachefiles_check_active()
877 read_unlock(&cache->active_lock); in cachefiles_check_active()
883 read_unlock(&cache->active_lock); in cachefiles_check_active()
899 cachefiles_io_error(cache, "Lookup failed"); in cachefiles_check_active()
913 int cachefiles_cull(struct cachefiles_cache *cache, struct dentry *dir, in cachefiles_cull() argument
921 victim = cachefiles_check_active(cache, dir, filename); in cachefiles_cull()
933 ret = cachefiles_remove_object_xattr(cache, victim); in cachefiles_cull()
940 ret = cachefiles_bury_object(cache, dir, victim, false, in cachefiles_cull()
973 int cachefiles_check_in_use(struct cachefiles_cache *cache, struct dentry *dir, in cachefiles_check_in_use() argument
981 victim = cachefiles_check_active(cache, dir, filename); in cachefiles_check_in_use()