diff options
| author | Weston Andros Adamson <dros@primarydata.com> | 2014-06-09 11:48:35 -0400 |
|---|---|---|
| committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2014-06-24 18:47:00 -0400 |
| commit | d45f60c67848b9f19160692581d78e5b4757a000 (patch) | |
| tree | 5f31965abe5bd21e73eae10454db74fe6ce901e9 /fs/nfs/objlayout/objio_osd.c | |
| parent | 823b0c9d9800e712374cda89ac3565bd29f6701b (diff) | |
nfs: merge nfs_pgio_data into _header
struct nfs_pgio_data only exists as a member of nfs_pgio_header, but is
passed around everywhere, because there used to be multiple _data structs
per _header. Many of these functions then use the _data to find a pointer
to the _header. This patch cleans this up by merging the nfs_pgio_data
structure into nfs_pgio_header and passing nfs_pgio_header around instead.
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Weston Andros Adamson <dros@primarydata.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Diffstat (limited to 'fs/nfs/objlayout/objio_osd.c')
| -rw-r--r-- | fs/nfs/objlayout/objio_osd.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/nfs/objlayout/objio_osd.c b/fs/nfs/objlayout/objio_osd.c index 611320753db2..ae05278b3761 100644 --- a/fs/nfs/objlayout/objio_osd.c +++ b/fs/nfs/objlayout/objio_osd.c | |||
| @@ -439,22 +439,21 @@ static void _read_done(struct ore_io_state *ios, void *private) | |||
| 439 | objlayout_read_done(&objios->oir, status, objios->sync); | 439 | objlayout_read_done(&objios->oir, status, objios->sync); |
| 440 | } | 440 | } |
| 441 | 441 | ||
| 442 | int objio_read_pagelist(struct nfs_pgio_data *rdata) | 442 | int objio_read_pagelist(struct nfs_pgio_header *hdr) |
| 443 | { | 443 | { |
| 444 | struct nfs_pgio_header *hdr = rdata->header; | ||
| 445 | struct objio_state *objios; | 444 | struct objio_state *objios; |
| 446 | int ret; | 445 | int ret; |
| 447 | 446 | ||
| 448 | ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, true, | 447 | ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, true, |
| 449 | hdr->lseg, rdata->args.pages, rdata->args.pgbase, | 448 | hdr->lseg, hdr->args.pages, hdr->args.pgbase, |
| 450 | rdata->args.offset, rdata->args.count, rdata, | 449 | hdr->args.offset, hdr->args.count, hdr, |
| 451 | GFP_KERNEL, &objios); | 450 | GFP_KERNEL, &objios); |
| 452 | if (unlikely(ret)) | 451 | if (unlikely(ret)) |
| 453 | return ret; | 452 | return ret; |
| 454 | 453 | ||
| 455 | objios->ios->done = _read_done; | 454 | objios->ios->done = _read_done; |
| 456 | dprintk("%s: offset=0x%llx length=0x%x\n", __func__, | 455 | dprintk("%s: offset=0x%llx length=0x%x\n", __func__, |
| 457 | rdata->args.offset, rdata->args.count); | 456 | hdr->args.offset, hdr->args.count); |
| 458 | ret = ore_read(objios->ios); | 457 | ret = ore_read(objios->ios); |
| 459 | if (unlikely(ret)) | 458 | if (unlikely(ret)) |
| 460 | objio_free_result(&objios->oir); | 459 | objio_free_result(&objios->oir); |
| @@ -487,11 +486,11 @@ static void _write_done(struct ore_io_state *ios, void *private) | |||
| 487 | static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate) | 486 | static struct page *__r4w_get_page(void *priv, u64 offset, bool *uptodate) |
| 488 | { | 487 | { |
| 489 | struct objio_state *objios = priv; | 488 | struct objio_state *objios = priv; |
| 490 | struct nfs_pgio_data *wdata = objios->oir.rpcdata; | 489 | struct nfs_pgio_header *hdr = objios->oir.rpcdata; |
| 491 | struct address_space *mapping = wdata->header->inode->i_mapping; | 490 | struct address_space *mapping = hdr->inode->i_mapping; |
| 492 | pgoff_t index = offset / PAGE_SIZE; | 491 | pgoff_t index = offset / PAGE_SIZE; |
| 493 | struct page *page; | 492 | struct page *page; |
| 494 | loff_t i_size = i_size_read(wdata->header->inode); | 493 | loff_t i_size = i_size_read(hdr->inode); |
| 495 | 494 | ||
| 496 | if (offset >= i_size) { | 495 | if (offset >= i_size) { |
| 497 | *uptodate = true; | 496 | *uptodate = true; |
| @@ -531,15 +530,14 @@ static const struct _ore_r4w_op _r4w_op = { | |||
| 531 | .put_page = &__r4w_put_page, | 530 | .put_page = &__r4w_put_page, |
| 532 | }; | 531 | }; |
| 533 | 532 | ||
| 534 | int objio_write_pagelist(struct nfs_pgio_data *wdata, int how) | 533 | int objio_write_pagelist(struct nfs_pgio_header *hdr, int how) |
| 535 | { | 534 | { |
| 536 | struct nfs_pgio_header *hdr = wdata->header; | ||
| 537 | struct objio_state *objios; | 535 | struct objio_state *objios; |
| 538 | int ret; | 536 | int ret; |
| 539 | 537 | ||
| 540 | ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, false, | 538 | ret = objio_alloc_io_state(NFS_I(hdr->inode)->layout, false, |
| 541 | hdr->lseg, wdata->args.pages, wdata->args.pgbase, | 539 | hdr->lseg, hdr->args.pages, hdr->args.pgbase, |
| 542 | wdata->args.offset, wdata->args.count, wdata, GFP_NOFS, | 540 | hdr->args.offset, hdr->args.count, hdr, GFP_NOFS, |
| 543 | &objios); | 541 | &objios); |
| 544 | if (unlikely(ret)) | 542 | if (unlikely(ret)) |
| 545 | return ret; | 543 | return ret; |
| @@ -551,7 +549,7 @@ int objio_write_pagelist(struct nfs_pgio_data *wdata, int how) | |||
| 551 | objios->ios->done = _write_done; | 549 | objios->ios->done = _write_done; |
| 552 | 550 | ||
| 553 | dprintk("%s: offset=0x%llx length=0x%x\n", __func__, | 551 | dprintk("%s: offset=0x%llx length=0x%x\n", __func__, |
| 554 | wdata->args.offset, wdata->args.count); | 552 | hdr->args.offset, hdr->args.count); |
| 555 | ret = ore_write(objios->ios); | 553 | ret = ore_write(objios->ios); |
| 556 | if (unlikely(ret)) { | 554 | if (unlikely(ret)) { |
| 557 | objio_free_result(&objios->oir); | 555 | objio_free_result(&objios->oir); |
