Lines Matching refs:sc
170 void stat_cache_free(stat_cache *sc) { in stat_cache_free() argument
171 while (sc->files) { in stat_cache_free()
173 splay_tree *node = sc->files; in stat_cache_free()
175 osize = sc->files->size; in stat_cache_free()
178 sc->files = splaytree_delete(sc->files, node->key); in stat_cache_free()
180 assert(osize - 1 == splaytree_size(sc->files)); in stat_cache_free()
183 buffer_free(sc->dir_name); in stat_cache_free()
184 buffer_free(sc->hash_key); in stat_cache_free()
187 while (sc->dirs) { in stat_cache_free()
189 splay_tree *node = sc->dirs; in stat_cache_free()
191 osize = sc->dirs->size; in stat_cache_free()
194 sc->dirs = splaytree_delete(sc->dirs, node->key); in stat_cache_free()
197 assert(NULL == sc->dirs); in stat_cache_free()
199 assert(osize == (sc->dirs->size + 1)); in stat_cache_free()
203 if (sc->fam) { in stat_cache_free()
204 FAMClose(sc->fam); in stat_cache_free()
205 free(sc->fam); in stat_cache_free()
208 free(sc); in stat_cache_free()
243 stat_cache *sc = srv->stat_cache; in stat_cache_handle_fdevent() local
250 sc->fam) { in stat_cache_handle_fdevent()
252 events = FAMPending(sc->fam); in stat_cache_handle_fdevent()
260 FAMNextEvent(sc->fam, &fe); in stat_cache_handle_fdevent()
279 buffer_copy_string(sc->hash_key, fe.filename); in stat_cache_handle_fdevent()
280 buffer_append_long(sc->hash_key, j); in stat_cache_handle_fdevent()
282 ndx = hashme(sc->hash_key); in stat_cache_handle_fdevent()
284 sc->dirs = splaytree_splay(sc->dirs, ndx); in stat_cache_handle_fdevent()
285 node = sc->dirs; in stat_cache_handle_fdevent()
288 int osize = splaytree_size(sc->dirs); in stat_cache_handle_fdevent()
291 sc->dirs = splaytree_delete(sc->dirs, ndx); in stat_cache_handle_fdevent()
293 assert(osize - 1 == splaytree_size(sc->dirs)); in stat_cache_handle_fdevent()
307 fdevent_event_del(srv->ev, &(sc->fam_fcce_ndx), FAMCONNECTION_GETFD(sc->fam)); in stat_cache_handle_fdevent()
308 fdevent_unregister(srv->ev, FAMCONNECTION_GETFD(sc->fam)); in stat_cache_handle_fdevent()
310 FAMClose(sc->fam); in stat_cache_handle_fdevent()
311 free(sc->fam); in stat_cache_handle_fdevent()
313 sc->fam = NULL; in stat_cache_handle_fdevent()
365 stat_cache *sc; in stat_cache_get_entry() local
383 sc = srv->stat_cache; in stat_cache_get_entry()
385 buffer_copy_string_buffer(sc->hash_key, name); in stat_cache_get_entry()
386 buffer_append_long(sc->hash_key, con->conf.follow_symlink); in stat_cache_get_entry()
388 file_ndx = hashme(sc->hash_key); in stat_cache_get_entry()
389 sc->files = splaytree_splay(sc->files, file_ndx); in stat_cache_get_entry()
397 if (sc->files && (sc->files->key == file_ndx)) { in stat_cache_get_entry()
406 file_node = sc->files; in stat_cache_get_entry()
445 if (0 != buffer_copy_dirname(sc->dir_name, name)) { in stat_cache_get_entry()
451 buffer_copy_string_buffer(sc->hash_key, sc->dir_name); in stat_cache_get_entry()
452 buffer_append_long(sc->hash_key, con->conf.follow_symlink); in stat_cache_get_entry()
454 dir_ndx = hashme(sc->hash_key); in stat_cache_get_entry()
456 sc->dirs = splaytree_splay(sc->dirs, dir_ndx); in stat_cache_get_entry()
458 if (sc->dirs && (sc->dirs->key == dir_ndx)) { in stat_cache_get_entry()
459 dir_node = sc->dirs; in stat_cache_get_entry()
505 int osize = splaytree_size(sc->files); in stat_cache_get_entry()
511 sc->files = splaytree_insert(sc->files, file_ndx, sce); in stat_cache_get_entry()
524 assert(sc->files); in stat_cache_get_entry()
525 assert(sc->files->data == sce); in stat_cache_get_entry()
526 assert(osize + 1 == splaytree_size(sc->files)); in stat_cache_get_entry()
628 if (sc->fam && in stat_cache_get_entry()
633 fam_dir->fc = sc->fam; in stat_cache_get_entry()
635 buffer_copy_string_buffer(fam_dir->name, sc->dir_name); in stat_cache_get_entry()
641 if (0 != FAMMonitorDirectory(sc->fam, fam_dir->name->ptr, in stat_cache_get_entry()
654 if (sc->dirs) { in stat_cache_get_entry()
655 osize = sc->dirs->size; in stat_cache_get_entry()
658 sc->dirs = splaytree_insert(sc->dirs, dir_ndx, fam_dir); in stat_cache_get_entry()
659 assert(sc->dirs); in stat_cache_get_entry()
660 assert(sc->dirs->data == fam_dir); in stat_cache_get_entry()
661 assert(osize == (sc->dirs->size - 1)); in stat_cache_get_entry()
708 stat_cache *sc; in stat_cache_trigger_cleanup() local
712 sc = srv->stat_cache; in stat_cache_trigger_cleanup()
714 if (!sc->files) return 0; in stat_cache_trigger_cleanup()
716 keys = calloc(1, sizeof(size_t) * sc->files->size); in stat_cache_trigger_cleanup()
718 stat_cache_tag_old_entries(srv, sc->files, keys, &max_ndx); in stat_cache_trigger_cleanup()
724 sc->files = splaytree_splay(sc->files, ndx); in stat_cache_trigger_cleanup()
726 node = sc->files; in stat_cache_trigger_cleanup()
731 int osize = splaytree_size(sc->files); in stat_cache_trigger_cleanup()
735 sc->files = splaytree_delete(sc->files, ndx); in stat_cache_trigger_cleanup()
745 assert(osize - 1 == splaytree_size(sc->files)); in stat_cache_trigger_cleanup()