Lines Matching refs:fam_dir
246 fam_dir_entry * const fam_dir = ck_calloc(1, sizeof(*fam_dir)); in fam_dir_entry_init() local
247 buffer_copy_string_len(&fam_dir->name, name, len); in fam_dir_entry_init()
248 fam_dir->refcnt = 0; in fam_dir_entry_init()
250 fam_dir->req = -1; in fam_dir_entry_init()
253 return fam_dir; in fam_dir_entry_init()
256 static void fam_dir_entry_free(fam_dir_entry *fam_dir) in fam_dir_entry_free() argument
258 if (!fam_dir) return; in fam_dir_entry_free()
260 free(fam_dir->name.ptr); in fam_dir_entry_free()
262 if (-1 != fam_dir->req) in fam_dir_entry_free()
263 close(fam_dir->req); in fam_dir_entry_free()
265 free(fam_dir); in fam_dir_entry_free()
268 static void fam_dir_invalidate_node(fam_dir_entry *fam_dir) in fam_dir_invalidate_node() argument
270 fam_dir->stat_ts = 0; in fam_dir_invalidate_node()
271 if (fam_dir->fam_parent) { in fam_dir_invalidate_node()
272 --fam_dir->fam_parent->refcnt; in fam_dir_invalidate_node()
273 fam_dir->fam_parent = NULL; in fam_dir_invalidate_node()
289 fam_dir_entry * const fam_dir = t->data; in fam_dir_tag_refcnt() local
290 if (0 == fam_dir->refcnt) { in fam_dir_tag_refcnt()
291 fam_dir_invalidate_node(fam_dir); in fam_dir_tag_refcnt()
312 fam_dir_entry *fam_dir = node->data; in fam_dir_periodic_cleanup() local
315 scf->wds = splaytree_delete(scf->wds, fam_dir->req); in fam_dir_periodic_cleanup()
318 EV_SET(kevl+i, fam_dir->req, EVFILT_VNODE, EV_DELETE, 0, 0, 0); in fam_dir_periodic_cleanup()
319 fam_dir->req = -1; /*(make FAMCancelMonitor() a no-op)*/ in fam_dir_periodic_cleanup()
321 FAMCancelMonitor(&scf->fam, &fam_dir->req); in fam_dir_periodic_cleanup()
322 fam_dir_entry_free(fam_dir); in fam_dir_periodic_cleanup()
345 fam_dir_entry * const fam_dir = t->data; in fam_dir_invalidate_tree() local
347 force_assert(fam_dir); in fam_dir_invalidate_tree()
349 const buffer * const b = &fam_dir->name; in fam_dir_invalidate_tree()
352 fam_dir_invalidate_node(fam_dir); in fam_dir_invalidate_tree()
358 static void stat_cache_handle_fdevent_fn(stat_cache_fam * const scf, fam_dir_entry * const fam_dir,…
395 fam_dir_entry *fam_dir = scf->wds->data; in stat_cache_handle_fdevent_in() local
396 if (NULL == fam_dir) /*(should not happen)*/ in stat_cache_handle_fdevent_in()
398 if (fam_dir->req != in->wd) /*(should not happen)*/ in stat_cache_handle_fdevent_in()
412 stat_cache_handle_fdevent_fn(scf, fam_dir, in->name, len, code); in stat_cache_handle_fdevent_in()
430 fam_dir_entry *fam_dir = scf->dirs->data; in stat_cache_handle_fdevent_in()
431 if (fam_dir->req != (int)kev->ident) in stat_cache_handle_fdevent_in()
449 stat_cache_handle_fdevent_fn(scf, fam_dir, NULL, 0, code); in stat_cache_handle_fdevent_in()
464 fam_dir_entry *fam_dir = scf->dirs->data; in stat_cache_handle_fdevent_in()
465 if (FAMREQUEST_GETREQNUM(&fam_dir->req) in stat_cache_handle_fdevent_in()
473 stat_cache_handle_fdevent_fn(scf, fam_dir, fe.filename, fnlen, fe.code); in stat_cache_handle_fdevent_in()
478 static void stat_cache_handle_fdevent_fn(stat_cache_fam * const scf, fam_dir_entry *fam_dir, const … in stat_cache_handle_fdevent_fn() argument
481 buffer * const n = &fam_dir->name; in stat_cache_handle_fdevent_fn()
520 fam_dir = fam_link; in stat_cache_handle_fdevent_fn()
531 stat_cache_invalidate_entry(BUF_PTR_LEN(&fam_dir->name)); in stat_cache_handle_fdevent_fn()
535 stat_cache_delete_tree(BUF_PTR_LEN(&fam_dir->name)); in stat_cache_handle_fdevent_fn()
536 fam_dir_invalidate_node(fam_dir); in stat_cache_handle_fdevent_fn()
539 BUF_PTR_LEN(&fam_dir->name)); in stat_cache_handle_fdevent_fn()
680 fam_dir_entry *fam_dir = NULL; in fam_dir_monitor() local
684 fam_dir = scf->dirs->data; in fam_dir_monitor()
685 if (!buffer_eq_slen(&fam_dir->name, fn, dirlen)) { in fam_dir_monitor()
696 if (!fn_is_dir && (NULL==fam_dir || cur_ts - fam_dir->stat_ts >= 16)) { in fam_dir_monitor()
714 int ck_lnk = (NULL == fam_dir); in fam_dir_monitor()
715 if (ck_dir && NULL != fam_dir) { in fam_dir_monitor()
718 if (st->st_dev != fam_dir->st_dev || st->st_ino != fam_dir->st_ino) { in fam_dir_monitor()
728 scf->wds = splaytree_delete(scf->wds, fam_dir->req); in fam_dir_monitor()
730 if (0 != FAMCancelMonitor(&scf->fam, &fam_dir->req) in fam_dir_monitor()
731 || 0 != FAMMonitorDirectory(&scf->fam, fam_dir->name.ptr, in fam_dir_monitor()
732 &fam_dir->req, in fam_dir_monitor()
734 fam_dir->stat_ts = 0; /* invalidate */ in fam_dir_monitor()
737 fam_dir->st_dev = st->st_dev; in fam_dir_monitor()
738 fam_dir->st_ino = st->st_ino; in fam_dir_monitor()
740 scf->wds = splaytree_insert(scf->wds, fam_dir->req, fam_dir); in fam_dir_monitor()
743 fam_dir->stat_ts = cur_ts; in fam_dir_monitor()
746 if (NULL == fam_dir) { in fam_dir_monitor()
747 fam_dir = fam_dir_entry_init(fn, dirlen); in fam_dir_monitor()
749 if (0 != FAMMonitorDirectory(&scf->fam,fam_dir->name.ptr,&fam_dir->req, in fam_dir_monitor()
755 fam_dir->name.ptr, fn); in fam_dir_monitor()
759 fam_dir->name.ptr, fn, FamErrlist[FAMErrno]); in fam_dir_monitor()
761 fam_dir_entry_free(fam_dir); in fam_dir_monitor()
765 scf->dirs = splaytree_insert(scf->dirs, dir_ndx, fam_dir); in fam_dir_monitor()
767 scf->wds = splaytree_insert(scf->wds, fam_dir->req, fam_dir); in fam_dir_monitor()
769 fam_dir->stat_ts= cur_ts; in fam_dir_monitor()
770 fam_dir->st_dev = st->st_dev; in fam_dir_monitor()
771 fam_dir->st_ino = st->st_ino; in fam_dir_monitor()
785 if (fam_dir->fam_parent) { in fam_dir_monitor()
786 --fam_dir->fam_parent->refcnt; in fam_dir_monitor()
787 fam_dir->fam_parent = NULL; in fam_dir_monitor()
790 fam_dir->fam_parent = fam_dir_monitor(scf, fn, dirlen, &lst); in fam_dir_monitor()
794 ++fam_dir->refcnt; in fam_dir_monitor()
795 return fam_dir; in fam_dir_monitor()
820 if (sce->fam_dir) --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_entry_free()
1154 if (sce->fam_dir != NULL) { in stat_cache_invalidate_entry()
1155 --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_invalidate_entry()
1156 sce->fam_dir = NULL; in stat_cache_invalidate_entry()
1175 if (sce->fam_dir != NULL) { in stat_cache_invalidate_dir_tree_walk()
1176 --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_invalidate_dir_tree_walk()
1177 sce->fam_dir = NULL; in stat_cache_invalidate_dir_tree_walk()
1245 fam_dir_entry *fam_dir = stat_cache_sptree_find(sptree, name, len); in stat_cache_delete_dir() local
1246 if (fam_dir && buffer_eq_slen(&fam_dir->name, name, len)) in stat_cache_delete_dir()
1247 fam_dir_invalidate_node(fam_dir); in stat_cache_delete_dir()
1309 && sce->fam_dir) { /* entry is in monitored dir */ in stat_cache_get_entry()
1378 if (sce->fam_dir) --((fam_dir_entry *)sce->fam_dir)->refcnt; in stat_cache_get_entry()
1379 sce->fam_dir = in stat_cache_get_entry()
1382 if (NULL != sce->fam_dir) { in stat_cache_get_entry()