MCPcopy Create free account
hub / github.com/ceph/ceph / uninline_data

Method uninline_data

src/client/Client.cc:11300–11343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11298}
11299
11300int 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

Callers

nothing calls this directly

Calls 11

stringifyFunction · 0.85
nowFunction · 0.50
encodeFunction · 0.50
lengthMethod · 0.45
completeMethod · 0.45
createMethod · 0.45
mutateMethod · 0.45
get_snap_contextMethod · 0.45
cmpxattrMethod · 0.45
writeMethod · 0.45
setxattrMethod · 0.45

Tested by

no test coverage detected