Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 260856
b: refs/heads/master
c: 50828d7
h: refs/heads/master
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed Jul 15, 2011
1 parent a1c4846 commit f3aa61d
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 275acaafd45fbc8ecc3beabd6367e60b3049606a
refs/heads/master: 50828d7e6767a92726708bc0666e2b8b84575808
19 changes: 8 additions & 11 deletions trunk/fs/nfs/read.c
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ static int nfs_pagein_multi(struct nfs_pageio_descriptor *desc, struct list_head
} while(nbytes != 0);
atomic_set(&req->wb_complete, requests);
ClearPageError(page);
desc->pg_rpc_callops = &nfs_read_partial_ops;
return ret;
out_bad:
while (!list_empty(res)) {
Expand Down Expand Up @@ -367,6 +368,7 @@ static int nfs_pagein_one(struct nfs_pageio_descriptor *desc, struct list_head *

nfs_read_rpcsetup(req, data, desc->pg_count, 0);
list_add(&data->list, res);
desc->pg_rpc_callops = &nfs_read_full_ops;
out:
return ret;
}
Expand All @@ -376,19 +378,14 @@ int nfs_generic_pg_readpages(struct nfs_pageio_descriptor *desc)
LIST_HEAD(head);
int ret;

if (desc->pg_bsize < PAGE_CACHE_SIZE) {
if (desc->pg_bsize < PAGE_CACHE_SIZE)
ret = nfs_pagein_multi(desc, &head);
if (ret == 0)
ret = nfs_do_multiple_reads(&head,
&nfs_read_partial_ops,
desc->pg_lseg);
} else {
else
ret = nfs_pagein_one(desc, &head);
if (ret == 0)
ret = nfs_do_multiple_reads(&head,
&nfs_read_full_ops,
desc->pg_lseg);
}

if (ret == 0)
ret = nfs_do_multiple_reads(&head, desc->pg_rpc_callops,
desc->pg_lseg);
put_lseg(desc->pg_lseg);
desc->pg_lseg = NULL;
return ret;
Expand Down
20 changes: 7 additions & 13 deletions trunk/fs/nfs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -975,6 +975,7 @@ static int nfs_flush_multi(struct nfs_pageio_descriptor *desc, struct list_head
offset += len;
} while (nbytes != 0);
atomic_set(&req->wb_complete, requests);
desc->pg_rpc_callops = &nfs_write_partial_ops;
return ret;

out_bad:
Expand Down Expand Up @@ -1031,6 +1032,7 @@ static int nfs_flush_one(struct nfs_pageio_descriptor *desc, struct list_head *r
/* Set up the argument struct */
nfs_write_rpcsetup(req, data, desc->pg_count, 0, desc->pg_ioflags);
list_add(&data->list, res);
desc->pg_rpc_callops = &nfs_write_full_ops;
out:
return ret;
}
Expand All @@ -1040,21 +1042,13 @@ int nfs_generic_pg_writepages(struct nfs_pageio_descriptor *desc)
LIST_HEAD(head);
int ret;

if (desc->pg_bsize < PAGE_CACHE_SIZE) {
if (desc->pg_bsize < PAGE_CACHE_SIZE)
ret = nfs_flush_multi(desc, &head);
if (ret == 0)
ret = nfs_do_multiple_writes(&head,
&nfs_write_partial_ops,
desc->pg_lseg,
desc->pg_ioflags);
} else {
else
ret = nfs_flush_one(desc, &head);
if (ret == 0)
ret = nfs_do_multiple_writes(&head,
&nfs_write_full_ops,
desc->pg_lseg,
desc->pg_ioflags);
}
if (ret == 0)
ret = nfs_do_multiple_writes(&head, desc->pg_rpc_callops,
desc->pg_lseg, desc->pg_ioflags);
put_lseg(desc->pg_lseg);
desc->pg_lseg = NULL;
return ret;
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/nfs_page.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ struct nfs_pageio_descriptor {
const struct nfs_pageio_ops *pg_ops;
int pg_ioflags;
int pg_error;
const struct rpc_call_ops *pg_rpc_callops;
struct pnfs_layout_segment *pg_lseg;
};

Expand Down

0 comments on commit f3aa61d

Please sign in to comment.