{
switch (op) {
case CEPH_OSD_OP_READ: return "read";
+ case CEPH_OSD_OP_SYNC_READ: return "sync_read";
case CEPH_OSD_OP_STAT: return "stat";
case CEPH_OSD_OP_MAPEXT: return "mapext";
case CEPH_OSD_OP_SPARSE_READ: return "sparse-read";
CEPH_OSD_OP_LIST_SNAPS = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 10,
+ /* sync */
+ CEPH_OSD_OP_SYNC_READ = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 11,
+
/* write */
CEPH_OSD_OP_WRITE = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 1,
CEPH_OSD_OP_WRITEFULL = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 2,
{
ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
vector<OSDOp> ops(1);
- ops[0].op.op = CEPH_OSD_OP_READ;
+ ops[0].op.op = CEPH_OSD_OP_SYNC_READ;
ops[0].op.extent.offset = ofs;
ops[0].op.extent.length = len;
int r = (*pctx)->pg->do_osd_ops(*pctx, ops);
ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
vector<OSDOp> ops(1);
int ret;
- ops[0].op.op = CEPH_OSD_OP_READ;
+ ops[0].op.op = CEPH_OSD_OP_SYNC_READ;
ops[0].op.extent.offset = ofs;
ops[0].op.extent.length = len;
ret = (*pctx)->pg->do_osd_ops(*pctx, ops);
// --- READS ---
+ case CEPH_OSD_OP_SYNC_READ:
+ if (pool.info.ec_pool()) {
+ result = -EOPNOTSUPP;
+ break;
+ }
+ // fall through
case CEPH_OSD_OP_READ:
++ctx->num_read;
{
// -- trivial map --
case CEPH_OSD_OP_TMAPGET:
+ if (pool.info.ec_pool()) {
+ result = -EOPNOTSUPP;
+ break;
+ }
++ctx->num_read;
{
vector<OSDOp> nops(1);
OSDOp& newop = nops[0];
- newop.op.op = CEPH_OSD_OP_READ;
+ newop.op.op = CEPH_OSD_OP_SYNC_READ;
newop.op.extent.offset = 0;
newop.op.extent.length = 0;
do_osd_ops(ctx, nops);
break;
case CEPH_OSD_OP_TMAPPUT:
+ if (pool.info.ec_pool()) {
+ result = -EOPNOTSUPP;
+ break;
+ }
++ctx->num_write;
{
//_dout_lock.Lock();
break;
case CEPH_OSD_OP_TMAPUP:
+ if (pool.info.ec_pool()) {
+ result = -EOPNOTSUPP;
+ break;
+ }
++ctx->num_write;
result = do_tmapup(ctx, bp, osd_op);
break;