]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: use append for write and writefull
authorSamuel Just <sam.just@inktank.com>
Wed, 15 Jan 2014 17:21:57 +0000 (09:21 -0800)
committerSamuel Just <sam.just@inktank.com>
Wed, 22 Jan 2014 22:39:17 +0000 (14:39 -0800)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/ReplicatedPG.cc

index 2e2a36e0e2ad2d000091006ee89133aab7296249..4d81303dd90848f0059e6eb219e855d084af38ae 100644 (file)
@@ -3518,7 +3518,11 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        result = check_offset_and_length(op.extent.offset, op.extent.length, cct->_conf->osd_max_object_size);
        if (result < 0)
          break;
-       t->write(soid, op.extent.offset, op.extent.length, osd_op.indata);
+       if (pool.info.ec_pool()) {
+         t->append(soid, op.extent.offset, op.extent.length, osd_op.indata);
+       } else {
+         t->write(soid, op.extent.offset, op.extent.length, osd_op.indata);
+       }
        write_update_size_and_usage(ctx->delta_stats, oi, ssc->snapset, ctx->modified_ranges,
                                    op.extent.offset, op.extent.length, true);
        if (!obs.exists) {
@@ -3548,7 +3552,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
            }
          }
          ctx->mod_desc.create();
-         t->write(soid, op.extent.offset, op.extent.length, osd_op.indata);
+         t->append(soid, op.extent.offset, op.extent.length, osd_op.indata);
          if (obs.exists) {
            t->setattrs(soid, ctx->obc->attr_cache);
          }