Lines Matching refs:cache
84 static void cachefiles_mark_object_buried(struct cachefiles_cache *cache, in cachefiles_mark_object_buried() argument
93 write_lock(&cache->active_lock); in cachefiles_mark_object_buried()
95 p = cache->active_nodes.rb_node; in cachefiles_mark_object_buried()
106 write_unlock(&cache->active_lock); in cachefiles_mark_object_buried()
129 write_unlock(&cache->active_lock); in cachefiles_mark_object_buried()
136 static int cachefiles_mark_object_active(struct cachefiles_cache *cache, in cachefiles_mark_object_active() argument
146 write_lock(&cache->active_lock); in cachefiles_mark_object_active()
157 _p = &cache->active_nodes.rb_node; in cachefiles_mark_object_active()
174 rb_insert_color(&object->active_node, &cache->active_nodes); in cachefiles_mark_object_active()
176 write_unlock(&cache->active_lock); in cachefiles_mark_object_active()
192 write_unlock(&cache->active_lock); in cachefiles_mark_object_active()
242 cache->cache.ops->put_object(&xobject->fscache, in cachefiles_mark_object_active()
247 cache->cache.ops->put_object(&xobject->fscache, in cachefiles_mark_object_active()
256 void cachefiles_mark_object_inactive(struct cachefiles_cache *cache, in cachefiles_mark_object_inactive() argument
265 write_lock(&cache->active_lock); in cachefiles_mark_object_inactive()
266 rb_erase(&object->active_node, &cache->active_nodes); in cachefiles_mark_object_inactive()
268 write_unlock(&cache->active_lock); in cachefiles_mark_object_inactive()
275 atomic_long_add(i_blocks, &cache->b_released); in cachefiles_mark_object_inactive()
276 if (atomic_inc_return(&cache->f_released)) in cachefiles_mark_object_inactive()
277 cachefiles_state_changed(cache); in cachefiles_mark_object_inactive()
287 static int cachefiles_bury_object(struct cachefiles_cache *cache, in cachefiles_bury_object() argument
305 path.mnt = cache->mnt; in cachefiles_bury_object()
309 cachefiles_io_error(cache, "Unlink security error"); in cachefiles_bury_object()
316 cachefiles_mark_object_buried(cache, rep, why); in cachefiles_bury_object()
322 cachefiles_io_error(cache, "Unlink failed"); in cachefiles_bury_object()
336 (uint32_t) atomic_inc_return(&cache->gravecounter)); in cachefiles_bury_object()
339 trap = lock_rename(cache->graveyard, dir); in cachefiles_bury_object()
345 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
350 if (!d_can_lookup(cache->graveyard)) { in cachefiles_bury_object()
351 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
352 cachefiles_io_error(cache, "Graveyard no longer a directory"); in cachefiles_bury_object()
357 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
358 cachefiles_io_error(cache, "May not make directory loop"); in cachefiles_bury_object()
363 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
364 cachefiles_io_error(cache, "Mountpoint in cache"); in cachefiles_bury_object()
368 grave = lookup_one_len(nbuffer, cache->graveyard, strlen(nbuffer)); in cachefiles_bury_object()
370 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
377 cachefiles_io_error(cache, "Lookup error %ld", in cachefiles_bury_object()
383 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
391 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
393 cachefiles_io_error(cache, "Mountpoint in graveyard"); in cachefiles_bury_object()
399 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
401 cachefiles_io_error(cache, "May not make directory loop"); in cachefiles_bury_object()
406 path.mnt = cache->mnt; in cachefiles_bury_object()
408 path_to_graveyard.mnt = cache->mnt; in cachefiles_bury_object()
409 path_to_graveyard.dentry = cache->graveyard; in cachefiles_bury_object()
412 cachefiles_io_error(cache, "Rename security error %d", ret); in cachefiles_bury_object()
419 .new_dir = d_inode(cache->graveyard), in cachefiles_bury_object()
425 cachefiles_io_error(cache, in cachefiles_bury_object()
429 cachefiles_mark_object_buried(cache, rep, why); in cachefiles_bury_object()
432 unlock_rename(cache->graveyard, dir); in cachefiles_bury_object()
441 int cachefiles_delete_object(struct cachefiles_cache *cache, in cachefiles_delete_object() argument
467 ret = cachefiles_bury_object(cache, object, dir, in cachefiles_delete_object()
493 struct cachefiles_cache *cache; in cachefiles_walk_to_object() local
504 cache = container_of(parent->fscache.cache, in cachefiles_walk_to_object()
505 struct cachefiles_cache, cache); in cachefiles_walk_to_object()
506 path.mnt = cache->mnt; in cachefiles_walk_to_object()
558 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_walk_to_object()
592 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_walk_to_object()
645 ret = cachefiles_bury_object(cache, object, dir, next, in cachefiles_walk_to_object()
661 ret = cachefiles_mark_object_active(cache, object); in cachefiles_walk_to_object()
715 cachefiles_io_error(cache, "Create/mkdir failed"); in cachefiles_walk_to_object()
725 cache, object, d_backing_inode(object->dentry)->i_blocks); in cachefiles_walk_to_object()
739 cachefiles_io_error(cache, "Lookup failed"); in cachefiles_walk_to_object()
754 struct dentry *cachefiles_get_directory(struct cachefiles_cache *cache, in cachefiles_get_directory() argument
780 ret = cachefiles_has_space(cache, 1, 0); in cachefiles_get_directory()
786 path.mnt = cache->mnt; in cachefiles_get_directory()
858 static struct dentry *cachefiles_check_active(struct cachefiles_cache *cache, in cachefiles_check_active() argument
891 read_lock(&cache->active_lock); in cachefiles_check_active()
893 _n = cache->active_nodes.rb_node; in cachefiles_check_active()
906 read_unlock(&cache->active_lock); in cachefiles_check_active()
912 read_unlock(&cache->active_lock); in cachefiles_check_active()
928 cachefiles_io_error(cache, "Lookup failed"); in cachefiles_check_active()
942 int cachefiles_cull(struct cachefiles_cache *cache, struct dentry *dir, in cachefiles_cull() argument
950 victim = cachefiles_check_active(cache, dir, filename); in cachefiles_cull()
962 ret = cachefiles_remove_object_xattr(cache, victim); in cachefiles_cull()
969 ret = cachefiles_bury_object(cache, NULL, dir, victim, false, in cachefiles_cull()
1002 int cachefiles_check_in_use(struct cachefiles_cache *cache, struct dentry *dir, in cachefiles_check_in_use() argument
1010 victim = cachefiles_check_active(cache, dir, filename); in cachefiles_check_in_use()