Lines Matching refs:cache

63 	int (*handler)(struct cachefiles_cache *cache, char *args);
89 struct cachefiles_cache *cache; in cachefiles_daemon_open() local
102 cache = kzalloc(sizeof(struct cachefiles_cache), GFP_KERNEL); in cachefiles_daemon_open()
103 if (!cache) { in cachefiles_daemon_open()
108 mutex_init(&cache->daemon_mutex); in cachefiles_daemon_open()
109 cache->active_nodes = RB_ROOT; in cachefiles_daemon_open()
110 rwlock_init(&cache->active_lock); in cachefiles_daemon_open()
111 init_waitqueue_head(&cache->daemon_pollwq); in cachefiles_daemon_open()
118 cache->frun_percent = 7; in cachefiles_daemon_open()
119 cache->fcull_percent = 5; in cachefiles_daemon_open()
120 cache->fstop_percent = 1; in cachefiles_daemon_open()
121 cache->brun_percent = 7; in cachefiles_daemon_open()
122 cache->bcull_percent = 5; in cachefiles_daemon_open()
123 cache->bstop_percent = 1; in cachefiles_daemon_open()
125 file->private_data = cache; in cachefiles_daemon_open()
126 cache->cachefilesd = file; in cachefiles_daemon_open()
135 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_release() local
139 ASSERT(cache); in cachefiles_daemon_release()
141 set_bit(CACHEFILES_DEAD, &cache->flags); in cachefiles_daemon_release()
143 cachefiles_daemon_unbind(cache); in cachefiles_daemon_release()
145 ASSERT(!cache->active_nodes.rb_node); in cachefiles_daemon_release()
148 cache->cachefilesd = NULL; in cachefiles_daemon_release()
152 kfree(cache); in cachefiles_daemon_release()
164 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_read() local
170 if (!test_bit(CACHEFILES_READY, &cache->flags)) in cachefiles_daemon_read()
174 cachefiles_has_space(cache, 0, 0); in cachefiles_daemon_read()
177 clear_bit(CACHEFILES_STATE_CHANGED, &cache->flags); in cachefiles_daemon_read()
187 test_bit(CACHEFILES_CULLING, &cache->flags) ? '1' : '0', in cachefiles_daemon_read()
188 (unsigned long long) cache->frun, in cachefiles_daemon_read()
189 (unsigned long long) cache->fcull, in cachefiles_daemon_read()
190 (unsigned long long) cache->fstop, in cachefiles_daemon_read()
191 (unsigned long long) cache->brun, in cachefiles_daemon_read()
192 (unsigned long long) cache->bcull, in cachefiles_daemon_read()
193 (unsigned long long) cache->bstop in cachefiles_daemon_read()
214 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_write() local
220 ASSERT(cache); in cachefiles_daemon_write()
222 if (test_bit(CACHEFILES_DEAD, &cache->flags)) in cachefiles_daemon_write()
276 mutex_lock(&cache->daemon_mutex); in cachefiles_daemon_write()
279 if (!test_bit(CACHEFILES_DEAD, &cache->flags)) in cachefiles_daemon_write()
280 ret = cmd->handler(cache, args); in cachefiles_daemon_write()
282 mutex_unlock(&cache->daemon_mutex); in cachefiles_daemon_write()
296 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_poll() local
299 poll_wait(file, &cache->daemon_pollwq, poll); in cachefiles_daemon_poll()
302 if (test_bit(CACHEFILES_STATE_CHANGED, &cache->flags)) in cachefiles_daemon_poll()
305 if (test_bit(CACHEFILES_CULLING, &cache->flags)) in cachefiles_daemon_poll()
315 static int cachefiles_daemon_range_error(struct cachefiles_cache *cache, in cachefiles_daemon_range_error() argument
327 static int cachefiles_daemon_frun(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_frun() argument
340 if (frun <= cache->fcull_percent || frun >= 100) in cachefiles_daemon_frun()
341 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_frun()
343 cache->frun_percent = frun; in cachefiles_daemon_frun()
351 static int cachefiles_daemon_fcull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_fcull() argument
364 if (fcull <= cache->fstop_percent || fcull >= cache->frun_percent) in cachefiles_daemon_fcull()
365 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_fcull()
367 cache->fcull_percent = fcull; in cachefiles_daemon_fcull()
375 static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_fstop() argument
388 if (fstop < 0 || fstop >= cache->fcull_percent) in cachefiles_daemon_fstop()
389 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_fstop()
391 cache->fstop_percent = fstop; in cachefiles_daemon_fstop()
399 static int cachefiles_daemon_brun(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_brun() argument
412 if (brun <= cache->bcull_percent || brun >= 100) in cachefiles_daemon_brun()
413 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_brun()
415 cache->brun_percent = brun; in cachefiles_daemon_brun()
423 static int cachefiles_daemon_bcull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_bcull() argument
436 if (bcull <= cache->bstop_percent || bcull >= cache->brun_percent) in cachefiles_daemon_bcull()
437 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_bcull()
439 cache->bcull_percent = bcull; in cachefiles_daemon_bcull()
447 static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_bstop() argument
460 if (bstop < 0 || bstop >= cache->bcull_percent) in cachefiles_daemon_bstop()
461 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_bstop()
463 cache->bstop_percent = bstop; in cachefiles_daemon_bstop()
471 static int cachefiles_daemon_dir(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_dir() argument
482 if (cache->rootdirname) { in cachefiles_daemon_dir()
491 cache->rootdirname = dir; in cachefiles_daemon_dir()
499 static int cachefiles_daemon_secctx(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_secctx() argument
510 if (cache->secctx) { in cachefiles_daemon_secctx()
519 cache->secctx = secctx; in cachefiles_daemon_secctx()
527 static int cachefiles_daemon_tag(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_tag() argument
538 if (cache->tag) in cachefiles_daemon_tag()
545 cache->tag = tag; in cachefiles_daemon_tag()
553 static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_cull() argument
564 if (!test_bit(CACHEFILES_READY, &cache->flags)) { in cachefiles_daemon_cull()
569 if (test_bit(CACHEFILES_DEAD, &cache->flags)) { in cachefiles_daemon_cull()
580 cachefiles_begin_secure(cache, &saved_cred); in cachefiles_daemon_cull()
581 ret = cachefiles_cull(cache, path.dentry, args); in cachefiles_daemon_cull()
582 cachefiles_end_secure(cache, saved_cred); in cachefiles_daemon_cull()
602 static int cachefiles_daemon_debug(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_debug() argument
625 static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_inuse() argument
636 if (!test_bit(CACHEFILES_READY, &cache->flags)) { in cachefiles_daemon_inuse()
641 if (test_bit(CACHEFILES_DEAD, &cache->flags)) { in cachefiles_daemon_inuse()
652 cachefiles_begin_secure(cache, &saved_cred); in cachefiles_daemon_inuse()
653 ret = cachefiles_check_in_use(cache, path.dentry, args); in cachefiles_daemon_inuse()
654 cachefiles_end_secure(cache, saved_cred); in cachefiles_daemon_inuse()
674 int cachefiles_has_space(struct cachefiles_cache *cache, in cachefiles_has_space() argument
679 .mnt = cache->mnt, in cachefiles_has_space()
680 .dentry = cache->mnt->mnt_root, in cachefiles_has_space()
699 cachefiles_io_error(cache, "statfs failed"); in cachefiles_has_space()
704 stats.f_bavail >>= cache->bshift; in cachefiles_has_space()
722 if (stats.f_ffree < cache->fstop || in cachefiles_has_space()
723 stats.f_bavail < cache->bstop) in cachefiles_has_space()
727 if (stats.f_ffree < cache->fcull || in cachefiles_has_space()
728 stats.f_bavail < cache->bcull) in cachefiles_has_space()
731 if (test_bit(CACHEFILES_CULLING, &cache->flags) && in cachefiles_has_space()
732 stats.f_ffree >= cache->frun && in cachefiles_has_space()
733 stats.f_bavail >= cache->brun && in cachefiles_has_space()
734 test_and_clear_bit(CACHEFILES_CULLING, &cache->flags) in cachefiles_has_space()
737 cachefiles_state_changed(cache); in cachefiles_has_space()
744 if (!test_and_set_bit(CACHEFILES_CULLING, &cache->flags)) { in cachefiles_has_space()
746 cachefiles_state_changed(cache); in cachefiles_has_space()