/Linux-v4.19/drivers/lightnvm/ |
D | pblk-init.c | 33 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 …]
|
D | pblk-core.c | 25 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 …]
|
D | pblk-write.c | 20 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 …]
|
D | pblk.h | 134 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 …]
|
D | pblk-gc.c | 28 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 …]
|
D | pblk-sysfs.c | 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() [all …]
|
D | pblk-recovery.c | 19 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 …]
|
D | pblk-read.c | 27 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 …]
|
D | pblk-map.c | 21 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 …]
|
D | pblk-cache.c | 20 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 …]
|
D | Makefile | 7 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
|
D | pblk-rb.c | 46 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 …]
|
D | pblk-rl.c | 110 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()
|
D | Kconfig | 35 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/ |
D | bio.c | 97 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/ |
D | ext4.h | 1641 __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/ |
D | pblk.txt | 1 pblk: Physical Block Device Target 4 pblk implements a fully associative, host-based FTL that exposes a traditional
|
/Linux-v4.19/fs/ext4/ |
D | extents_status.h | 86 ext4_lblk_t len, ext4_fsblk_t pblk, 89 ext4_lblk_t len, ext4_fsblk_t pblk,
|
D | extents.c | 439 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 …]
|
D | extents_status.c | 330 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/ |
D | xen-acpi-processor.c | 342 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/ |
D | pcie.c | 1058 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/ |
D | numa_emulation.c | 219 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/ |
D | fscrypt_notsupp.h | 172 sector_t pblk, unsigned int len) in fscrypt_zeroout_range() argument
|
/Linux-v4.19/drivers/acpi/ |
D | processor_idle.c | 232 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()
|