Lines Matching refs:nna
1686 static bool tryinc_node_nr_active(struct wq_node_nr_active *nna) in tryinc_node_nr_active() argument
1688 int max = READ_ONCE(nna->max); in tryinc_node_nr_active()
1693 old = atomic_read(&nna->nr); in tryinc_node_nr_active()
1696 tmp = atomic_cmpxchg_relaxed(&nna->nr, old, old + 1); in tryinc_node_nr_active()
1714 struct wq_node_nr_active *nna = wq_node_nr_active(wq, pool->node); in pwq_tryinc_nr_active() local
1719 if (!nna) { in pwq_tryinc_nr_active()
1740 obtained = tryinc_node_nr_active(nna); in pwq_tryinc_nr_active()
1751 raw_spin_lock(&nna->lock); in pwq_tryinc_nr_active()
1754 list_add_tail(&pwq->pending_node, &nna->pending_pwqs); in pwq_tryinc_nr_active()
1760 obtained = tryinc_node_nr_active(nna); in pwq_tryinc_nr_active()
1770 raw_spin_unlock(&nna->lock); in pwq_tryinc_nr_active()
1850 static void node_activate_pending_pwq(struct wq_node_nr_active *nna, in node_activate_pending_pwq() argument
1859 raw_spin_lock(&nna->lock); in node_activate_pending_pwq()
1861 pwq = list_first_entry_or_null(&nna->pending_pwqs, in node_activate_pending_pwq()
1876 raw_spin_unlock(&nna->lock); in node_activate_pending_pwq()
1878 raw_spin_lock(&nna->lock); in node_activate_pending_pwq()
1901 if (likely(tryinc_node_nr_active(nna))) { in node_activate_pending_pwq()
1908 list_move_tail(&pwq->pending_node, &nna->pending_pwqs); in node_activate_pending_pwq()
1916 raw_spin_unlock(&nna->lock); in node_activate_pending_pwq()
1933 struct wq_node_nr_active *nna = wq_node_nr_active(pwq->wq, pool->node); in pwq_dec_nr_active() local
1947 if (!nna) { in pwq_dec_nr_active()
1966 if (atomic_dec_return(&nna->nr) >= READ_ONCE(nna->max)) in pwq_dec_nr_active()
1969 if (!list_empty(&nna->pending_pwqs)) in pwq_dec_nr_active()
1970 node_activate_pending_pwq(nna, pool); in pwq_dec_nr_active()
4854 static void init_node_nr_active(struct wq_node_nr_active *nna) in init_node_nr_active() argument
4856 nna->max = WQ_DFL_MIN_ACTIVE; in init_node_nr_active()
4857 atomic_set(&nna->nr, 0); in init_node_nr_active()
4858 raw_spin_lock_init(&nna->lock); in init_node_nr_active()
4859 INIT_LIST_HEAD(&nna->pending_pwqs); in init_node_nr_active()
4868 struct wq_node_nr_active *nna; in alloc_node_nr_active() local
4872 nna = kzalloc_node(sizeof(*nna), GFP_KERNEL, node); in alloc_node_nr_active()
4873 if (!nna) in alloc_node_nr_active()
4875 init_node_nr_active(nna); in alloc_node_nr_active()
4876 nna_ar[node] = nna; in alloc_node_nr_active()
4880 nna = kzalloc_node(sizeof(*nna), GFP_KERNEL, NUMA_NO_NODE); in alloc_node_nr_active()
4881 if (!nna) in alloc_node_nr_active()
4883 init_node_nr_active(nna); in alloc_node_nr_active()
4884 nna_ar[nr_node_ids] = nna; in alloc_node_nr_active()
5097 struct wq_node_nr_active *nna = in pwq_release_workfn() local
5100 raw_spin_lock_irq(&nna->lock); in pwq_release_workfn()
5102 raw_spin_unlock_irq(&nna->lock); in pwq_release_workfn()