From: Yehuda Sadeh Date: Mon, 13 May 2013 21:26:19 +0000 (-0700) Subject: rgw: slightly simplify metadata abstraction X-Git-Tag: v0.67-rc1~128^2~126 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d06d0c3bc42c74f49728613b5389b2576571b0e1;p=ceph.git rgw: slightly simplify metadata abstraction Signed-off-by: Yehuda Sadeh --- 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 *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 *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 *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 *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)