summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-05-13 14:26:19 -0700
committerYehuda Sadeh <yehuda@inktank.com>2013-05-13 14:26:19 -0700
commitd06d0c3bc42c74f49728613b5389b2576571b0e1 (patch)
treea01dcc2b15b2c197a2b0249e8922e53e5b4991ab
parentbb6d1f07e4d89d8f2978d2cc8560163bbc115938 (diff)
downloadceph-d06d0c3bc42c74f49728613b5389b2576571b0e1.tar.gz
rgw: slightly simplify metadata abstraction
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--src/rgw/rgw_bucket.cc8
-rw-r--r--src/rgw/rgw_metadata.cc15
-rw-r--r--src/rgw/rgw_metadata.h3
-rw-r--r--src/rgw/rgw_user.cc8
4 files changed, 19 insertions, 15 deletions
diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc
index 1495994b713..4690afdc68f 100644
--- a/src/rgw/rgw_bucket.cc
+++ b/src/rgw/rgw_bucket.cc
@@ -1332,11 +1332,9 @@ public:
return store->delete_bucket(bucket);
}
- int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
- RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) {
- return rgw_put_system_obj(store, store->zone.domain_root, key,
- bl.c_str(), bl.length(), exclusive,
- objv_tracker, pattrs);
+ void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {
+ oid = key;
+ bucket = store->zone.domain_root;
}
int list_keys_init(RGWRados *store, void **phandle)
diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc
index c474a6d0de7..8312da6b3cc 100644
--- a/src/rgw/rgw_metadata.cc
+++ b/src/rgw/rgw_metadata.cc
@@ -5,6 +5,7 @@
#include "cls/version/cls_version_types.h"
#include "rgw_rados.h"
+#include "rgw_tools.h"
#define dout_subsys ceph_subsys_rgw
@@ -183,8 +184,9 @@ public:
virtual int get(RGWRados *store, string& entry, RGWMetadataObject **obj) { return -ENOTSUP; }
virtual int put(RGWRados *store, string& entry, RGWObjVersionTracker& objv_tracker, JSONObj *obj) { return -ENOTSUP; }
- virtual int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
- RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) { return -ENOTSUP; }
+
+ virtual void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {}
+
virtual int remove(RGWRados *store, string& entry, RGWObjVersionTracker& objv_tracker) { return -ENOTSUP; }
virtual int list_keys_init(RGWRados *store, void **phandle) {
@@ -525,7 +527,14 @@ int RGWMetadataManager::put_entry(RGWMetadataHandler *handler, string& key, buff
if (ret < 0)
return ret;
- ret = handler->put_entry(store, key, bl, exclusive, objv_tracker, pattrs);
+ string oid;
+ rgw_bucket bucket;
+
+ handler->get_pool_and_oid(store, key, bucket, oid);
+
+ ret = rgw_put_system_obj(store, bucket, oid,
+ bl.c_str(), bl.length(), exclusive,
+ objv_tracker, pattrs);
if (ret < 0)
return ret;
diff --git a/src/rgw/rgw_metadata.h b/src/rgw/rgw_metadata.h
index b9e10fd7326..21a37e27cab 100644
--- a/src/rgw/rgw_metadata.h
+++ b/src/rgw/rgw_metadata.h
@@ -33,8 +33,7 @@ class RGWMetadataHandler {
friend class RGWMetadataManager;
protected:
- virtual int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
- RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs = NULL) = 0;
+ virtual void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) = 0;
public:
virtual ~RGWMetadataHandler() {}
virtual string get_type() = 0;
diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc
index 0e71dc602eb..4bb4369c2d4 100644
--- a/src/rgw/rgw_user.cc
+++ b/src/rgw/rgw_user.cc
@@ -2287,11 +2287,9 @@ public:
return rgw_delete_user(store, info);
}
- int put_entry(RGWRados *store, string& key, bufferlist& bl, bool exclusive,
- RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) {
- return rgw_put_system_obj(store, store->zone.user_uid_pool, key,
- bl.c_str(), bl.length(), exclusive,
- objv_tracker, pattrs);
+ void get_pool_and_oid(RGWRados *store, string& key, rgw_bucket& bucket, string& oid) {
+ oid = key;
+ bucket = store->zone.user_uid_pool;
}
int list_keys_init(RGWRados *store, void **phandle)