gc_rq 93 drivers/lightnvm/pblk-cache.c int pblk_write_gc_to_cache(struct pblk *pblk, struct pblk_gc_rq *gc_rq) gc_rq 97 drivers/lightnvm/pblk-cache.c void *data = gc_rq->data; gc_rq 105 drivers/lightnvm/pblk-cache.c if (!pblk_rb_may_write_gc(&pblk->rwb, gc_rq->secs_to_gc, &bpos)) { gc_rq 113 drivers/lightnvm/pblk-cache.c for (i = 0, valid_entries = 0; i < gc_rq->nr_secs; i++) { gc_rq 114 drivers/lightnvm/pblk-cache.c if (gc_rq->lba_list[i] == ADDR_EMPTY) gc_rq 117 drivers/lightnvm/pblk-cache.c w_ctx.lba = gc_rq->lba_list[i]; gc_rq 120 drivers/lightnvm/pblk-cache.c pblk_rb_write_entry_gc(&pblk->rwb, data, w_ctx, gc_rq->line, gc_rq 121 drivers/lightnvm/pblk-cache.c gc_rq->paddr_list[i], pos); gc_rq 127 drivers/lightnvm/pblk-cache.c WARN_ONCE(gc_rq->secs_to_gc != valid_entries, gc_rq 24 drivers/lightnvm/pblk-gc.c static void pblk_gc_free_gc_rq(struct pblk_gc_rq *gc_rq) gc_rq 26 drivers/lightnvm/pblk-gc.c if (gc_rq->data) gc_rq 27 drivers/lightnvm/pblk-gc.c vfree(gc_rq->data); gc_rq 28 drivers/lightnvm/pblk-gc.c kfree(gc_rq); gc_rq 34 drivers/lightnvm/pblk-gc.c struct pblk_gc_rq *gc_rq, *tgc_rq; gc_rq 47 drivers/lightnvm/pblk-gc.c list_for_each_entry_safe(gc_rq, tgc_rq, &w_list, list) { gc_rq 48 drivers/lightnvm/pblk-gc.c pblk_write_gc_to_cache(pblk, gc_rq); gc_rq 49 drivers/lightnvm/pblk-gc.c list_del(&gc_rq->list); gc_rq 50 drivers/lightnvm/pblk-gc.c kref_put(&gc_rq->line->ref, pblk_line_put); gc_rq 51 drivers/lightnvm/pblk-gc.c pblk_gc_free_gc_rq(gc_rq); gc_rq 93 drivers/lightnvm/pblk-gc.c struct pblk_gc_rq *gc_rq = gc_rq_ws->priv; gc_rq 99 drivers/lightnvm/pblk-gc.c ret = pblk_submit_read_gc(pblk, gc_rq); gc_rq 105 drivers/lightnvm/pblk-gc.c if (!gc_rq->secs_to_gc) gc_rq 117 drivers/lightnvm/pblk-gc.c list_add_tail(&gc_rq->list, &gc->w_list); gc_rq 126 drivers/lightnvm/pblk-gc.c pblk_gc_free_gc_rq(gc_rq); gc_rq 187 drivers/lightnvm/pblk-gc.c struct pblk_gc_rq *gc_rq; gc_rq 220 drivers/lightnvm/pblk-gc.c gc_rq = kmalloc(sizeof(struct pblk_gc_rq), GFP_KERNEL); gc_rq 221 drivers/lightnvm/pblk-gc.c if (!gc_rq) gc_rq 231 drivers/lightnvm/pblk-gc.c gc_rq->paddr_list[nr_secs] = bit; gc_rq 232 drivers/lightnvm/pblk-gc.c gc_rq->lba_list[nr_secs++] = le64_to_cpu(lba_list[bit]); gc_rq 236 drivers/lightnvm/pblk-gc.c kfree(gc_rq); gc_rq 240 drivers/lightnvm/pblk-gc.c gc_rq->nr_secs = nr_secs; gc_rq 241 drivers/lightnvm/pblk-gc.c gc_rq->line = line; gc_rq 243 drivers/lightnvm/pblk-gc.c gc_rq->data = vmalloc(array_size(gc_rq->nr_secs, geo->csecs)); gc_rq 244 drivers/lightnvm/pblk-gc.c if (!gc_rq->data) gc_rq 253 drivers/lightnvm/pblk-gc.c gc_rq_ws->priv = gc_rq; gc_rq 282 drivers/lightnvm/pblk-gc.c vfree(gc_rq->data); gc_rq 284 drivers/lightnvm/pblk-gc.c kfree(gc_rq); gc_rq 418 drivers/lightnvm/pblk-read.c int pblk_submit_read_gc(struct pblk *pblk, struct pblk_gc_rq *gc_rq) gc_rq 429 drivers/lightnvm/pblk-read.c if (gc_rq->nr_secs > 1) { gc_rq 430 drivers/lightnvm/pblk-read.c gc_rq->secs_to_gc = read_ppalist_rq_gc(pblk, &rqd, gc_rq->line, gc_rq 431 drivers/lightnvm/pblk-read.c gc_rq->lba_list, gc_rq 432 drivers/lightnvm/pblk-read.c gc_rq->paddr_list, gc_rq 433 drivers/lightnvm/pblk-read.c gc_rq->nr_secs); gc_rq 434 drivers/lightnvm/pblk-read.c if (gc_rq->secs_to_gc == 1) gc_rq 437 drivers/lightnvm/pblk-read.c gc_rq->secs_to_gc = read_rq_gc(pblk, &rqd, gc_rq->line, gc_rq 438 drivers/lightnvm/pblk-read.c gc_rq->lba_list[0], gc_rq 439 drivers/lightnvm/pblk-read.c gc_rq->paddr_list[0]); gc_rq 442 drivers/lightnvm/pblk-read.c if (!(gc_rq->secs_to_gc)) gc_rq 446 drivers/lightnvm/pblk-read.c rqd.nr_ppas = gc_rq->secs_to_gc; gc_rq 448 drivers/lightnvm/pblk-read.c if (pblk_submit_io_sync(pblk, &rqd, gc_rq->data)) { gc_rq 453 drivers/lightnvm/pblk-read.c pblk_read_check_rand(pblk, &rqd, gc_rq->lba_list, gc_rq->nr_secs); gc_rq 465 drivers/lightnvm/pblk-read.c atomic_long_add(gc_rq->secs_to_gc, &pblk->sync_reads); gc_rq 466 drivers/lightnvm/pblk-read.c atomic_long_add(gc_rq->secs_to_gc, &pblk->recov_gc_reads); gc_rq 467 drivers/lightnvm/pblk-read.c atomic_long_sub(gc_rq->secs_to_gc, &pblk->inflight_reads); gc_rq 848 drivers/lightnvm/pblk.h int pblk_write_gc_to_cache(struct pblk *pblk, struct pblk_gc_rq *gc_rq); gc_rq 873 drivers/lightnvm/pblk.h int pblk_submit_read_gc(struct pblk *pblk, struct pblk_gc_rq *gc_rq);