• Home
  • Raw
  • Download

Lines Matching full:line

47 		kref_put(&gc_rq->line->ref, pblk_line_put);  in pblk_gc_write()
59 static void pblk_put_line_back(struct pblk *pblk, struct pblk_line *line) in pblk_put_line_back() argument
64 spin_lock(&line->lock); in pblk_put_line_back()
65 WARN_ON(line->state != PBLK_LINESTATE_GC); in pblk_put_line_back()
66 line->state = PBLK_LINESTATE_CLOSED; in pblk_put_line_back()
67 move_list = pblk_line_gc_list(pblk, line); in pblk_put_line_back()
68 spin_unlock(&line->lock); in pblk_put_line_back()
72 list_add_tail(&line->list, move_list); in pblk_put_line_back()
85 struct pblk_line *line = gc_rq_ws->line; in pblk_gc_line_ws() local
93 pblk_err(pblk, "could not GC line:%d (%d/%d)\n", in pblk_gc_line_ws()
94 line->id, *line->vsc, gc_rq->nr_secs); in pblk_gc_line_ws()
101 pblk_err(pblk, "failed GC read in line:%d (err:%d)\n", in pblk_gc_line_ws()
102 line->id, ret); in pblk_gc_line_ws()
128 kref_put(&line->ref, pblk_line_put); in pblk_gc_line_ws()
133 struct pblk_line *line) in get_lba_list_from_emeta() argument
147 ret = pblk_line_read_emeta(pblk, line, emeta_buf); in get_lba_list_from_emeta()
149 pblk_err(pblk, "line %d read emeta failed (%d)\n", in get_lba_list_from_emeta()
150 line->id, ret); in get_lba_list_from_emeta()
156 * For now, leave the line untouched. in get_lba_list_from_emeta()
158 * all sectors on the line. in get_lba_list_from_emeta()
163 pblk_err(pblk, "inconsistent emeta (line %d)\n", in get_lba_list_from_emeta()
164 line->id); in get_lba_list_from_emeta()
184 struct pblk_line *line = line_ws->line; in pblk_gc_line_prepare_ws() local
198 if (line->w_err_gc->has_write_err) { in pblk_gc_line_prepare_ws()
199 lba_list = line->w_err_gc->lba_list; in pblk_gc_line_prepare_ws()
200 line->w_err_gc->lba_list = NULL; in pblk_gc_line_prepare_ws()
202 lba_list = get_lba_list_from_emeta(pblk, line); in pblk_gc_line_prepare_ws()
204 pblk_err(pblk, "could not interpret emeta (line %d)\n", in pblk_gc_line_prepare_ws()
205 line->id); in pblk_gc_line_prepare_ws()
210 spin_lock(&line->lock); in pblk_gc_line_prepare_ws()
211 bitmap_copy(invalid_bitmap, line->invalid_bitmap, lm->sec_per_line); in pblk_gc_line_prepare_ws()
212 sec_left = pblk_line_vsc(line); in pblk_gc_line_prepare_ws()
213 spin_unlock(&line->lock); in pblk_gc_line_prepare_ws()
216 pblk_err(pblk, "corrupted GC line (%d)\n", line->id); in pblk_gc_line_prepare_ws()
230 if (bit > line->emeta_ssec) in pblk_gc_line_prepare_ws()
243 gc_rq->line = line; in pblk_gc_line_prepare_ws()
250 gc_rq_ws->line = line; in pblk_gc_line_prepare_ws()
260 kref_get(&line->ref); in pblk_gc_line_prepare_ws()
274 kref_put(&line->ref, pblk_line_put); in pblk_gc_line_prepare_ws()
288 pblk_put_line_back(pblk, line); in pblk_gc_line_prepare_ws()
289 kref_put(&line->ref, pblk_line_put); in pblk_gc_line_prepare_ws()
292 pblk_err(pblk, "failed to GC line %d\n", line->id); in pblk_gc_line_prepare_ws()
295 static int pblk_gc_line(struct pblk *pblk, struct pblk_line *line) in pblk_gc_line() argument
300 pblk_debug(pblk, "line '%d' being reclaimed for GC\n", line->id); in pblk_gc_line()
307 line_ws->line = line; in pblk_gc_line()
339 struct pblk_line *line; in pblk_gc_read() local
347 line = list_first_entry(&gc->r_list, struct pblk_line, list); in pblk_gc_read()
348 list_del(&line->list); in pblk_gc_read()
353 if (pblk_gc_line(pblk, line)) in pblk_gc_read()
354 pblk_err(pblk, "failed to GC line %d\n", line->id); in pblk_gc_read()
362 struct pblk_line *line, *victim; in pblk_gc_get_victim_line() local
366 list_for_each_entry(line, group_list, list) { in pblk_gc_get_victim_line()
367 line_vsc = le32_to_cpu(*line->vsc); in pblk_gc_get_victim_line()
370 victim = line; in pblk_gc_get_victim_line()
393 struct pblk_line *line; in pblk_gc_free_full_lines() local
402 line = list_first_entry(&l_mg->gc_full_list, in pblk_gc_free_full_lines()
405 spin_lock(&line->lock); in pblk_gc_free_full_lines()
406 WARN_ON(line->state != PBLK_LINESTATE_CLOSED); in pblk_gc_free_full_lines()
407 line->state = PBLK_LINESTATE_GC; in pblk_gc_free_full_lines()
408 spin_unlock(&line->lock); in pblk_gc_free_full_lines()
410 list_del(&line->list); in pblk_gc_free_full_lines()
414 kref_put(&line->ref, pblk_line_put); in pblk_gc_free_full_lines()
428 struct pblk_line *line; in pblk_gc_run() local
449 line = pblk_gc_get_victim_line(pblk, group_list); in pblk_gc_run()
451 spin_lock(&line->lock); in pblk_gc_run()
452 WARN_ON(line->state != PBLK_LINESTATE_CLOSED); in pblk_gc_run()
453 line->state = PBLK_LINESTATE_GC; in pblk_gc_run()
454 spin_unlock(&line->lock); in pblk_gc_run()
456 list_del(&line->list); in pblk_gc_run()
460 list_add_tail(&line->list, &gc->r_list); in pblk_gc_run()
638 /* Workqueue that reads valid sectors from a line and submit them to the in pblk_gc_init()
641 gc->gc_line_reader_wq = alloc_workqueue("pblk-gc-line-reader-wq", in pblk_gc_init()
644 pblk_err(pblk, "could not allocate GC line reader workqueue\n"); in pblk_gc_init()