diff options
Diffstat (limited to 'drivers/lightnvm/pblk-write.c')
| -rw-r--r-- | drivers/lightnvm/pblk-write.c | 14 | 
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/lightnvm/pblk-write.c b/drivers/lightnvm/pblk-write.c index 508c63701eda..df99c45778d4 100644 --- a/drivers/lightnvm/pblk-write.c +++ b/drivers/lightnvm/pblk-write.c @@ -417,12 +417,11 @@ int pblk_submit_meta_io(struct pblk *pblk, struct pblk_line *meta_line)  			rqd->ppa_list[i] = addr_to_gen_ppa(pblk, paddr, id);  	} +	spin_lock(&l_mg->close_lock);  	emeta->mem += rq_len; -	if (emeta->mem >= lm->emeta_len[0]) { -		spin_lock(&l_mg->close_lock); +	if (emeta->mem >= lm->emeta_len[0])  		list_del(&meta_line->list); -		spin_unlock(&l_mg->close_lock); -	} +	spin_unlock(&l_mg->close_lock);  	pblk_down_page(pblk, rqd->ppa_list, rqd->nr_ppas); @@ -491,14 +490,15 @@ static struct pblk_line *pblk_should_submit_meta_io(struct pblk *pblk,  	struct pblk_line *meta_line;  	spin_lock(&l_mg->close_lock); -retry:  	if (list_empty(&l_mg->emeta_list)) {  		spin_unlock(&l_mg->close_lock);  		return NULL;  	}  	meta_line = list_first_entry(&l_mg->emeta_list, struct pblk_line, list); -	if (meta_line->emeta->mem >= lm->emeta_len[0]) -		goto retry; +	if (meta_line->emeta->mem >= lm->emeta_len[0]) { +		spin_unlock(&l_mg->close_lock); +		return NULL; +	}  	spin_unlock(&l_mg->close_lock);  	if (!pblk_valid_meta_ppa(pblk, meta_line, data_rqd))  | 
