diff options
Diffstat (limited to 'fs/exofs/ios.c')
-rw-r--r-- | fs/exofs/ios.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/fs/exofs/ios.c b/fs/exofs/ios.c index 4f679317ca54..2b81f99fd62c 100644 --- a/fs/exofs/ios.c +++ b/fs/exofs/ios.c | |||
@@ -107,6 +107,19 @@ void exofs_put_io_state(struct exofs_io_state *ios) | |||
107 | } | 107 | } |
108 | } | 108 | } |
109 | 109 | ||
110 | unsigned exofs_layout_od_id(struct exofs_layout *layout, | ||
111 | osd_id obj_no, unsigned layout_index) | ||
112 | { | ||
113 | return layout_index; | ||
114 | } | ||
115 | |||
116 | static inline struct osd_dev *exofs_ios_od(struct exofs_io_state *ios, | ||
117 | unsigned layout_index) | ||
118 | { | ||
119 | return ios->layout->s_ods[ | ||
120 | exofs_layout_od_id(ios->layout, ios->obj.id, layout_index)]; | ||
121 | } | ||
122 | |||
110 | static void _sync_done(struct exofs_io_state *ios, void *p) | 123 | static void _sync_done(struct exofs_io_state *ios, void *p) |
111 | { | 124 | { |
112 | struct completion *waiting = p; | 125 | struct completion *waiting = p; |
@@ -242,7 +255,7 @@ int exofs_sbi_create(struct exofs_io_state *ios) | |||
242 | for (i = 0; i < ios->layout->s_numdevs; i++) { | 255 | for (i = 0; i < ios->layout->s_numdevs; i++) { |
243 | struct osd_request *or; | 256 | struct osd_request *or; |
244 | 257 | ||
245 | or = osd_start_request(ios->layout->s_ods[i], GFP_KERNEL); | 258 | or = osd_start_request(exofs_ios_od(ios, i), GFP_KERNEL); |
246 | if (unlikely(!or)) { | 259 | if (unlikely(!or)) { |
247 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); | 260 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); |
248 | ret = -ENOMEM; | 261 | ret = -ENOMEM; |
@@ -266,7 +279,7 @@ int exofs_sbi_remove(struct exofs_io_state *ios) | |||
266 | for (i = 0; i < ios->layout->s_numdevs; i++) { | 279 | for (i = 0; i < ios->layout->s_numdevs; i++) { |
267 | struct osd_request *or; | 280 | struct osd_request *or; |
268 | 281 | ||
269 | or = osd_start_request(ios->layout->s_ods[i], GFP_KERNEL); | 282 | or = osd_start_request(exofs_ios_od(ios, i), GFP_KERNEL); |
270 | if (unlikely(!or)) { | 283 | if (unlikely(!or)) { |
271 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); | 284 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); |
272 | ret = -ENOMEM; | 285 | ret = -ENOMEM; |
@@ -290,7 +303,7 @@ int exofs_sbi_write(struct exofs_io_state *ios) | |||
290 | for (i = 0; i < ios->layout->s_numdevs; i++) { | 303 | for (i = 0; i < ios->layout->s_numdevs; i++) { |
291 | struct osd_request *or; | 304 | struct osd_request *or; |
292 | 305 | ||
293 | or = osd_start_request(ios->layout->s_ods[i], GFP_KERNEL); | 306 | or = osd_start_request(exofs_ios_od(ios, i), GFP_KERNEL); |
294 | if (unlikely(!or)) { | 307 | if (unlikely(!or)) { |
295 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); | 308 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); |
296 | ret = -ENOMEM; | 309 | ret = -ENOMEM; |
@@ -361,7 +374,7 @@ int exofs_sbi_read(struct exofs_io_state *ios) | |||
361 | unsigned first_dev = (unsigned)ios->obj.id; | 374 | unsigned first_dev = (unsigned)ios->obj.id; |
362 | 375 | ||
363 | first_dev %= ios->layout->s_numdevs; | 376 | first_dev %= ios->layout->s_numdevs; |
364 | or = osd_start_request(ios->layout->s_ods[first_dev], GFP_KERNEL); | 377 | or = osd_start_request(exofs_ios_od(ios, first_dev), GFP_KERNEL); |
365 | if (unlikely(!or)) { | 378 | if (unlikely(!or)) { |
366 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); | 379 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); |
367 | return -ENOMEM; | 380 | return -ENOMEM; |
@@ -442,7 +455,7 @@ int exofs_oi_truncate(struct exofs_i_info *oi, u64 size) | |||
442 | for (i = 0; i < sbi->layout.s_numdevs; i++) { | 455 | for (i = 0; i < sbi->layout.s_numdevs; i++) { |
443 | struct osd_request *or; | 456 | struct osd_request *or; |
444 | 457 | ||
445 | or = osd_start_request(sbi->layout.s_ods[i], GFP_KERNEL); | 458 | or = osd_start_request(exofs_ios_od(ios, i), GFP_KERNEL); |
446 | if (unlikely(!or)) { | 459 | if (unlikely(!or)) { |
447 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); | 460 | EXOFS_ERR("%s: osd_start_request failed\n", __func__); |
448 | ret = -ENOMEM; | 461 | ret = -ENOMEM; |