Lines Matching +full:0 +full:ps

121 		padata_work_init(pw, padata_mt_helper, data, 0);
167 * @ps: padatashell
178 * Return: 0 on success or else negative error code.
180 int padata_do_parallel(struct padata_shell *ps,
183 struct padata_instance *pinst = ps->pinst;
190 pd = rcu_dereference_bh(ps->pd);
226 padata_work_init(pw, padata_parallel_worker, padata, 0);
230 return 0;
283 struct padata_instance *pinst = pd->ps->pinst;
296 if (unlikely(processed == 0))
333 cnt = 0;
373 if ((signed int)(cur->seq_nr - padata->seq_nr) < 0)
407 struct padata_mt_job_state *ps = pw->pw_data;
408 struct padata_mt_job *job = ps->job;
411 spin_lock(&ps->lock);
413 while (job->size > 0) {
418 size = roundup(start + 1, ps->chunk_size) - start;
425 spin_unlock(&ps->lock);
427 spin_lock(&ps->lock);
430 ++ps->nworks_fini;
431 done = (ps->nworks_fini == ps->nworks);
432 spin_unlock(&ps->lock);
435 complete(&ps->completion);
449 struct padata_mt_job_state ps;
454 if (job->size == 0)
467 spin_lock_init(&ps.lock);
468 init_completion(&ps.completion);
469 ps.job = job;
470 ps.nworks = padata_work_alloc_mt(nworks, &ps, &works);
471 ps.nworks_fini = 0;
478 * Ensure chunk_size is at least 1 to prevent divide-by-0
481 ps.chunk_size = job->size / (ps.nworks * load_balance_factor);
482 ps.chunk_size = max(ps.chunk_size, job->min_chunk);
483 ps.chunk_size = max(ps.chunk_size, 1ul);
484 ps.chunk_size = roundup(ps.chunk_size, job->align);
499 padata_work_init(&my_work, padata_mt_helper, &ps, PADATA_WORK_ONSTACK);
503 wait_for_completion(&ps.completion);
538 static struct parallel_data *padata_alloc_pd(struct padata_shell *ps)
540 struct padata_instance *pinst = ps->pinst;
555 pd->ps = ps;
610 static int padata_replace_one(struct padata_shell *ps)
614 pd_new = padata_alloc_pd(ps);
618 ps->opd = rcu_dereference_protected(ps->pd, 1);
619 rcu_assign_pointer(ps->pd, pd_new);
621 return 0;
626 struct padata_shell *ps;
627 int err = 0;
631 list_for_each_entry(ps, &pinst->pslist, list) {
632 err = padata_replace_one(ps);
639 list_for_each_entry_continue_reverse(ps, &pinst->pslist, list)
640 padata_put_pd(ps->opd);
697 * Return: 0 on success or negative error code
735 int err = 0;
750 int err = 0;
776 return 0;
791 return 0;
868 if (ret < 0)
959 pinst->parallel_wq = alloc_workqueue("%s_parallel", WQ_UNBOUND, 0,
1039 struct padata_shell *ps;
1041 ps = kzalloc(sizeof(*ps), GFP_KERNEL);
1042 if (!ps)
1045 ps->pinst = pinst;
1048 pd = padata_alloc_pd(ps);
1055 RCU_INIT_POINTER(ps->pd, pd);
1056 list_add(&ps->list, &pinst->pslist);
1059 return ps;
1062 kfree(ps);
1071 * @ps: padata shell to free
1073 void padata_free_shell(struct padata_shell *ps)
1077 if (!ps)
1080 mutex_lock(&ps->pinst->lock);
1081 list_del(&ps->list);
1082 pd = rcu_dereference_protected(ps->pd, 1);
1084 mutex_unlock(&ps->pinst->lock);
1086 kfree(ps);
1098 if (ret < 0)
1104 if (ret < 0)
1114 for (i = 0; i < possible_cpus; ++i)