Home
last modified time | relevance | path

Searched refs:pblk (Results 1 – 25 of 30) sorted by relevance

12

/Linux-v4.19/drivers/lightnvm/
Dpblk-init.c33 static int pblk_rw_io(struct request_queue *q, struct pblk *pblk, in pblk_rw_io() argument
43 ret = pblk_submit_read(pblk, bio); in pblk_rw_io()
54 if (pblk_get_secs(bio) > pblk_rl_max_io(&pblk->rl)) in pblk_rw_io()
57 return pblk_write_to_cache(pblk, bio, PBLK_IOTYPE_USER); in pblk_rw_io()
62 struct pblk *pblk = q->queuedata; in pblk_make_rq() local
65 pblk_discard(pblk, bio); in pblk_make_rq()
72 switch (pblk_rw_io(q, pblk, bio)) { in pblk_make_rq()
84 static size_t pblk_trans_map_size(struct pblk *pblk) in pblk_trans_map_size() argument
88 if (pblk->addrf_len < 32) in pblk_trans_map_size()
91 return entry_size * pblk->rl.nr_secs; in pblk_trans_map_size()
[all …]
Dpblk-core.c25 struct pblk *pblk = line_ws->pblk; in pblk_line_mark_bb() local
26 struct nvm_tgt_dev *dev = pblk->dev; in pblk_line_mark_bb()
35 line = &pblk->lines[pblk_ppa_to_line(*ppa)]; in pblk_line_mark_bb()
38 pblk_err(pblk, "failed to mark bb, line:%d, pos:%d\n", in pblk_line_mark_bb()
43 mempool_free(line_ws, &pblk->gen_ws_pool); in pblk_line_mark_bb()
46 static void pblk_mark_bb(struct pblk *pblk, struct pblk_line *line, in pblk_mark_bb() argument
49 struct nvm_tgt_dev *dev = pblk->dev; in pblk_mark_bb()
54 pblk_debug(pblk, "erase failed: line:%d, pos:%d\n", line->id, pos); in pblk_mark_bb()
55 atomic_long_inc(&pblk->erase_failed); in pblk_mark_bb()
59 pblk_err(pblk, "attempted to erase bb: line:%d, pos:%d\n", in pblk_mark_bb()
[all …]
Dpblk-write.c20 static unsigned long pblk_end_w_bio(struct pblk *pblk, struct nvm_rq *rqd, in pblk_end_w_bio() argument
24 struct pblk_rb *rwb = &pblk->rwb; in pblk_end_w_bio()
51 pblk_bio_free_pages(pblk, rqd->bio, c_ctx->nr_valid, in pblk_end_w_bio()
55 atomic_long_add(rqd->nr_ppas, &pblk->sync_writes); in pblk_end_w_bio()
58 ret = pblk_rb_sync_advance(&pblk->rwb, c_ctx->nr_valid); in pblk_end_w_bio()
61 pblk_free_rqd(pblk, rqd, PBLK_WRITE); in pblk_end_w_bio()
66 static unsigned long pblk_end_queued_w_bio(struct pblk *pblk, in pblk_end_queued_w_bio() argument
71 return pblk_end_w_bio(pblk, rqd, c_ctx); in pblk_end_queued_w_bio()
74 static void pblk_complete_write(struct pblk *pblk, struct nvm_rq *rqd, in pblk_complete_write() argument
82 atomic_long_sub(c_ctx->nr_valid, &pblk->inflight_writes); in pblk_complete_write()
[all …]
Dpblk.h134 struct pblk *pblk; member
141 struct pblk *pblk; member
436 struct pblk *pblk; member
599 struct pblk { struct
707 struct pblk *pblk; argument
716 #define pblk_err(pblk, fmt, ...) \ argument
717 pr_err("pblk %s: " fmt, pblk->disk->disk_name, ##__VA_ARGS__)
718 #define pblk_info(pblk, fmt, ...) \ argument
719 pr_info("pblk %s: " fmt, pblk->disk->disk_name, ##__VA_ARGS__)
720 #define pblk_warn(pblk, fmt, ...) \ argument
[all …]
Dpblk-gc.c28 static int pblk_gc_write(struct pblk *pblk) in pblk_gc_write() argument
30 struct pblk_gc *gc = &pblk->gc; in pblk_gc_write()
45 pblk_write_gc_to_cache(pblk, gc_rq); in pblk_gc_write()
59 static void pblk_put_line_back(struct pblk *pblk, struct pblk_line *line) in pblk_put_line_back() argument
61 struct pblk_line_mgmt *l_mg = &pblk->l_mg; in pblk_put_line_back()
67 move_list = pblk_line_gc_list(pblk, line); in pblk_put_line_back()
81 struct pblk *pblk = gc_rq_ws->pblk; in pblk_gc_line_ws() local
82 struct nvm_tgt_dev *dev = pblk->dev; in pblk_gc_line_ws()
84 struct pblk_gc *gc = &pblk->gc; in pblk_gc_line_ws()
93 pblk_err(pblk, "could not GC line:%d (%d/%d)\n", in pblk_gc_line_ws()
[all …]
Dpblk-sysfs.c23 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()
[all …]
Dpblk-recovery.c19 int pblk_recov_check_emeta(struct pblk *pblk, struct line_emeta *emeta_buf) in pblk_recov_check_emeta() argument
23 crc = pblk_calc_emeta_crc(pblk, emeta_buf); in pblk_recov_check_emeta()
33 static int pblk_recov_l2p_from_emeta(struct pblk *pblk, struct pblk_line *line) in pblk_recov_l2p_from_emeta() argument
35 struct nvm_tgt_dev *dev = pblk->dev; in pblk_recov_l2p_from_emeta()
37 struct pblk_line_meta *lm = &pblk->lm; in pblk_recov_l2p_from_emeta()
45 lba_list = emeta_to_lbas(pblk, emeta_buf); in pblk_recov_l2p_from_emeta()
49 data_start = pblk_line_smeta_start(pblk, line) + lm->smeta_sec; in pblk_recov_l2p_from_emeta()
57 ppa = addr_to_gen_ppa(pblk, i, line->id); in pblk_recov_l2p_from_emeta()
75 pblk_update_map(pblk, le64_to_cpu(lba_list[i]), ppa); in pblk_recov_l2p_from_emeta()
80 pblk_err(pblk, "line %d - inconsistent lba list(%llu/%llu)\n", in pblk_recov_l2p_from_emeta()
[all …]
Dpblk-read.c27 static int pblk_read_from_cache(struct pblk *pblk, struct bio *bio, in pblk_read_from_cache() argument
37 return pblk_rb_copy_to_bio(&pblk->rwb, bio, lba, ppa, in pblk_read_from_cache()
41 static void pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd, in pblk_read_ppalist_rq() argument
51 pblk_lookup_l2p_seq(pblk, ppas, blba, nr_secs); in pblk_read_ppalist_rq()
74 if (!pblk_read_from_cache(pblk, bio, lba, p, i, in pblk_read_ppalist_rq()
76 pblk_lookup_l2p_seq(pblk, &p, lba, 1); in pblk_read_ppalist_rq()
83 atomic_long_inc(&pblk->cache_reads); in pblk_read_ppalist_rq()
95 if (pblk_io_aligned(pblk, nr_secs)) in pblk_read_ppalist_rq()
96 rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_SEQUENTIAL); in pblk_read_ppalist_rq()
98 rqd->flags = pblk_set_read_mode(pblk, PBLK_READ_RANDOM); in pblk_read_ppalist_rq()
[all …]
Dpblk-map.c21 static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, in pblk_map_page_data() argument
27 struct pblk_line *line = pblk_line_get_data(pblk); in pblk_map_page_data()
32 int nr_secs = pblk->min_write_pgs; in pblk_map_page_data()
41 line = pblk_line_replace_data(pblk); in pblk_map_page_data()
42 pblk_line_close_meta(pblk, prev_line); in pblk_map_page_data()
49 lba_list = emeta_to_lbas(pblk, emeta->buf); in pblk_map_page_data()
51 paddr = pblk_alloc_page(pblk, line, nr_secs); in pblk_map_page_data()
57 ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); in pblk_map_page_data()
68 w_ctx = pblk_rb_w_ctx(&pblk->rwb, sentry + i); in pblk_map_page_data()
75 atomic64_inc(&pblk->pad_wa); in pblk_map_page_data()
[all …]
Dpblk-cache.c20 int pblk_write_to_cache(struct pblk *pblk, struct bio *bio, unsigned long flags) in pblk_write_to_cache() argument
22 struct request_queue *q = pblk->dev->q; in pblk_write_to_cache()
31 &pblk->disk->part0); in pblk_write_to_cache()
38 ret = pblk_rb_may_write_user(&pblk->rwb, bio, nr_entries, &bpos); in pblk_write_to_cache()
44 pblk_pipeline_stop(pblk); in pblk_write_to_cache()
52 pblk_write_kick(pblk); in pblk_write_to_cache()
63 pos = pblk_rb_wrap_pos(&pblk->rwb, bpos + i); in pblk_write_to_cache()
64 pblk_rb_write_entry_user(&pblk->rwb, data, w_ctx, pos); in pblk_write_to_cache()
69 atomic64_add(nr_entries, &pblk->user_wa); in pblk_write_to_cache()
72 atomic_long_add(nr_entries, &pblk->inflight_writes); in pblk_write_to_cache()
[all …]
DMakefile7 obj-$(CONFIG_NVM_PBLK) += pblk.o
8 pblk-y := pblk-init.o pblk-core.o pblk-rb.o \
9 pblk-write.o pblk-cache.o pblk-read.o \
10 pblk-gc.o pblk-recovery.o pblk-map.o \
11 pblk-rl.o pblk-sysfs.o
Dpblk-rb.c46 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_init() local
122 pblk_rl_init(&pblk->rl, rb->nr_entries); in pblk_rb_init()
205 struct pblk *pblk = container_of(rb, struct pblk, rwb); in __pblk_rb_update_l2p() local
225 pblk_update_map_dev(pblk, w_ctx->lba, w_ctx->ppa, in __pblk_rb_update_l2p()
228 line = &pblk->lines[pblk_ppa_to_line(w_ctx->ppa)]; in __pblk_rb_update_l2p()
234 pblk_rl_out(&pblk->rl, user_io, gc_io); in __pblk_rb_update_l2p()
305 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_write_entry_user() local
318 pblk_update_map_cache(pblk, w_ctx.lba, entry->cacheline); in pblk_rb_write_entry_user()
329 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_write_entry_gc() local
342 if (!pblk_update_map_gc(pblk, w_ctx.lba, entry->cacheline, line, paddr)) in pblk_rb_write_entry_gc()
[all …]
Dpblk-rl.c110 struct pblk *pblk = container_of(rl, struct pblk, rl); in __pblk_rl_update_rates() local
148 pblk_gc_should_start(pblk); in __pblk_rl_update_rates()
150 pblk_gc_should_stop(pblk); in __pblk_rl_update_rates()
211 struct pblk *pblk = container_of(rl, struct pblk, rl); in pblk_rl_init() local
212 struct nvm_tgt_dev *dev = pblk->dev; in pblk_rl_init()
214 struct pblk_line_mgmt *l_mg = &pblk->l_mg; in pblk_rl_init()
215 struct pblk_line_meta *lm = &pblk->lm; in pblk_rl_init()
225 rl->high = pblk->op_blks - blk_meta - lm->blk_per_line; in pblk_rl_init()
DKconfig35 Enables debug support for pblk. This includes extra checks, more
36 vocal error messages, and extra tracking fields in the pblk sysfs
/Linux-v4.19/fs/crypto/
Dbio.c97 sector_t pblk, unsigned int len) in fscrypt_zeroout_range() argument
130 pblk << (inode->i_sb->s_blocksize_bits - 9); in fscrypt_zeroout_range()
148 pblk++; in fscrypt_zeroout_range()
/Linux-v4.19/include/trace/events/
Dext4.h1641 __field( ext4_fsblk_t, pblk )
1652 __entry->pblk = map->m_pblk;
1663 show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
1682 TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1684 TP_ARGS(inode, lblk, pblk),
1689 __field( ext4_fsblk_t, pblk )
1696 __entry->pblk = pblk;
1703 __entry->lblk, __entry->pblk)
1833 __field( ext4_fsblk_t, pblk )
1844 __entry->pblk = map->m_pblk;
[all …]
/Linux-v4.19/Documentation/lightnvm/
Dpblk.txt1 pblk: Physical Block Device Target
4 pblk implements a fully associative, host-based FTL that exposes a traditional
/Linux-v4.19/fs/ext4/
Dextents_status.h86 ext4_lblk_t len, ext4_fsblk_t pblk,
89 ext4_lblk_t len, ext4_fsblk_t pblk,
Dextents.c439 int depth, ext4_fsblk_t pblk) in __ext4_ext_check() argument
486 (unsigned long long) pblk, error_msg, in __ext4_ext_check()
493 #define ext4_ext_check(inode, eh, depth, pblk) \ argument
494 __ext4_ext_check(__func__, __LINE__, (inode), (eh), (depth), (pblk))
503 struct inode *inode, ext4_fsblk_t pblk, int depth, in __read_extent_tree_block() argument
509 bh = sb_getblk_gfp(inode->i_sb, pblk, __GFP_MOVABLE | GFP_NOFS); in __read_extent_tree_block()
514 trace_ext4_ext_load_extent(inode, pblk, _RET_IP_); in __read_extent_tree_block()
522 ext_block_hdr(bh), depth, pblk); in __read_extent_tree_block()
559 #define read_extent_tree_block(inode, pblk, depth, flags) \ argument
560 __read_extent_tree_block(__func__, __LINE__, (inode), (pblk), \
[all …]
Dextents_status.c330 ext4_fsblk_t pblk) in ext4_es_alloc_extent() argument
338 es->es_pblk = pblk; in ext4_es_alloc_extent()
691 ext4_lblk_t len, ext4_fsblk_t pblk, in ext4_es_insert_extent() argument
699 lblk, len, pblk, status, inode->i_ino); in ext4_es_insert_extent()
716 ext4_es_store_pblock_status(&newes, pblk, status); in ext4_es_insert_extent()
747 ext4_lblk_t len, ext4_fsblk_t pblk, in ext4_es_cache_extent() argument
756 ext4_es_store_pblock_status(&newes, pblk, status); in ext4_es_cache_extent()
/Linux-v4.19/drivers/xen/
Dxen-acpi-processor.c342 acpi_io_address pblk = 0; in read_acpi_id() local
354 pblk = object.processor.pblk_address; in read_acpi_id()
381 pr_debug("ACPI CPU%u w/ PBLK:0x%lx\n", acpi_id, (unsigned long)pblk); in read_acpi_id()
392 if (!pblk) in read_acpi_id()
/Linux-v4.19/drivers/net/wireless/quantenna/qtnfmac/pearl/
Dpcie.c1058 int blk, const u8 *pblk, const u8 *fw) in qtnf_ep_fw_send() argument
1091 if (pblk >= (fw + size - len)) { in qtnf_ep_fw_send()
1092 len = fw + size - pblk; in qtnf_ep_fw_send()
1097 memcpy(pdata, pblk, len); in qtnf_ep_fw_send()
1110 const u8 *pblk = fw; in qtnf_ep_fw_load() local
1123 len = qtnf_ep_fw_send(priv, fw_size, blk, pblk, fw); in qtnf_ep_fw_load()
1147 pblk -= ((last_round - 1) * in qtnf_ep_fw_load()
1151 pblk -= QTN_PCIE_FW_DLMASK * blk_size; in qtnf_ep_fw_load()
1164 pblk += len; in qtnf_ep_fw_load()
/Linux-v4.19/arch/x86/mm/
Dnuma_emulation.c219 int nr_nodes, struct numa_memblk *pblk, in split_nodes_size_interleave_uniform() argument
226 if ((!size && !nr_nodes) || (nr_nodes && !pblk)) in split_nodes_size_interleave_uniform()
243 node_set(pblk->nid, physnode_mask); in split_nodes_size_interleave_uniform()
/Linux-v4.19/include/linux/
Dfscrypt_notsupp.h172 sector_t pblk, unsigned int len) in fscrypt_zeroout_range() argument
/Linux-v4.19/drivers/acpi/
Dprocessor_idle.c232 if (!pr->pblk) in acpi_processor_get_power_info_fadt()
250 pr->power.states[ACPI_STATE_C2].address = pr->pblk + 4; in acpi_processor_get_power_info_fadt()
251 pr->power.states[ACPI_STATE_C3].address = pr->pblk + 5; in acpi_processor_get_power_info_fadt()

12