| 11298 | } |
| 11299 | |
| 11300 | int Client::uninline_data(Inode *in, Context *onfinish) |
| 11301 | { |
| 11302 | if (!in->inline_data.length()) { |
| 11303 | onfinish->complete(0); |
| 11304 | return 0; |
| 11305 | } |
| 11306 | |
| 11307 | char oid_buf[32]; |
| 11308 | snprintf(oid_buf, sizeof(oid_buf), "%llx.00000000", (long long unsigned)in->ino); |
| 11309 | object_t oid = oid_buf; |
| 11310 | |
| 11311 | ObjectOperation create_ops; |
| 11312 | create_ops.create(false); |
| 11313 | |
| 11314 | objecter->mutate(oid, |
| 11315 | OSDMap::file_to_object_locator(in->layout), |
| 11316 | create_ops, |
| 11317 | in->snaprealm->get_snap_context(), |
| 11318 | ceph::real_clock::now(), |
| 11319 | 0, |
| 11320 | NULL); |
| 11321 | |
| 11322 | bufferlist inline_version_bl; |
| 11323 | encode(in->inline_version, inline_version_bl); |
| 11324 | |
| 11325 | ObjectOperation uninline_ops; |
| 11326 | uninline_ops.cmpxattr("inline_version", |
| 11327 | CEPH_OSD_CMPXATTR_OP_GT, |
| 11328 | CEPH_OSD_CMPXATTR_MODE_U64, |
| 11329 | inline_version_bl); |
| 11330 | bufferlist inline_data = in->inline_data; |
| 11331 | uninline_ops.write(0, inline_data, in->truncate_size, in->truncate_seq); |
| 11332 | uninline_ops.setxattr("inline_version", stringify(in->inline_version)); |
| 11333 | |
| 11334 | objecter->mutate(oid, |
| 11335 | OSDMap::file_to_object_locator(in->layout), |
| 11336 | uninline_ops, |
| 11337 | in->snaprealm->get_snap_context(), |
| 11338 | ceph::real_clock::now(), |
| 11339 | 0, |
| 11340 | onfinish); |
| 11341 | |
| 11342 | return 0; |
| 11343 | } |
| 11344 | |
| 11345 | // |
| 11346 |
nothing calls this directly
no test coverage detected