Lines Matching refs:dreq
583 static void __unhash_deferred_req(struct cache_deferred_req *dreq)
585 hlist_del_init(&dreq->hash);
586 if (!list_empty(&dreq->recent)) {
587 list_del_init(&dreq->recent);
592 static void __hash_deferred_req(struct cache_deferred_req *dreq, struct cache_head *item)
596 INIT_LIST_HEAD(&dreq->recent);
597 hlist_add_head(&dreq->hash, &cache_defer_hash[hash]);
600 static void setup_deferral(struct cache_deferred_req *dreq,
605 dreq->item = item;
609 __hash_deferred_req(dreq, item);
613 list_add(&dreq->recent, &cache_defer_list);
625 static void cache_restart_thread(struct cache_deferred_req *dreq, int too_many)
628 container_of(dreq, struct thread_deferred_req, handle);
635 struct cache_deferred_req *dreq = &sleeper.handle;
638 dreq->revisit = cache_restart_thread;
640 setup_deferral(dreq, item, 0);
694 struct cache_deferred_req *dreq;
701 dreq = req->defer(req);
702 if (dreq == NULL)
704 setup_deferral(dreq, item, 1);
717 struct cache_deferred_req *dreq;
725 hlist_for_each_entry_safe(dreq, tmp, &cache_defer_hash[hash], hash)
726 if (dreq->item == item) {
727 __unhash_deferred_req(dreq);
728 list_add(&dreq->recent, &pending);
734 dreq = list_entry(pending.next, struct cache_deferred_req, recent);
735 list_del_init(&dreq->recent);
736 dreq->revisit(dreq, 0);
742 struct cache_deferred_req *dreq, *tmp;
749 list_for_each_entry_safe(dreq, tmp, &cache_defer_list, recent) {
750 if (dreq->owner == owner) {
751 __unhash_deferred_req(dreq);
752 list_add(&dreq->recent, &pending);
758 dreq = list_entry(pending.next, struct cache_deferred_req, recent);
759 list_del_init(&dreq->recent);
760 dreq->revisit(dreq, 1);