Make pblk_read/write take block_device, not cbd_params

This commit is contained in:
Tom Marshall 2019-11-02 08:11:12 -07:00
parent f1513f8cb3
commit 5be74b3346
6 changed files with 18 additions and 18 deletions

View File

@ -90,14 +90,14 @@ compress_read_header(struct compress* c)
pblkbuf = page_address(pblkpage); pblkbuf = page_address(pblkpage);
iopagev[0] = pblkpage; iopagev[0] = pblkpage;
memset(&header, 0, sizeof(header)); ret = pblk_read_wait(c->dev->bdev, 0, 1, iopagev);
header.params.priv = c->dev->bdev;
ret = pblk_read_wait(&header.params, 0, 1, iopagev);
if (ret) { if (ret) {
printk(KERN_ERR "%s: failed to read header\n", __func__); printk(KERN_ERR "%s: failed to read header\n", __func__);
goto out; goto out;
} }
memset(&header, 0, sizeof(header));
cbd_header_get(pblkbuf, &header); cbd_header_get(pblkbuf, &header);
header.params.priv = c->dev->bdev;
if (memcmp(header.magic, CBD_MAGIC, sizeof(header.magic)) != 0) { if (memcmp(header.magic, CBD_MAGIC, sizeof(header.magic)) != 0) {
printk(KERN_ERR "%s: bad magic\n", __func__); printk(KERN_ERR "%s: bad magic\n", __func__);

View File

@ -88,7 +88,7 @@ lbatpage_flush(struct lbatpage* lp)
goto unlock; goto unlock;
} }
iopagev[0] = lp->page; iopagev[0] = lp->page;
pblk_write(lp->params, lp->pblk, 1, iopagev); pblk_write(lp->params->priv, lp->pblk, 1, iopagev);
mutex_unlock(&lp->lock); mutex_unlock(&lp->lock);
return ret; return ret;
@ -107,7 +107,7 @@ lbatpage_read(struct lbatpage* lp)
struct page* pagev[1]; struct page* pagev[1];
pagev[0] = lp->page; pagev[0] = lp->page;
ret = pblk_read_wait(lp->params, lp->pblk, 1, pagev); ret = pblk_read_wait(lp->params->priv, lp->pblk, 1, pagev);
return ret; return ret;
} }

View File

@ -397,7 +397,7 @@ lbd_flush(struct lbd* lbd)
pblk = lbatview_elem_pblk(lbd->lv, lbd->lblk, n); pblk = lbatview_elem_pblk(lbd->lv, lbd->lblk, n);
BUG_ON(pblk == PBLK_NONE); BUG_ON(pblk == PBLK_NONE);
iopagev[0] = lbd->pagev[n]; iopagev[0] = lbd->pagev[n];
pblk_write(lbd->params, pblk, 1, iopagev); pblk_write(lbd->params->priv, pblk, 1, iopagev);
} }
while (n < lblk_per_pblk(lbd->params)) { while (n < lblk_per_pblk(lbd->params)) {
unlock_page(lbd->pagev[n]); unlock_page(lbd->pagev[n]);
@ -451,7 +451,7 @@ lbd_read(struct lbd* lbd)
} }
iopagev[0] = lbd->pagev[n]; iopagev[0] = lbd->pagev[n];
/* XXX: Issue non-blocking reads? */ /* XXX: Issue non-blocking reads? */
ret = pblk_read_wait(lbd->params, pblk, 1, iopagev); ret = pblk_read_wait(lbd->params->priv, pblk, 1, iopagev);
if (ret) { if (ret) {
goto out; goto out;
} }

View File

