Lines Matching refs:dreq

547 static void __unhash_deferred_req(struct cache_deferred_req *dreq)  in __unhash_deferred_req()  argument
549 hlist_del_init(&dreq->hash); in __unhash_deferred_req()
550 if (!list_empty(&dreq->recent)) { in __unhash_deferred_req()
551 list_del_init(&dreq->recent); in __unhash_deferred_req()
556 static void __hash_deferred_req(struct cache_deferred_req *dreq, struct cache_head *item) in __hash_deferred_req() argument
560 INIT_LIST_HEAD(&dreq->recent); in __hash_deferred_req()
561 hlist_add_head(&dreq->hash, &cache_defer_hash[hash]); in __hash_deferred_req()
564 static void setup_deferral(struct cache_deferred_req *dreq, in setup_deferral() argument
569 dreq->item = item; in setup_deferral()
573 __hash_deferred_req(dreq, item); in setup_deferral()
577 list_add(&dreq->recent, &cache_defer_list); in setup_deferral()
589 static void cache_restart_thread(struct cache_deferred_req *dreq, int too_many) in cache_restart_thread() argument
592 container_of(dreq, struct thread_deferred_req, handle); in cache_restart_thread()
599 struct cache_deferred_req *dreq = &sleeper.handle; in cache_wait_req() local
602 dreq->revisit = cache_restart_thread; in cache_wait_req()
604 setup_deferral(dreq, item, 0); in cache_wait_req()
658 struct cache_deferred_req *dreq; in cache_defer_req() local
665 dreq = req->defer(req); in cache_defer_req()
666 if (dreq == NULL) in cache_defer_req()
668 setup_deferral(dreq, item, 1); in cache_defer_req()
681 struct cache_deferred_req *dreq; in cache_revisit_request() local
689 hlist_for_each_entry_safe(dreq, tmp, &cache_defer_hash[hash], hash) in cache_revisit_request()
690 if (dreq->item == item) { in cache_revisit_request()
691 __unhash_deferred_req(dreq); in cache_revisit_request()
692 list_add(&dreq->recent, &pending); in cache_revisit_request()
698 dreq = list_entry(pending.next, struct cache_deferred_req, recent); in cache_revisit_request()
699 list_del_init(&dreq->recent); in cache_revisit_request()
700 dreq->revisit(dreq, 0); in cache_revisit_request()
706 struct cache_deferred_req *dreq, *tmp; in cache_clean_deferred() local
713 list_for_each_entry_safe(dreq, tmp, &cache_defer_list, recent) { in cache_clean_deferred()
714 if (dreq->owner == owner) { in cache_clean_deferred()
715 __unhash_deferred_req(dreq); in cache_clean_deferred()
716 list_add(&dreq->recent, &pending); in cache_clean_deferred()
722 dreq = list_entry(pending.next, struct cache_deferred_req, recent); in cache_clean_deferred()
723 list_del_init(&dreq->recent); in cache_clean_deferred()
724 dreq->revisit(dreq, 1); in cache_clean_deferred()