]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: Do a write even for 0 length operation
authorSamuel Just <samuel.just@dreamhost.com>
Thu, 12 Jan 2012 21:13:47 +0000 (13:13 -0800)
committerSamuel Just <samuel.just@dreamhost.com>
Thu, 12 Jan 2012 21:21:19 +0000 (13:21 -0800)
Otherwise, a 0 length write to an offset past the end of the file will
cause the internal accounting to reflect the full size of the file, but
not the file on disk.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
src/osd/ReplicatedPG.cc

index c015ae0511b2282d4b861bb7357c89ee3ec57e37..120592c97fc84070bc0d0ba1e7058176bbe4d790 100644 (file)
@@ -1618,13 +1618,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops,
          oi.truncate_seq = op.extent.truncate_seq;
          oi.truncate_size = op.extent.truncate_size;
        }
-        if (op.extent.length) {
-         bufferlist nbl;
-         bp.copy(op.extent.length, nbl);
-         t.write(coll, soid, op.extent.offset, op.extent.length, nbl);
-        } else {
-          t.touch(coll, soid);
-        }
+       bufferlist nbl;
+       bp.copy(op.extent.length, nbl);
+       t.write(coll, soid, op.extent.offset, op.extent.length, nbl);
        write_update_size_and_usage(ctx->delta_stats, oi, ssc->snapset, ctx->modified_ranges,
                                    op.extent.offset, op.extent.length, true);
        if (!obs.exists) {