• Home
  • Raw
  • Download

Lines Matching refs:cache

59 	int (*handler)(struct cachefiles_cache *cache, char *args);
85 struct cachefiles_cache *cache; in cachefiles_daemon_open() local
98 cache = kzalloc(sizeof(struct cachefiles_cache), GFP_KERNEL); in cachefiles_daemon_open()
99 if (!cache) { in cachefiles_daemon_open()
104 mutex_init(&cache->daemon_mutex); in cachefiles_daemon_open()
105 cache->active_nodes = RB_ROOT; in cachefiles_daemon_open()
106 rwlock_init(&cache->active_lock); in cachefiles_daemon_open()
107 init_waitqueue_head(&cache->daemon_pollwq); in cachefiles_daemon_open()
114 cache->frun_percent = 7; in cachefiles_daemon_open()
115 cache->fcull_percent = 5; in cachefiles_daemon_open()
116 cache->fstop_percent = 1; in cachefiles_daemon_open()
117 cache->brun_percent = 7; in cachefiles_daemon_open()
118 cache->bcull_percent = 5; in cachefiles_daemon_open()
119 cache->bstop_percent = 1; in cachefiles_daemon_open()
121 file->private_data = cache; in cachefiles_daemon_open()
122 cache->cachefilesd = file; in cachefiles_daemon_open()
131 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_release() local
135 ASSERT(cache); in cachefiles_daemon_release()
137 set_bit(CACHEFILES_DEAD, &cache->flags); in cachefiles_daemon_release()
139 cachefiles_daemon_unbind(cache); in cachefiles_daemon_release()
141 ASSERT(!cache->active_nodes.rb_node); in cachefiles_daemon_release()
144 cache->cachefilesd = NULL; in cachefiles_daemon_release()
148 kfree(cache); in cachefiles_daemon_release()
160 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_read() local
168 if (!test_bit(CACHEFILES_READY, &cache->flags)) in cachefiles_daemon_read()
172 cachefiles_has_space(cache, 0, 0); in cachefiles_daemon_read()
175 f_released = atomic_xchg(&cache->f_released, 0); in cachefiles_daemon_read()
176 b_released = atomic_long_xchg(&cache->b_released, 0); in cachefiles_daemon_read()
177 clear_bit(CACHEFILES_STATE_CHANGED, &cache->flags); in cachefiles_daemon_read()
189 test_bit(CACHEFILES_CULLING, &cache->flags) ? '1' : '0', in cachefiles_daemon_read()
190 (unsigned long long) cache->frun, in cachefiles_daemon_read()
191 (unsigned long long) cache->fcull, in cachefiles_daemon_read()
192 (unsigned long long) cache->fstop, in cachefiles_daemon_read()
193 (unsigned long long) cache->brun, in cachefiles_daemon_read()
194 (unsigned long long) cache->bcull, in cachefiles_daemon_read()
195 (unsigned long long) cache->bstop, in cachefiles_daemon_read()
217 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_write() local
223 ASSERT(cache); in cachefiles_daemon_write()
225 if (test_bit(CACHEFILES_DEAD, &cache->flags)) in cachefiles_daemon_write()
273 mutex_lock(&cache->daemon_mutex); in cachefiles_daemon_write()
276 if (!test_bit(CACHEFILES_DEAD, &cache->flags)) in cachefiles_daemon_write()
277 ret = cmd->handler(cache, args); in cachefiles_daemon_write()
279 mutex_unlock(&cache->daemon_mutex); in cachefiles_daemon_write()
293 struct cachefiles_cache *cache = file->private_data; in cachefiles_daemon_poll() local
296 poll_wait(file, &cache->daemon_pollwq, poll); in cachefiles_daemon_poll()
299 if (test_bit(CACHEFILES_STATE_CHANGED, &cache->flags)) in cachefiles_daemon_poll()
302 if (test_bit(CACHEFILES_CULLING, &cache->flags)) in cachefiles_daemon_poll()
312 static int cachefiles_daemon_range_error(struct cachefiles_cache *cache, in cachefiles_daemon_range_error() argument
324 static int cachefiles_daemon_frun(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_frun() argument
337 if (frun <= cache->fcull_percent || frun >= 100) in cachefiles_daemon_frun()
338 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_frun()
340 cache->frun_percent = frun; in cachefiles_daemon_frun()
348 static int cachefiles_daemon_fcull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_fcull() argument
361 if (fcull <= cache->fstop_percent || fcull >= cache->frun_percent) in cachefiles_daemon_fcull()
362 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_fcull()
364 cache->fcull_percent = fcull; in cachefiles_daemon_fcull()
372 static int cachefiles_daemon_fstop(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_fstop() argument
385 if (fstop < 0 || fstop >= cache->fcull_percent) in cachefiles_daemon_fstop()
386 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_fstop()
388 cache->fstop_percent = fstop; in cachefiles_daemon_fstop()
396 static int cachefiles_daemon_brun(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_brun() argument
409 if (brun <= cache->bcull_percent || brun >= 100) in cachefiles_daemon_brun()
410 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_brun()
412 cache->brun_percent = brun; in cachefiles_daemon_brun()
420 static int cachefiles_daemon_bcull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_bcull() argument
433 if (bcull <= cache->bstop_percent || bcull >= cache->brun_percent) in cachefiles_daemon_bcull()
434 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_bcull()
436 cache->bcull_percent = bcull; in cachefiles_daemon_bcull()
444 static int cachefiles_daemon_bstop(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_bstop() argument
457 if (bstop < 0 || bstop >= cache->bcull_percent) in cachefiles_daemon_bstop()
458 return cachefiles_daemon_range_error(cache, args); in cachefiles_daemon_bstop()
460 cache->bstop_percent = bstop; in cachefiles_daemon_bstop()
468 static int cachefiles_daemon_dir(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_dir() argument
479 if (cache->rootdirname) { in cachefiles_daemon_dir()
488 cache->rootdirname = dir; in cachefiles_daemon_dir()
496 static int cachefiles_daemon_secctx(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_secctx() argument
507 if (cache->secctx) { in cachefiles_daemon_secctx()
516 cache->secctx = secctx; in cachefiles_daemon_secctx()
524 static int cachefiles_daemon_tag(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_tag() argument
535 if (cache->tag) in cachefiles_daemon_tag()
542 cache->tag = tag; in cachefiles_daemon_tag()
550 static int cachefiles_daemon_cull(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_cull() argument
561 if (!test_bit(CACHEFILES_READY, &cache->flags)) { in cachefiles_daemon_cull()
566 if (test_bit(CACHEFILES_DEAD, &cache->flags)) { in cachefiles_daemon_cull()
577 cachefiles_begin_secure(cache, &saved_cred); in cachefiles_daemon_cull()
578 ret = cachefiles_cull(cache, path.dentry, args); in cachefiles_daemon_cull()
579 cachefiles_end_secure(cache, saved_cred); in cachefiles_daemon_cull()
599 static int cachefiles_daemon_debug(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_debug() argument
622 static int cachefiles_daemon_inuse(struct cachefiles_cache *cache, char *args) in cachefiles_daemon_inuse() argument
633 if (!test_bit(CACHEFILES_READY, &cache->flags)) { in cachefiles_daemon_inuse()
638 if (test_bit(CACHEFILES_DEAD, &cache->flags)) { in cachefiles_daemon_inuse()
649 cachefiles_begin_secure(cache, &saved_cred); in cachefiles_daemon_inuse()
650 ret = cachefiles_check_in_use(cache, path.dentry, args); in cachefiles_daemon_inuse()
651 cachefiles_end_secure(cache, saved_cred); in cachefiles_daemon_inuse()
671 int cachefiles_has_space(struct cachefiles_cache *cache, in cachefiles_has_space() argument
676 .mnt = cache->mnt, in cachefiles_has_space()
677 .dentry = cache->mnt->mnt_root, in cachefiles_has_space()
696 cachefiles_io_error(cache, "statfs failed"); in cachefiles_has_space()
701 stats.f_bavail >>= cache->bshift; in cachefiles_has_space()
719 if (stats.f_ffree < cache->fstop || in cachefiles_has_space()
720 stats.f_bavail < cache->bstop) in cachefiles_has_space()
724 if (stats.f_ffree < cache->fcull || in cachefiles_has_space()
725 stats.f_bavail < cache->bcull) in cachefiles_has_space()
728 if (test_bit(CACHEFILES_CULLING, &cache->flags) && in cachefiles_has_space()
729 stats.f_ffree >= cache->frun && in cachefiles_has_space()
730 stats.f_bavail >= cache->brun && in cachefiles_has_space()
731 test_and_clear_bit(CACHEFILES_CULLING, &cache->flags) in cachefiles_has_space()
734 cachefiles_state_changed(cache); in cachefiles_has_space()
741 if (!test_and_set_bit(CACHEFILES_CULLING, &cache->flags)) { in cachefiles_has_space()
743 cachefiles_state_changed(cache); in cachefiles_has_space()