return backend->remove(os, txn);
case CEPH_OSD_OP_CALL:
return backend->call(os, osd_op, txn);
+ case CEPH_OSD_OP_STAT:
+ return backend->stat(os, osd_op);
default:
logger().warn("unknown op {}", ceph_osd_op_name(op.op));
throw std::runtime_error(
});
}
+seastar::future<> PGBackend::stat(
+ ObjectState& os,
+ OSDOp& osd_op)
+{
+ if (os.exists/* TODO: && !os.is_whiteout() */) {
+ logger().debug("stat os.oi.size={}, os.oi.mtime={}", os.oi.size, os.oi.mtime);
+ encode(os.oi.size, osd_op.outdata);
+ encode(os.oi.mtime, osd_op.outdata);
+ } else {
+ logger().debug("stat object does not exist");
+ throw ::object_not_found();
+ }
+ return seastar::now();
+ // TODO: ctx->delta_stats.num_rd++;
+}
+
bool PGBackend::maybe_create_new_object(
ObjectState& os,
ceph::os::Transaction& txn)