@ -98,7 +98,7 @@ pbat_flush(struct pbat* pbat)
for (n = 0; n < count; ++n, p += PBLK_SIZE) { for (n = 0; n < count; ++n, p += PBLK_SIZE) {
iopagev[n] = virt_to_page(p); iopagev[n] = virt_to_page(p);
} }
pblk_write(pbat->params, pblk, count, iopagev); pblk_write(pbat->params->priv, pblk, count, iopagev);
mutex_unlock(&pbat->lock); mutex_unlock(&pbat->lock);
return ret; return ret;
@ -128,7 +128,7 @@ pbat_read(struct pbat* pbat)
for (n = 0, p = pbat->buf; n < count; ++n, p += PBLK_SIZE) { for (n = 0, p = pbat->buf; n < count; ++n, p += PBLK_SIZE) {
iopagev[n] = virt_to_page(p); iopagev[n] = virt_to_page(p);
} }
ret = pblk_read_wait(pbat->params, pblk, count, iopagev); ret = pblk_read_wait(pbat->params->priv, pblk, count, iopagev);
return ret; return ret;
} }

View File

@ -135,13 +135,13 @@ pblk_io_prepare(struct block_device* bdev, unsigned int op,
} }
int int
pblk_read_wait(struct cbd_params* params, pblk_read_wait(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev) u64 pblk, u32 count, struct page** pagev)
{ {
int ret; int ret;
struct bio* bio; struct bio* bio;
bio = pblk_io_prepare(params->priv, REQ_OP_READ, pblk, count, pagev); bio = pblk_io_prepare(bdev, REQ_OP_READ, pblk, count, pagev);
if (!bio) { if (!bio) {
printk(KERN_ERR "%s: out of memory\n", __func__); printk(KERN_ERR "%s: out of memory\n", __func__);
return -ENOMEM; return -ENOMEM;
@ -156,14 +156,14 @@ pblk_read_wait(struct cbd_params* params,
} }
int int
pblk_read(struct cbd_params* params, pblk_read(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev, u64 pblk, u32 count, struct page** pagev,
pblk_endio_t endio, void* endio_priv) pblk_endio_t endio, void* endio_priv)
{ {
int ret; int ret;
struct bio* bio; struct bio* bio;
bio = pblk_io_prepare(params->priv, REQ_OP_READ, pblk, count, pagev); bio = pblk_io_prepare(bdev, REQ_OP_READ, pblk, count, pagev);
if (!bio) { if (!bio) {
printk(KERN_ERR "%s: out of memory\n", __func__); printk(KERN_ERR "%s: out of memory\n", __func__);
return -ENOMEM; return -ENOMEM;
@ -202,13 +202,13 @@ pblk_write_endio(struct bio* bio)
} }
void void
pblk_write(struct cbd_params* params, pblk_write(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev) u64 pblk, u32 count, struct page** pagev)
{ {
struct bio* bio; struct bio* bio;
u32 n; u32 n;
bio = pblk_io_prepare(params->priv, REQ_OP_WRITE, pblk, count, pagev); bio = pblk_io_prepare(bdev, REQ_OP_WRITE, pblk, count, pagev);
if (!bio) { if (!bio) {
printk(KERN_ERR "%s: out of memory\n", __func__); printk(KERN_ERR "%s: out of memory\n", __func__);
for (n = 0; n < count; ++n) { for (n = 0; n < count; ++n) {

View File

@ -470,12 +470,12 @@ bool cbd_alloc_pagev(struct page** pagev, size_t len);
void cbd_free_pagev(struct page** pagev, size_t len); void cbd_free_pagev(struct page** pagev, size_t len);
/* Core low-level I/O */ /* Core low-level I/O */
int pblk_read_wait(struct cbd_params* params, int pblk_read_wait(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev); u64 pblk, u32 count, struct page** pagev);
int pblk_read(struct cbd_params* params, int pblk_read(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev, u64 pblk, u32 count, struct page** pagev,
pblk_endio_t endio, void* endio_priv); pblk_endio_t endio, void* endio_priv);
void pblk_write(struct cbd_params* params, void pblk_write(struct block_device* bdev,
u64 pblk, u32 count, struct page** pagev); u64 pblk, u32 count, struct page** pagev);
struct pbat; struct pbat;