struct discard_cmd_control {
struct task_struct *f2fs_issue_discard; /* discard thread */
- struct list_head discard_entry_list; /* 4KB discard entry list */
- int nr_discards; /* # of discards in the list */
- struct list_head discard_pend_list; /* store pending entries */
- struct list_head discard_wait_list; /* store on-flushing entries */
+ struct list_head entry_list; /* 4KB discard entry list */
+ struct list_head pend_list; /* store pending entries */
+ struct list_head wait_list; /* store on-flushing entries */
wait_queue_head_t discard_wait_queue; /* waiting queue for wake-up */
struct mutex cmd_lock;
+ int nr_discards; /* # of discards in the list */
int max_discards; /* max. discards to be issued */
atomic_t issued_discard; /* # of issued discard */
atomic_t issing_discard; /* # of issing discard */
block_t start, block_t len)
{
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
- struct list_head *pend_list = &(dcc->discard_pend_list);
+ struct list_head *pend_list = &(dcc->pend_list);
struct discard_cmd *dc;
dc = f2fs_kmem_cache_alloc(discard_cmd_slab, GFP_NOFS);
bio->bi_end_io = f2fs_submit_discard_endio;
bio->bi_opf |= REQ_SYNC;
submit_bio(bio);
- list_move_tail(&dc->list, &dcc->discard_wait_list);
+ list_move_tail(&dc->list, &dcc->wait_list);
}
} else {
__remove_discard_cmd(sbi, dc);
void f2fs_wait_discard_bios(struct f2fs_sb_info *sbi)
{
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
- struct list_head *pend_list = &(dcc->discard_pend_list);
- struct list_head *wait_list = &(dcc->discard_wait_list);
+ struct list_head *pend_list = &(dcc->pend_list);
+ struct list_head *wait_list = &(dcc->wait_list);
struct discard_cmd *dc, *tmp;
struct blk_plug plug;
struct f2fs_sb_info *sbi = data;
struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
wait_queue_head_t *q = &dcc->discard_wait_queue;
- struct list_head *pend_list = &dcc->discard_pend_list;
- struct list_head *wait_list = &dcc->discard_wait_list;
+ struct list_head *pend_list = &dcc->pend_list;
+ struct list_head *wait_list = &dcc->wait_list;
struct discard_cmd *dc, *tmp;
struct blk_plug plug;
int iter = 0;
unsigned int start = 0, end = -1;
bool force = (cpc->reason == CP_DISCARD);
struct discard_entry *de = NULL;
- struct list_head *head = &SM_I(sbi)->dcc_info->discard_entry_list;
+ struct list_head *head = &SM_I(sbi)->dcc_info->entry_list;
int i;
if (se->valid_blocks == max_blocks || !f2fs_discard_en(sbi))
void release_discard_addrs(struct f2fs_sb_info *sbi)
{
- struct list_head *head = &(SM_I(sbi)->dcc_info->discard_entry_list);
+ struct list_head *head = &(SM_I(sbi)->dcc_info->entry_list);
struct discard_entry *entry, *this;
/* drop caches */
void clear_prefree_segments(struct f2fs_sb_info *sbi, struct cp_control *cpc)
{
- struct list_head *head = &(SM_I(sbi)->dcc_info->discard_entry_list);
+ struct list_head *head = &(SM_I(sbi)->dcc_info->entry_list);
struct discard_entry *entry, *this;
struct dirty_seglist_info *dirty_i = DIRTY_I(sbi);
unsigned long *prefree_map = dirty_i->dirty_segmap[PRE];
if (!dcc)
return -ENOMEM;
- INIT_LIST_HEAD(&dcc->discard_entry_list);
- INIT_LIST_HEAD(&dcc->discard_pend_list);
- INIT_LIST_HEAD(&dcc->discard_wait_list);
+ INIT_LIST_HEAD(&dcc->entry_list);
+ INIT_LIST_HEAD(&dcc->pend_list);
+ INIT_LIST_HEAD(&dcc->wait_list);
mutex_init(&dcc->cmd_lock);
atomic_set(&dcc->issued_discard, 0);
atomic_set(&dcc->issing_discard, 0);