Lines Matching refs:pblk
23 static ssize_t pblk_sysfs_luns_show(struct pblk *pblk, char *page) in pblk_sysfs_luns_show() argument
25 struct nvm_tgt_dev *dev = pblk->dev; in pblk_sysfs_luns_show()
34 rlun = &pblk->luns[i]; in pblk_sysfs_luns_show()
50 static ssize_t pblk_sysfs_rate_limiter(struct pblk *pblk, char *page) in pblk_sysfs_rate_limiter() argument
56 free_blocks = pblk_rl_nr_free_blks(&pblk->rl); in pblk_sysfs_rate_limiter()
57 free_user_blocks = pblk_rl_nr_user_free_blks(&pblk->rl); in pblk_sysfs_rate_limiter()
58 rb_user_max = pblk->rl.rb_user_max; in pblk_sysfs_rate_limiter()
59 rb_user_cnt = atomic_read(&pblk->rl.rb_user_cnt); in pblk_sysfs_rate_limiter()
60 rb_gc_max = pblk->rl.rb_gc_max; in pblk_sysfs_rate_limiter()
61 rb_gc_cnt = atomic_read(&pblk->rl.rb_gc_cnt); in pblk_sysfs_rate_limiter()
62 rb_budget = pblk->rl.rb_budget; in pblk_sysfs_rate_limiter()
63 rb_state = pblk->rl.rb_state; in pblk_sysfs_rate_limiter()
65 total_blocks = pblk->rl.total_blocks; in pblk_sysfs_rate_limiter()
75 pblk->rl.high, in pblk_sysfs_rate_limiter()
79 READ_ONCE(pblk->rl.rb_user_active)); in pblk_sysfs_rate_limiter()
82 static ssize_t pblk_sysfs_gc_state_show(struct pblk *pblk, char *page) in pblk_sysfs_gc_state_show() argument
86 pblk_gc_sysfs_state_show(pblk, &gc_enabled, &gc_active); in pblk_sysfs_gc_state_show()
91 static ssize_t pblk_sysfs_stats(struct pblk *pblk, char *page) in pblk_sysfs_stats() argument
97 atomic_long_read(&pblk->read_failed), in pblk_sysfs_stats()
98 atomic_long_read(&pblk->read_high_ecc), in pblk_sysfs_stats()
99 atomic_long_read(&pblk->read_empty), in pblk_sysfs_stats()
100 atomic_long_read(&pblk->read_failed_gc), in pblk_sysfs_stats()
101 atomic_long_read(&pblk->write_failed), in pblk_sysfs_stats()
102 atomic_long_read(&pblk->erase_failed)); in pblk_sysfs_stats()
107 static ssize_t pblk_sysfs_write_buffer(struct pblk *pblk, char *page) in pblk_sysfs_write_buffer() argument
109 return pblk_rb_sysfs(&pblk->rwb, page); in pblk_sysfs_write_buffer()
112 static ssize_t pblk_sysfs_ppaf(struct pblk *pblk, char *page) in pblk_sysfs_ppaf() argument
114 struct nvm_tgt_dev *dev = pblk->dev; in pblk_sysfs_ppaf()
119 struct nvm_addrf_12 *ppaf = (struct nvm_addrf_12 *)&pblk->addrf; in pblk_sysfs_ppaf()
124 pblk->addrf_len, in pblk_sysfs_ppaf()
141 struct nvm_addrf *ppaf = &pblk->addrf; in pblk_sysfs_ppaf()
146 pblk->addrf_len, in pblk_sysfs_ppaf()
163 static ssize_t pblk_sysfs_lines(struct pblk *pblk, char *page) in pblk_sysfs_lines() argument
165 struct nvm_tgt_dev *dev = pblk->dev; in pblk_sysfs_lines()
167 struct pblk_line_meta *lm = &pblk->lm; in pblk_sysfs_lines()
168 struct pblk_line_mgmt *l_mg = &pblk->l_mg; in pblk_sysfs_lines()
271 pblk_err(pblk, "corrupted free line list:%d/%d\n", in pblk_sysfs_lines()
291 atomic_read(&pblk->gc.read_inflight_gc)); in pblk_sysfs_lines()
297 atomic_read(&pblk->inflight_io)); in pblk_sysfs_lines()
302 static ssize_t pblk_sysfs_lines_info(struct pblk *pblk, char *page) in pblk_sysfs_lines_info() argument
304 struct nvm_tgt_dev *dev = pblk->dev; in pblk_sysfs_lines_info()
306 struct pblk_line_meta *lm = &pblk->lm; in pblk_sysfs_lines_info()
330 static ssize_t pblk_sysfs_get_sec_per_write(struct pblk *pblk, char *page) in pblk_sysfs_get_sec_per_write() argument
332 return snprintf(page, PAGE_SIZE, "%d\n", pblk->sec_per_write); in pblk_sysfs_get_sec_per_write()
362 static ssize_t pblk_sysfs_get_write_amp_mileage(struct pblk *pblk, char *page) in pblk_sysfs_get_write_amp_mileage() argument
364 return pblk_get_write_amp(atomic64_read(&pblk->user_wa), in pblk_sysfs_get_write_amp_mileage()
365 atomic64_read(&pblk->gc_wa), atomic64_read(&pblk->pad_wa), in pblk_sysfs_get_write_amp_mileage()
369 static ssize_t pblk_sysfs_get_write_amp_trip(struct pblk *pblk, char *page) in pblk_sysfs_get_write_amp_trip() argument
372 atomic64_read(&pblk->user_wa) - pblk->user_rst_wa, in pblk_sysfs_get_write_amp_trip()
373 atomic64_read(&pblk->gc_wa) - pblk->gc_rst_wa, in pblk_sysfs_get_write_amp_trip()
374 atomic64_read(&pblk->pad_wa) - pblk->pad_rst_wa, page); in pblk_sysfs_get_write_amp_trip()
387 static ssize_t pblk_sysfs_get_padding_dist(struct pblk *pblk, char *page) in pblk_sysfs_get_padding_dist() argument
392 int buckets = pblk->min_write_pgs - 1; in pblk_sysfs_get_padding_dist()
395 total = atomic64_read(&pblk->nr_flush) - pblk->nr_flush_rst; in pblk_sysfs_get_padding_dist()
406 total_buckets += atomic64_read(&pblk->pad_dist[i]); in pblk_sysfs_get_padding_dist()
414 p = bucket_percentage(atomic64_read(&pblk->pad_dist[i]), in pblk_sysfs_get_padding_dist()
425 static ssize_t pblk_sysfs_stats_debug(struct pblk *pblk, char *page) in pblk_sysfs_stats_debug() argument
429 atomic_long_read(&pblk->inflight_writes), in pblk_sysfs_stats_debug()
430 atomic_long_read(&pblk->inflight_reads), in pblk_sysfs_stats_debug()
431 atomic_long_read(&pblk->req_writes), in pblk_sysfs_stats_debug()
432 (u64)atomic64_read(&pblk->nr_flush), in pblk_sysfs_stats_debug()
433 atomic_long_read(&pblk->padded_writes), in pblk_sysfs_stats_debug()
434 atomic_long_read(&pblk->padded_wb), in pblk_sysfs_stats_debug()
435 atomic_long_read(&pblk->sub_writes), in pblk_sysfs_stats_debug()
436 atomic_long_read(&pblk->sync_writes), in pblk_sysfs_stats_debug()
437 atomic_long_read(&pblk->recov_writes), in pblk_sysfs_stats_debug()
438 atomic_long_read(&pblk->recov_gc_writes), in pblk_sysfs_stats_debug()
439 atomic_long_read(&pblk->recov_gc_reads), in pblk_sysfs_stats_debug()
440 atomic_long_read(&pblk->cache_reads), in pblk_sysfs_stats_debug()
441 atomic_long_read(&pblk->sync_reads)); in pblk_sysfs_stats_debug()
445 static ssize_t pblk_sysfs_gc_force(struct pblk *pblk, const char *page, in pblk_sysfs_gc_force() argument
458 pblk_gc_sysfs_force(pblk, force); in pblk_sysfs_gc_force()
463 static ssize_t pblk_sysfs_set_sec_per_write(struct pblk *pblk, in pblk_sysfs_set_sec_per_write() argument
476 if (sec_per_write < pblk->min_write_pgs in pblk_sysfs_set_sec_per_write()
477 || sec_per_write > pblk->max_write_pgs in pblk_sysfs_set_sec_per_write()
478 || sec_per_write % pblk->min_write_pgs != 0) in pblk_sysfs_set_sec_per_write()
481 pblk_set_sec_per_write(pblk, sec_per_write); in pblk_sysfs_set_sec_per_write()
486 static ssize_t pblk_sysfs_set_write_amp_trip(struct pblk *pblk, in pblk_sysfs_set_write_amp_trip() argument
502 pblk->user_rst_wa = atomic64_read(&pblk->user_wa); in pblk_sysfs_set_write_amp_trip()
503 pblk->pad_rst_wa = atomic64_read(&pblk->pad_wa); in pblk_sysfs_set_write_amp_trip()
504 pblk->gc_rst_wa = atomic64_read(&pblk->gc_wa); in pblk_sysfs_set_write_amp_trip()
510 static ssize_t pblk_sysfs_set_padding_dist(struct pblk *pblk, in pblk_sysfs_set_padding_dist() argument
515 int buckets = pblk->min_write_pgs - 1; in pblk_sysfs_set_padding_dist()
529 atomic64_set(&pblk->pad_dist[i], 0); in pblk_sysfs_set_padding_dist()
531 pblk->nr_flush_rst = atomic64_read(&pblk->nr_flush); in pblk_sysfs_set_padding_dist()
631 struct pblk *pblk = container_of(kobj, struct pblk, kobj); in pblk_sysfs_show() local
634 return pblk_sysfs_rate_limiter(pblk, buf); in pblk_sysfs_show()
636 return pblk_sysfs_luns_show(pblk, buf); in pblk_sysfs_show()
638 return pblk_sysfs_gc_state_show(pblk, buf); in pblk_sysfs_show()
640 return pblk_sysfs_stats(pblk, buf); in pblk_sysfs_show()
642 return pblk_sysfs_write_buffer(pblk, buf); in pblk_sysfs_show()
644 return pblk_sysfs_ppaf(pblk, buf); in pblk_sysfs_show()
646 return pblk_sysfs_lines(pblk, buf); in pblk_sysfs_show()
648 return pblk_sysfs_lines_info(pblk, buf); in pblk_sysfs_show()
650 return pblk_sysfs_get_sec_per_write(pblk, buf); in pblk_sysfs_show()
652 return pblk_sysfs_get_write_amp_mileage(pblk, buf); in pblk_sysfs_show()
654 return pblk_sysfs_get_write_amp_trip(pblk, buf); in pblk_sysfs_show()
656 return pblk_sysfs_get_padding_dist(pblk, buf); in pblk_sysfs_show()
659 return pblk_sysfs_stats_debug(pblk, buf); in pblk_sysfs_show()
667 struct pblk *pblk = container_of(kobj, struct pblk, kobj); in pblk_sysfs_store() local
670 return pblk_sysfs_gc_force(pblk, buf, len); in pblk_sysfs_store()
672 return pblk_sysfs_set_sec_per_write(pblk, buf, len); in pblk_sysfs_store()
674 return pblk_sysfs_set_write_amp_trip(pblk, buf, len); in pblk_sysfs_store()
676 return pblk_sysfs_set_padding_dist(pblk, buf, len); in pblk_sysfs_store()
692 struct pblk *pblk = tdisk->private_data; in pblk_sysfs_init() local
693 struct device *parent_dev = disk_to_dev(pblk->disk); in pblk_sysfs_init()
696 ret = kobject_init_and_add(&pblk->kobj, &pblk_ktype, in pblk_sysfs_init()
700 pblk_err(pblk, "could not register\n"); in pblk_sysfs_init()
704 kobject_uevent(&pblk->kobj, KOBJ_ADD); in pblk_sysfs_init()
710 struct pblk *pblk = tdisk->private_data; in pblk_sysfs_exit() local
712 kobject_uevent(&pblk->kobj, KOBJ_REMOVE); in pblk_sysfs_exit()
713 kobject_del(&pblk->kobj); in pblk_sysfs_exit()
714 kobject_put(&pblk->kobj); in pblk_sysfs_exit()