aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exofs/ios.c
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2010-11-16 13:09:58 -0500
committerBoaz Harrosh <bharrosh@panasas.com>2011-08-06 22:35:31 -0400
commite1042ba0991aab80ced34f7dade6ec25f22b4304 (patch)
tree5953383f9235df91acfc2315a5c6fbdfb359ecf1 /fs/exofs/ios.c
parent16f75bb35d54b44356f496272c013f7ace5fa698 (diff)
exofs: Add offset/length to exofs_get_io_state
In future raid code we will need to know the IO offset/length and if it's a read or write to determine some of the array sizes we'll need. So add a new exofs_get_rw_state() API for use when writeing/reading. All other simple cases are left using the old way. The major change to this is that now we need to call exofs_get_io_state later at inode.c::read_exec and inode.c::write_exec when we actually know these things. So this patch is kept separate so I can test things apart from other changes. Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/exofs/ios.c')
-rw-r--r--fs/exofs/ios.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/exofs/ios.c b/fs/exofs/ios.c
index fbb47ba2cd71..096405e51b94 100644
--- a/fs/exofs/ios.c
+++ b/fs/exofs/ios.c
@@ -69,8 +69,8 @@ out:
69 return ret; 69 return ret;
70} 70}
71 71
72int exofs_get_io_state(struct exofs_layout *layout, 72int exofs_get_rw_state(struct exofs_layout *layout, bool is_reading,
73 struct exofs_io_state **pios) 73 u64 offset, u64 length, struct exofs_io_state **pios)
74{ 74{
75 struct exofs_io_state *ios; 75 struct exofs_io_state *ios;
76 76
@@ -87,10 +87,20 @@ int exofs_get_io_state(struct exofs_layout *layout,
87 87
88 ios->layout = layout; 88 ios->layout = layout;
89 ios->obj.partition = layout->s_pid; 89 ios->obj.partition = layout->s_pid;
90 ios->offset = offset;
91 ios->length = length;
92 ios->reading = is_reading;
93
90 *pios = ios; 94 *pios = ios;
91 return 0; 95 return 0;
92} 96}
93 97
98int exofs_get_io_state(struct exofs_layout *layout,
99 struct exofs_io_state **ios)
100{
101 return exofs_get_rw_state(layout, true, 0, 0, ios);
102}
103
94void exofs_put_io_state(struct exofs_io_state *ios) 104void exofs_put_io_state(struct exofs_io_state *ios)
95{ 105{
96 if (ios) { 106 if (ios) {