From c4b51e30bb13ba544f084a31a39b129d91094626 Mon Sep 17 00:00:00 2001
From: Sage Weil <sage@newdream.net>
Date: Wed, 5 Oct 2011 13:00:55 -0700
Subject: [PATCH] objecter: normalize oloc.key

If oloc.key == oid, clear it.  Users can set it to the oid or leave it
blank; they are equivalent.

Signed-off-by: Sage Weil <sage@newdream.net>
---
 src/osdc/Objecter.cc | 2 ++
 src/osdc/Objecter.h  | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index 6aa76046157..08e848b55d9 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -133,6 +133,8 @@ tid_t Objecter::linger(const object_t& oid, const object_locator_t& oloc,
   LingerOp *info = new LingerOp;
   info->oid = oid;
   info->oloc = oloc;
+  if (info->oloc.key == oid)
+    info->oloc.key.clear();
   info->snap = snap;
   info->flags = flags;
   info->ops = op.ops;
diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h
index b7873479952..bf1d269bcba 100644
--- a/src/osdc/Objecter.h
+++ b/src/osdc/Objecter.h
@@ -391,6 +391,9 @@ public:
       tid(0), attempts(0),
       paused(false), objver(ov), reply_epoch(NULL) {
       ops.swap(op);
+
+      if (oloc.key == o)
+	oloc.key.clear();
     }
 
     bool operator<(const Op& other) const {