aboutsummaryrefslogtreecommitdiffstats
path: root/fs/exofs/ios.c
diff options
context:
space:
mode:
authorBoaz Harrosh <bharrosh@panasas.com>2011-05-16 08:26:47 -0400
committerBoaz Harrosh <bharrosh@panasas.com>2011-08-06 22:35:31 -0400
commit85e44df4748670a1a7d8441b2d75843cdebc478a (patch)
treec5bc0cdf7dad56cc6f3a38f99c88f62325a1e029 /fs/exofs/ios.c
parente1042ba0991aab80ced34f7dade6ec25f22b4304 (diff)
exofs: Move exofs specific osd operations out of ios.c
ios.c will be moving to an external library, for use by the objects-layout-driver. Remove from it some exofs specific functions. Also g_attr_logical_length is used both by inode.c and ios.c move definition to the later, to keep it independent Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Diffstat (limited to 'fs/exofs/ios.c')
-rw-r--r--fs/exofs/ios.c64
1 files changed, 3 insertions, 61 deletions
diff --git a/fs/exofs/ios.c b/fs/exofs/ios.c
index 096405e51b9..21d6130b462 100644
--- a/fs/exofs/ios.c
+++ b/fs/exofs/ios.c
@@ -31,44 +31,6 @@
31#define EXOFS_DBGMSG2(M...) do {} while (0) 31#define EXOFS_DBGMSG2(M...) do {} while (0)
32/* #define EXOFS_DBGMSG2 EXOFS_DBGMSG */ 32/* #define EXOFS_DBGMSG2 EXOFS_DBGMSG */
33 33
34void exofs_make_credential(u8 cred_a[OSD_CAP_LEN], const struct osd_obj_id *obj)
35{
36 osd_sec_init_nosec_doall_caps(cred_a, obj, false, true);
37}
38
39int exofs_read_kern(struct osd_dev *od, u8 *cred, struct osd_obj_id *obj,
40 u64 offset, void *p, unsigned length)
41{
42 struct osd_request *or = osd_start_request(od, GFP_KERNEL);
43/* struct osd_sense_info osi = {.key = 0};*/
44 int ret;
45
46 if (unlikely(!or)) {
47 EXOFS_DBGMSG("%s: osd_start_request failed.\n", __func__);
48 return -ENOMEM;
49 }
50 ret = osd_req_read_kern(or, obj, offset, p, length);
51 if (unlikely(ret)) {
52 EXOFS_DBGMSG("%s: osd_req_read_kern failed.\n", __func__);
53 goto out;
54 }
55
56 ret = osd_finalize_request(or, 0, cred, NULL);
57 if (unlikely(ret)) {
58 EXOFS_DBGMSG("Failed to osd_finalize_request() => %d\n", ret);
59 goto out;
60 }
61
62 ret = osd_execute_request(or);
63 if (unlikely(ret))
64 EXOFS_DBGMSG("osd_execute_request() => %d\n", ret);
65 /* osd_req_decode_sense(or, ret); */
66
67out:
68 osd_end_request(or);
69 return ret;
70}
71
72int exofs_get_rw_state(struct exofs_layout *layout, bool is_reading, 34int exofs_get_rw_state(struct exofs_layout *layout, bool is_reading,
73 u64 offset, u64 length, struct exofs_io_state **pios) 35 u64 offset, u64 length, struct exofs_io_state **pios)
74{ 36{
@@ -119,29 +81,6 @@ void exofs_put_io_state(struct exofs_io_state *ios)
119 } 81 }
120} 82}
121 83
122unsigned exofs_layout_od_id(struct exofs_layout *layout,
123 osd_id obj_no, unsigned layout_index)
124{
125/* switch (layout->lay_func) {
126 case LAYOUT_MOVING_WINDOW:
127 {*/
128 unsigned dev_mod = obj_no;
129
130 return (layout_index + dev_mod * layout->mirrors_p1) %
131 layout->s_numdevs;
132/* }
133 case LAYOUT_FUNC_IMPLICT:
134 return layout->devs[layout_index];
135 }*/
136}
137
138static inline struct osd_dev *exofs_ios_od(struct exofs_io_state *ios,
139 unsigned layout_index)
140{
141 return ios->layout->s_ods[
142 exofs_layout_od_id(ios->layout, ios->obj.id, layout_index)];
143}
144
145static void _sync_done(struct exofs_io_state *ios, void *p) 84static void _sync_done(struct exofs_io_state *ios, void *p)
146{ 85{
147 struct completion *waiting = p; 86 struct completion *waiting = p;
@@ -844,3 +783,6 @@ out:
844 exofs_put_io_state(ios); 783 exofs_put_io_state(ios);
845 return ret; 784 return ret;
846} 785}
786
787const struct osd_attr g_attr_logical_length = ATTR_DEF(
788 OSD_APAGE_OBJECT_INFORMATION, OSD_ATTR_OI_LOGICAL_LENGTH, 8);