aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/osd_client.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ceph/osd_client.c')
-rw-r--r--fs/ceph/osd_client.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/fs/ceph/osd_client.c b/fs/ceph/osd_client.c
index c5d818e73add..0edb43f1ef26 100644
--- a/fs/ceph/osd_client.c
+++ b/fs/ceph/osd_client.c
@@ -161,6 +161,7 @@ static int op_needs_trail(int op)
161 case CEPH_OSD_OP_GETXATTR: 161 case CEPH_OSD_OP_GETXATTR:
162 case CEPH_OSD_OP_SETXATTR: 162 case CEPH_OSD_OP_SETXATTR:
163 case CEPH_OSD_OP_CMPXATTR: 163 case CEPH_OSD_OP_CMPXATTR:
164 case CEPH_OSD_OP_CALL:
164 return 1; 165 return 1;
165 default: 166 default:
166 return 0; 167 return 0;
@@ -301,6 +302,23 @@ static void osd_req_encode_op(struct ceph_osd_request *req,
301 ceph_pagelist_append(req->r_trail, src->xattr.val, 302 ceph_pagelist_append(req->r_trail, src->xattr.val,
302 src->xattr.value_len); 303 src->xattr.value_len);
303 break; 304 break;
305 case CEPH_OSD_OP_CALL:
306 BUG_ON(!req->r_trail);
307
308 dst->cls.class_len = src->cls.class_len;
309 dst->cls.method_len = src->cls.method_len;
310 dst->cls.indata_len = cpu_to_le32(src->cls.indata_len);
311
312 ceph_pagelist_append(req->r_trail, src->cls.class_name,
313 src->cls.class_len);
314 ceph_pagelist_append(req->r_trail, src->cls.method_name,
315 src->cls.method_len);
316 ceph_pagelist_append(req->r_trail, src->cls.indata,
317 src->cls.indata_len);
318 break;
319 case CEPH_OSD_OP_ROLLBACK:
320 dst->snap.snapid = cpu_to_le64(src->snap.snapid);
321 break;
304 case CEPH_OSD_OP_STARTSYNC: 322 case CEPH_OSD_OP_STARTSYNC:
305 break; 323 break;
306 default: 324 default: