]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: handle COPY_FROM self
authorSage Weil <sage@inktank.com>
Sat, 21 Sep 2013 03:43:00 +0000 (20:43 -0700)
committerSage Weil <sage@inktank.com>
Sat, 21 Sep 2013 03:43:00 +0000 (20:43 -0700)
Return EINVAL if we try to COPY_FROM ourselves.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/ReplicatedPG.cc

index a92403ae3700d4a9e6405686068e212c1988e5ac..a48372fe5611f31e539ffd7e17ac3954211269ce 100644 (file)
@@ -3532,6 +3532,11 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
          hobject_t src(src_name, src_oloc.key, src_snapid,
                        raw_pg.ps(), raw_pg.pool(),
                        src_oloc.nspace);
+         if (src == soid) {
+           dout(20) << " copy from self is invalid" << dendl;
+           result = -EINVAL;
+           break;
+         }
          result = start_copy(ctx, src, src_oloc, src_version, &ctx->copy_op);
          if (result < 0)
            goto fail;