diff options
author | Benny Halevy <bhalevy@panasas.com> | 2011-05-22 12:47:26 -0400 |
---|---|---|
committer | Boaz Harrosh <bharrosh@panasas.com> | 2011-05-29 13:52:32 -0400 |
commit | fb3296eb4636763918edef2d22e45b85b15d4518 (patch) | |
tree | 31c85255ccfa03cbca2d1e4e52028e489276a73b /fs/nfs/pnfs.h | |
parent | f7da7a129d57bfe0f74573dc03531c63e1360fae (diff) |
pnfs: Use byte-range for layoutget
Add offset and count parameters to pnfs_update_layout and use them to get
the layout in the pageio path.
Order cache layout segments in the following order:
* offset (ascending)
* length (descending)
* iomode (RW before READ)
Test byte range against the layout segment in use in pnfs_{read,write}_pg_test
so not to coalesce pages not using the same layout segment.
[fix lseg ordering]
[clean up pnfs_find_lseg lseg arg]
[remove unnecessary FIXME]
[fix ordering in pnfs_insert_layout]
[clean up pnfs_insert_layout]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Diffstat (limited to 'fs/nfs/pnfs.h')
-rw-r--r-- | fs/nfs/pnfs.h | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/nfs/pnfs.h b/fs/nfs/pnfs.h index 5b083d29533..78f8a4a171b 100644 --- a/fs/nfs/pnfs.h +++ b/fs/nfs/pnfs.h | |||
@@ -131,7 +131,8 @@ void get_layout_hdr(struct pnfs_layout_hdr *lo); | |||
131 | void put_lseg(struct pnfs_layout_segment *lseg); | 131 | void put_lseg(struct pnfs_layout_segment *lseg); |
132 | struct pnfs_layout_segment * | 132 | struct pnfs_layout_segment * |
133 | pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, | 133 | pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, |
134 | enum pnfs_iomode access_type, gfp_t gfp_flags); | 134 | loff_t pos, u64 count, enum pnfs_iomode access_type, |
135 | gfp_t gfp_flags); | ||
135 | void set_pnfs_layoutdriver(struct nfs_server *, u32 id); | 136 | void set_pnfs_layoutdriver(struct nfs_server *, u32 id); |
136 | void unset_pnfs_layoutdriver(struct nfs_server *); | 137 | void unset_pnfs_layoutdriver(struct nfs_server *); |
137 | enum pnfs_try_status pnfs_try_to_write_data(struct nfs_write_data *, | 138 | enum pnfs_try_status pnfs_try_to_write_data(struct nfs_write_data *, |
@@ -271,7 +272,8 @@ static inline void put_lseg(struct pnfs_layout_segment *lseg) | |||
271 | 272 | ||
272 | static inline struct pnfs_layout_segment * | 273 | static inline struct pnfs_layout_segment * |
273 | pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, | 274 | pnfs_update_layout(struct inode *ino, struct nfs_open_context *ctx, |
274 | enum pnfs_iomode access_type, gfp_t gfp_flags) | 275 | loff_t pos, u64 count, enum pnfs_iomode access_type, |
276 | gfp_t gfp_flags) | ||
275 | { | 277 | { |
276 | return NULL; | 278 | return NULL; |
277 | } | 279 | } |