Lines Matching refs:dreq

585 static void __unhash_deferred_req(struct cache_deferred_req *dreq)
587 hlist_del_init(&dreq->hash);
588 if (!list_empty(&dreq->recent)) {
589 list_del_init(&dreq->recent);
594 static void __hash_deferred_req(struct cache_deferred_req *dreq, struct cache_head *item)
598 INIT_LIST_HEAD(&dreq->recent);
599 hlist_add_head(&dreq->hash, &cache_defer_hash[hash]);
602 static void setup_deferral(struct cache_deferred_req *dreq,
607 dreq->item = item;
611 __hash_deferred_req(dreq, item);
615 list_add(&dreq->recent, &cache_defer_list);
627 static void cache_restart_thread(struct cache_deferred_req *dreq, int too_many)
630 container_of(dreq, struct thread_deferred_req, handle);
637 struct cache_deferred_req *dreq = &sleeper.handle;
640 dreq->revisit = cache_restart_thread;
642 setup_deferral(dreq, item, 0);
709 struct cache_deferred_req *dreq;
717 dreq = req->defer(req);
718 if (dreq == NULL)
720 setup_deferral(dreq, item, 1);
733 struct cache_deferred_req *dreq;
741 hlist_for_each_entry_safe(dreq, tmp, &cache_defer_hash[hash], hash)
742 if (dreq->item == item) {
743 __unhash_deferred_req(dreq);
744 list_add(&dreq->recent, &pending);
750 dreq = list_entry(pending.next, struct cache_deferred_req, recent);
751 list_del_init(&dreq->recent);
752 dreq->revisit(dreq, 0);
758 struct cache_deferred_req *dreq, *tmp;
765 list_for_each_entry_safe(dreq, tmp, &cache_defer_list, recent) {
766 if (dreq->owner == owner) {
767 __unhash_deferred_req(dreq);
768 list_add(&dreq->recent, &pending);
774 dreq = list_entry(pending.next, struct cache_deferred_req, recent);
775 list_del_init(&dreq->recent);
776 dreq->revisit(dreq, 1);