Fix writeback for lbatpage

This commit is contained in:
Tom Marshall 2019-10-31 14:48:12 -07:00
parent abdb25d31c
commit 9a543670aa
1 changed files with 4 additions and 8 deletions

View File

@ -80,7 +80,7 @@ lbatpage_flush_endio(struct bio* bio)
printk(KERN_ERR "%s: I/O failed\n", __func__);
lp->state = CACHE_STATE_ERROR;
}
cbd_free_page(bio->bi_io_vec[0].bv_page);
unlock_page(lp->page);
}
static int
@ -94,15 +94,10 @@ lbatpage_flush(struct lbatpage* lp)
if (lp->state == CACHE_STATE_ERROR) {
ret = -EIO;
}
unlock_page(lp->page);
goto out;
}
iopagev[0] = cbd_alloc_page();
if (!iopagev[0]) {
printk(KERN_ERR "%s: out of memory\n", __func__);
ret = -ENOMEM;
goto out;
}
memcpy(page_address(iopagev[0]), lp->buf, PAGE_SIZE);
iopagev[0] = lp->page;
pblk_write(lp->params, lp->pblk, 1, iopagev, lbatpage_flush_endio, lp);
lp->state = CACHE_STATE_CLEAN;
@ -114,6 +109,7 @@ out:
void
lbatpage_reset(struct lbatpage* lp, u64 pblk)
{
lock_page(lp->page);
if (lp->pblk != pblk) {
lp->pblk = pblk;
lp->state = CACHE_STATE_UNCACHED;