diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-06-15 16:55:13 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@inktank.com> | 2013-06-15 16:55:13 -0700 |
commit | 8eae1b8ba2ded15438ae1d0b689058a690e4411f (patch) | |
tree | 63d31037dc57e2997720478bc38e1117c560836d | |
parent | 8fa4394f6ae58545c3925fa66dd255959bd11c2d (diff) | |
download | ceph-8eae1b8ba2ded15438ae1d0b689058a690e4411f.tar.gz |
rgw: show mtime for metadata entries
currently only shows for buckets
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r-- | src/rgw/rgw_admin.cc | 6 | ||||
-rw-r--r-- | src/rgw/rgw_bucket.cc | 28 | ||||
-rw-r--r-- | src/rgw/rgw_metadata.cc | 4 | ||||
-rw-r--r-- | src/rgw/rgw_metadata.h | 3 | ||||
-rw-r--r-- | src/rgw/rgw_op.cc | 14 | ||||
-rw-r--r-- | src/rgw/rgw_rados.cc | 21 | ||||
-rw-r--r-- | src/rgw/rgw_rados.h | 3 | ||||
-rw-r--r-- | src/rgw/rgw_rest_log.cc | 4 | ||||
-rw-r--r-- | src/rgw/rgw_tools.cc | 4 | ||||
-rw-r--r-- | src/rgw/rgw_tools.h | 2 | ||||
-rw-r--r-- | src/rgw/rgw_user.cc | 27 | ||||
-rw-r--r-- | src/rgw/rgw_user.h | 12 |
12 files changed, 78 insertions, 50 deletions
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index d8382ca1990..2d1a5c955c7 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -438,7 +438,8 @@ static void dump_bucket_usage(map<RGWObjCategory, RGWBucketStats>& stats, Format int bucket_stats(rgw_bucket& bucket, Formatter *formatter) { RGWBucketInfo bucket_info; - int r = store->get_bucket_info(NULL, bucket.name, bucket_info, NULL); + time_t mtime; + int r = store->get_bucket_info(NULL, bucket.name, bucket_info, NULL, &mtime); if (r < 0) return r; @@ -457,6 +458,7 @@ int bucket_stats(rgw_bucket& bucket, Formatter *formatter) formatter->dump_string("id", bucket.bucket_id); formatter->dump_string("marker", bucket.marker); formatter->dump_string("owner", bucket_info.owner); + formatter->dump_int("mtime", mtime); formatter->dump_int("ver", bucket_ver); formatter->dump_int("master_ver", master_ver); dump_bucket_usage(stats, formatter); @@ -478,7 +480,7 @@ static int init_bucket(string& bucket_name, rgw_bucket& bucket) { if (!bucket_name.empty()) { RGWBucketInfo bucket_info; - int r = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL); + int r = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL, NULL); if (r < 0) { cerr << "could not get bucket info for bucket=" << bucket_name << std::endl; return r; diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index e38c94aea5e..889859b5e32 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -139,8 +139,9 @@ int RGWBucket::create_bucket(string bucket_str, string& user_id, string& region_ policy.encode(aclbl); RGWObjVersionTracker objv_tracker; + time_t mtime; - ret = store->get_bucket_info(NULL, bucket_str, bucket_info, &objv_tracker); + ret = store->get_bucket_info(NULL, bucket_str, bucket_info, &objv_tracker, &mtime); if (ret < 0) return ret; @@ -218,7 +219,8 @@ void check_bad_user_bucket_mapping(RGWRados *store, const string& user_id, bool RGWBucketInfo bucket_info; RGWObjVersionTracker objv_tracker; - int r = store->get_bucket_info(NULL, bucket.name, bucket_info, &objv_tracker); + time_t mtime; + int r = store->get_bucket_info(NULL, bucket.name, bucket_info, &objv_tracker, &mtime); if (r < 0) { ldout(store->ctx(), 0) << "could not get bucket info for bucket=" << bucket << dendl; continue; @@ -283,7 +285,7 @@ int rgw_remove_bucket(RGWRados *store, rgw_bucket& bucket, bool delete_children) obj.bucket = bucket; int max = 1000; - ret = rgw_get_system_obj(store, NULL, store->zone.domain_root, bucket.name, bl, NULL); + ret = rgw_get_system_obj(store, NULL, store->zone.domain_root, bucket.name, bl, NULL, NULL); bufferlist::iterator iter = bl.begin(); try { @@ -363,7 +365,7 @@ int RGWBucket::init(RGWRados *storage, RGWBucketAdminOpState& op_state) if (!bucket_name.empty()) { RGWObjVersionTracker objv_tracker; - int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &objv_tracker); + int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &objv_tracker, NULL); if (r < 0) { ldout(store->ctx(), 0) << "could not get bucket info for bucket=" << bucket_name << dendl; return r; @@ -849,7 +851,8 @@ static int bucket_stats(RGWRados *store, std::string& bucket_name, Formatter *f map<RGWObjCategory, RGWBucketStats> stats; RGWObjVersionTracker objv_tracker; - int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &objv_tracker); + time_t mtime; + int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &objv_tracker, &mtime); if (r < 0) return r; @@ -871,6 +874,7 @@ static int bucket_stats(RGWRados *store, std::string& bucket_name, Formatter *f formatter->dump_string("owner", bucket_info.owner); formatter->dump_int("ver", bucket_ver); formatter->dump_int("master_ver", master_ver); + formatter->dump_int("mtime", mtime); dump_bucket_usage(stats, formatter); formatter->close_section(); @@ -1277,8 +1281,9 @@ struct RGWBucketCompleteInfo { class RGWBucketMetadataObject : public RGWMetadataObject { RGWBucketCompleteInfo info; public: - RGWBucketMetadataObject(RGWBucketCompleteInfo& i, obj_version& v) : info(i) { + RGWBucketMetadataObject(RGWBucketCompleteInfo& i, obj_version& v, time_t m) : info(i) { objv = v; + mtime = m; } void dump(Formatter *f) const { @@ -1290,7 +1295,7 @@ class RGWBucketMetadataHandler : public RGWMetadataHandler { int init_bucket(RGWRados *store, string& bucket_name, rgw_bucket& bucket, RGWObjVersionTracker *objv_tracker) { RGWBucketInfo bucket_info; - int r = store->get_bucket_info(NULL, bucket_name, bucket_info, objv_tracker); + int r = store->get_bucket_info(NULL, bucket_name, bucket_info, objv_tracker, NULL); if (r < 0) { cerr << "could not get bucket info for bucket=" << bucket_name << std::endl; return r; @@ -1307,12 +1312,13 @@ public: RGWBucketCompleteInfo bci; RGWObjVersionTracker objv_tracker; + time_t mtime; - int ret = store->get_bucket_info(NULL, entry, bci.info, &objv_tracker, &bci.attrs); + int ret = store->get_bucket_info(NULL, entry, bci.info, &objv_tracker, &mtime, &bci.attrs); if (ret < 0) return ret; - RGWBucketMetadataObject *mdo = new RGWBucketMetadataObject(bci, objv_tracker.read_version); + RGWBucketMetadataObject *mdo = new RGWBucketMetadataObject(bci, objv_tracker.read_version, mtime); *obj = mdo; @@ -1323,7 +1329,9 @@ public: RGWBucketCompleteInfo bci, old_bci; decode_json_obj(bci, obj); - int ret = store->get_bucket_info(NULL, entry, old_bci.info, &objv_tracker, &old_bci.attrs); + time_t orig_mtime; + + int ret = store->get_bucket_info(NULL, entry, old_bci.info, &objv_tracker, &orig_mtime, &old_bci.attrs); if (ret < 0 && ret != -ENOENT) return ret; diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index 2bf0f2e885f..edf01c8b858 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -289,6 +289,10 @@ int RGWMetadataManager::get(string& metadata_key, Formatter *f) f->open_object_section("metadata_info"); encode_json("key", metadata_key, f); encode_json("ver", obj->get_version(), f); + time_t mtime = obj->get_mtime(); + if (mtime > 0) { + encode_json("mtime", mtime, f); + } encode_json("data", *obj, f); f->close_section(); diff --git a/src/rgw/rgw_metadata.h b/src/rgw/rgw_metadata.h index 80c9f41ae6a..a023b373b10 100644 --- a/src/rgw/rgw_metadata.h +++ b/src/rgw/rgw_metadata.h @@ -27,10 +27,13 @@ enum RGWMDLogStatus { class RGWMetadataObject { protected: obj_version objv; + time_t mtime; public: + RGWMetadataObject() : mtime(0) {} virtual ~RGWMetadataObject() {} obj_version& get_version(); + time_t get_mtime() { return mtime; } virtual void dump(Formatter *f) const = 0; }; diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index 0372e5c3cd9..838f5fb4405 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -192,7 +192,7 @@ static int get_policy_from_attr(CephContext *cct, RGWRados *store, void *ctx, RG /* object exists, but policy is broken */ RGWBucketInfo info; RGWUserInfo uinfo; - int r = store->get_bucket_info(ctx, obj.bucket.name, info, objv_tracker); + int r = store->get_bucket_info(ctx, obj.bucket.name, info, objv_tracker, NULL); if (r < 0) goto done; r = rgw_get_user_info_by_uid(store, info.owner, uinfo); @@ -287,7 +287,7 @@ static int rgw_build_policies(RGWRados *store, struct req_state *s, bool only_bu RGWBucketInfo source_info; - ret = store->get_bucket_info(s->obj_ctx, copy_source_str, source_info, NULL); + ret = store->get_bucket_info(s->obj_ctx, copy_source_str, source_info, NULL, NULL); if (ret == 0) { string& region = source_info.region; s->local_source = (region.empty() && store->region.is_master) || @@ -297,7 +297,7 @@ static int rgw_build_policies(RGWRados *store, struct req_state *s, bool only_bu if (s->bucket_name_str.size()) { bool exists = true; - ret = store->get_bucket_info(s->obj_ctx, s->bucket_name_str, bucket_info, &s->objv_tracker); + ret = store->get_bucket_info(s->obj_ctx, s->bucket_name_str, bucket_info, &s->objv_tracker, NULL); if (ret < 0) { if (ret != -ENOENT) { ldout(s->cct, 0) << "NOTICE: couldn't get bucket from bucket_name (name=" << s->bucket_name_str << ")" << dendl; @@ -515,7 +515,7 @@ int RGWGetObj::handle_user_manifest(const char *prefix) if (bucket_name.compare(s->bucket.name) != 0) { RGWBucketInfo bucket_info; - int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &s->objv_tracker); + int r = store->get_bucket_info(NULL, bucket_name, bucket_info, &s->objv_tracker, NULL); if (r < 0) { ldout(s->cct, 0) << "could not get bucket info for bucket=" << bucket_name << dendl; return r; @@ -961,7 +961,7 @@ void RGWCreateBucket::execute() */ RGWBucketInfo info; map<string, bufferlist> attrs; - int r = store->get_bucket_info(NULL, s->bucket.name, info, &s->objv_tracker, &attrs); + int r = store->get_bucket_info(NULL, s->bucket.name, info, &s->objv_tracker, NULL, &attrs); if (r < 0) { ldout(s->cct, 0) << "ERROR: get_bucket_info on bucket=" << s->bucket.name << " returned err=" << r << " after create_bucket returned -EEXIST" << dendl; ret = r; @@ -1468,7 +1468,7 @@ int RGWCopyObj::verify_permission() if (ret < 0) return ret; - ret = store->get_bucket_info(s->obj_ctx, src_bucket_name, src_bucket_info, NULL); + ret = store->get_bucket_info(s->obj_ctx, src_bucket_name, src_bucket_info, NULL, NULL); if (ret < 0) return ret; @@ -1495,7 +1495,7 @@ int RGWCopyObj::verify_permission() if (src_bucket_name.compare(dest_bucket_name) == 0) { /* will only happen if s->local_source */ dest_bucket_info = src_bucket_info; } else { - ret = store->get_bucket_info(s->obj_ctx, dest_bucket_name, dest_bucket_info, NULL); + ret = store->get_bucket_info(s->obj_ctx, dest_bucket_name, dest_bucket_info, NULL, NULL); if (ret < 0) return ret; } diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 3da9f583762..98b6dd1421d 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -98,7 +98,7 @@ int RGWRegion::read_default(RGWDefaultRegionInfo& default_info) rgw_bucket pool(pool_name.c_str()); bufferlist bl; - int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL); + int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL, NULL); if (ret < 0) return ret; @@ -183,7 +183,7 @@ int RGWRegion::read_info(const string& region_name) string oid = region_info_oid_prefix + name; - int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL); + int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL, NULL); if (ret < 0) { lderr(cct) << "failed reading region info from " << pool << ":" << oid << ": " << cpp_strerror(-ret) << dendl; return ret; @@ -289,7 +289,7 @@ int RGWZoneParams::init(CephContext *cct, RGWRados *store, RGWRegion& region) bufferlist bl; string oid = zone_info_oid_prefix + name; - int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL); + int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL, NULL); if (ret < 0) return ret; @@ -362,7 +362,7 @@ int RGWRegionMap::read(CephContext *cct, RGWRados *store) rgw_bucket pool(pool_name.c_str()); bufferlist bl; - int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL); + int ret = rgw_get_system_obj(store, NULL, pool, oid, bl, NULL, NULL); if (ret < 0) return ret; @@ -1764,7 +1764,7 @@ int RGWRados::select_bucket_placement(string& bucket_name, rgw_bucket& bucket) rgw_obj obj(zone.domain_root, avail_pools); - int ret = rgw_get_system_obj(this, NULL, zone.domain_root, avail_pools, map_bl, NULL); + int ret = rgw_get_system_obj(this, NULL, zone.domain_root, avail_pools, map_bl, NULL, NULL); if (ret < 0) { goto read_omap; } @@ -2624,7 +2624,7 @@ int RGWRados::set_bucket_owner(rgw_bucket& bucket, ACLOwner& owner) RGWBucketInfo info; map<string, bufferlist> attrs; RGWObjVersionTracker objv_tracker; - int r = get_bucket_info(NULL, bucket.name, info, &objv_tracker, &attrs); + int r = get_bucket_info(NULL, bucket.name, info, &objv_tracker, NULL, &attrs); if (r < 0) { ldout(cct, 0) << "NOTICE: get_bucket_info on bucket=" << bucket.name << " returned err=" << r << dendl; return r; @@ -2658,7 +2658,7 @@ int RGWRados::set_buckets_enabled(vector<rgw_bucket>& buckets, bool enabled) RGWBucketInfo info; RGWObjVersionTracker objv_tracker; map<string, bufferlist> attrs; - int r = get_bucket_info(NULL, bucket.name, info, &objv_tracker, &attrs); + int r = get_bucket_info(NULL, bucket.name, info, &objv_tracker, NULL, &attrs); if (r < 0) { ldout(cct, 0) << "NOTICE: get_bucket_info on bucket=" << bucket.name << " returned err=" << r << ", skipping bucket" << dendl; ret = r; @@ -2683,7 +2683,7 @@ int RGWRados::set_buckets_enabled(vector<rgw_bucket>& buckets, bool enabled) int RGWRados::bucket_suspended(rgw_bucket& bucket, bool *suspended) { RGWBucketInfo bucket_info; - int ret = get_bucket_info(NULL, bucket.name, bucket_info, NULL); + int ret = get_bucket_info(NULL, bucket.name, bucket_info, NULL, NULL); if (ret < 0) { return ret; } @@ -4257,11 +4257,12 @@ int RGWRados::get_bucket_stats(rgw_bucket& bucket, uint64_t *bucket_ver, uint64_ return 0; } -int RGWRados::get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& info, RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) +int RGWRados::get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& info, RGWObjVersionTracker *objv_tracker, + time_t *pmtime, map<string, bufferlist> *pattrs) { bufferlist bl; - int ret = rgw_get_system_obj(this, ctx, zone.domain_root, bucket_name, bl, objv_tracker, pattrs); + int ret = rgw_get_system_obj(this, ctx, zone.domain_root, bucket_name, bl, objv_tracker, pmtime, pattrs); if (ret < 0) { info.bucket.name = bucket_name; /* only init this field */ return ret; diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index b0181560dfe..160069bdc7b 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -1070,7 +1070,8 @@ public: int decode_policy(bufferlist& bl, ACLOwner *owner); int get_bucket_stats(rgw_bucket& bucket, uint64_t *bucket_ver, uint64_t *master_ver, map<RGWObjCategory, RGWBucketStats>& stats); - virtual int get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& info, RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs = NULL); + virtual int get_bucket_info(void *ctx, string& bucket_name, RGWBucketInfo& info, RGWObjVersionTracker *objv_tracker, + time_t *pmtime, map<string, bufferlist> *pattrs = NULL); virtual int put_bucket_info(string& bucket_name, RGWBucketInfo& info, bool exclusive, RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs); int cls_rgw_init_index(librados::IoCtx& io_ctx, librados::ObjectWriteOperation& op, string& oid); diff --git a/src/rgw/rgw_rest_log.cc b/src/rgw/rgw_rest_log.cc index b37c88a3ad4..ba821c9b9a2 100644 --- a/src/rgw/rgw_rest_log.cc +++ b/src/rgw/rgw_rest_log.cc @@ -222,7 +222,7 @@ void RGWOp_BILog_List::execute() { return; } - http_ret = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL); + http_ret = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL, NULL); if (http_ret < 0) { dout(5) << "could not get bucket info for bucket=" << bucket_name << dendl; return; @@ -301,7 +301,7 @@ void RGWOp_BILog_Delete::execute() { http_ret = -EINVAL; return; } - http_ret = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL); + http_ret = store->get_bucket_info(NULL, bucket_name, bucket_info, NULL, NULL); if (http_ret < 0) { dout(5) << "could not get bucket info for bucket=" << bucket_name << dendl; return; diff --git a/src/rgw/rgw_tools.cc b/src/rgw/rgw_tools.cc index 3f77c52a0c1..28cc7ccbb90 100644 --- a/src/rgw/rgw_tools.cc +++ b/src/rgw/rgw_tools.cc @@ -35,7 +35,7 @@ int rgw_put_system_obj(RGWRados *rgwstore, rgw_bucket& bucket, string& oid, cons } int rgw_get_system_obj(RGWRados *rgwstore, void *ctx, rgw_bucket& bucket, string& key, bufferlist& bl, - RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs) + RGWObjVersionTracker *objv_tracker, time_t *pmtime, map<string, bufferlist> *pattrs) { int ret; struct rgw_err err; @@ -46,7 +46,7 @@ int rgw_get_system_obj(RGWRados *rgwstore, void *ctx, rgw_bucket& bucket, string do { ret = rgwstore->prepare_get_obj(ctx, obj, NULL, NULL, pattrs, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, objv_tracker, &handle, &err); + NULL, pmtime, NULL, NULL, NULL, NULL, objv_tracker, &handle, &err); if (ret < 0) return ret; diff --git a/src/rgw/rgw_tools.h b/src/rgw/rgw_tools.h index 5c79525ad8f..38ec3e8efc0 100644 --- a/src/rgw/rgw_tools.h +++ b/src/rgw/rgw_tools.h @@ -14,7 +14,7 @@ struct obj_version; int rgw_put_system_obj(RGWRados *rgwstore, rgw_bucket& bucket, string& oid, const char *data, size_t size, bool exclusive, RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs = NULL); int rgw_get_system_obj(RGWRados *rgwstore, void *ctx, rgw_bucket& bucket, string& key, bufferlist& bl, - RGWObjVersionTracker *objv_tracker, map<string, bufferlist> *pattrs = NULL); + RGWObjVersionTracker *objv_tracker, time_t *pmtime, map<string, bufferlist> *pattrs = NULL); int rgw_tools_init(CephContext *cct); void rgw_tools_cleanup(); diff --git a/src/rgw/rgw_user.cc b/src/rgw/rgw_user.cc index d5e341d4c8f..88a65c192fb 100644 --- a/src/rgw/rgw_user.cc +++ b/src/rgw/rgw_user.cc @@ -151,12 +151,13 @@ int rgw_store_user_info(RGWRados *store, RGWUserInfo& info, RGWUserInfo *old_inf return ret; } -int rgw_get_user_info_from_index(RGWRados *store, string& key, rgw_bucket& bucket, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker) +int rgw_get_user_info_from_index(RGWRados *store, string& key, rgw_bucket& bucket, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker, time_t *pmtime) { bufferlist bl; RGWUID uid; - int ret = rgw_get_system_obj(store, NULL, bucket, key, bl, NULL); + int ret = rgw_get_system_obj(store, NULL, bucket, key, bl, NULL, pmtime); if (ret < 0) return ret; @@ -176,12 +177,13 @@ int rgw_get_user_info_from_index(RGWRados *store, string& key, rgw_bucket& bucke * Given a uid, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -int rgw_get_user_info_by_uid(RGWRados *store, string& uid, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker) +int rgw_get_user_info_by_uid(RGWRados *store, string& uid, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker, time_t *pmtime) { bufferlist bl; RGWUID user_id; - int ret = rgw_get_system_obj(store, NULL, store->zone.user_uid_pool, uid, bl, objv_tracker); + int ret = rgw_get_system_obj(store, NULL, store->zone.user_uid_pool, uid, bl, objv_tracker, pmtime); if (ret < 0) return ret; @@ -207,27 +209,30 @@ int rgw_get_user_info_by_uid(RGWRados *store, string& uid, RGWUserInfo& info, RG * Given an email, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker) +int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker, time_t *pmtime) { - return rgw_get_user_info_from_index(store, email, store->zone.user_email_pool, info, objv_tracker); + return rgw_get_user_info_from_index(store, email, store->zone.user_email_pool, info, objv_tracker, pmtime); } /** * Given an swift username, finds the user_info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker) +extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker, time_t *pmtime) { - return rgw_get_user_info_from_index(store, swift_name, store->zone.user_swift_pool, info, objv_tracker); + return rgw_get_user_info_from_index(store, swift_name, store->zone.user_swift_pool, info, objv_tracker, pmtime); } /** * Given an access key, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_access_key(RGWRados *store, string& access_key, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker) +extern int rgw_get_user_info_by_access_key(RGWRados *store, string& access_key, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker, time_t *pmtime) { - return rgw_get_user_info_from_index(store, access_key, store->zone.user_keys_pool, info, objv_tracker); + return rgw_get_user_info_from_index(store, access_key, store->zone.user_keys_pool, info, objv_tracker, pmtime); } int rgw_remove_key_index(RGWRados *store, RGWAccessKey& access_key) @@ -241,7 +246,7 @@ int rgw_remove_uid_index(RGWRados *store, string& uid) { RGWObjVersionTracker objv_tracker; RGWUserInfo info; - int ret = rgw_get_user_info_by_uid(store, uid, info, &objv_tracker); + int ret = rgw_get_user_info_by_uid(store, uid, info, &objv_tracker, NULL); if (ret < 0) return ret; diff --git a/src/rgw/rgw_user.h b/src/rgw/rgw_user.h index 42f8b3e6988..47a4e29e282 100644 --- a/src/rgw/rgw_user.h +++ b/src/rgw/rgw_user.h @@ -56,22 +56,26 @@ extern int rgw_store_user_info(RGWRados *store, RGWUserInfo& info, RGWUserInfo * * Given an email, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_uid(RGWRados *store, string& user_id, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker = NULL); +extern int rgw_get_user_info_by_uid(RGWRados *store, string& user_id, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker = NULL, time_t *pmtime = NULL); /** * Given an swift username, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker = NULL); +extern int rgw_get_user_info_by_email(RGWRados *store, string& email, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker = NULL, time_t *pmtime = NULL); /** * Given an swift username, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker = NULL); +extern int rgw_get_user_info_by_swift(RGWRados *store, string& swift_name, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker = NULL, time_t *pmtime = NULL); /** * Given an access key, finds the user info associated with it. * returns: 0 on success, -ERR# on failure (including nonexistence) */ -extern int rgw_get_user_info_by_access_key(RGWRados *store, string& access_key, RGWUserInfo& info, RGWObjVersionTracker *objv_tracker = NULL); +extern int rgw_get_user_info_by_access_key(RGWRados *store, string& access_key, RGWUserInfo& info, + RGWObjVersionTracker *objv_tracker = NULL, time_t *pmtime = NULL); /** * Given an RGWUserInfo, deletes the user and its bucket ACLs. */ |