From: Yehuda Sadeh Date: Tue, 27 Sep 2016 21:11:41 +0000 (-0700) Subject: rgw: limit bucket reshard num shards to max possible X-Git-Tag: v0.94.10~8^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=75f69da3ecba55992453f0a901f997e8a1737884;p=ceph.git rgw: limit bucket reshard num shards to max possible Signed-off-by: Yehuda Sadeh Conflicts: src/rgw/rgw_admin.cc src/rgw/rgw_rados.h --- diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc index a31fa65f5fc8..1fa9dbe4f807 100644 --- a/src/rgw/rgw_admin.cc +++ b/src/rgw/rgw_admin.cc @@ -2686,6 +2686,11 @@ next: return EINVAL; } + if (num_shards > (int)store->get_max_bucket_shards()) { + cerr << "ERROR: num_shards too high, max value: " << store->get_max_bucket_shards() << std::endl; + return EINVAL; + } + RGWBucketInfo bucket_info; map attrs; int ret = init_bucket(bucket_name, bucket_id, bucket_info, bucket, &attrs); diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 7073fcd925bc..a8ded2dc9eca 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -50,8 +50,6 @@ using namespace librados; #define dout_subsys ceph_subsys_rgw -#define MAX_BUCKET_INDEX_SHARDS_PRIME 7877 - using namespace std; static RGWCache cached_rados_provider; diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 2c8860d645c3..75401cc95fa4 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -32,6 +32,8 @@ class RGWGC; #define RGW_BUCKET_INSTANCE_MD_PREFIX ".bucket.meta." +#define MAX_BUCKET_INDEX_SHARDS_PRIME 7877 + static inline void prepend_bucket_marker(rgw_bucket& bucket, const string& orig_oid, string& oid) { if (bucket.marker.empty() || orig_oid.empty()) { @@ -1325,6 +1327,10 @@ public: int get_required_alignment(rgw_bucket& bucket, uint64_t *alignment); int get_max_chunk_size(rgw_bucket& bucket, uint64_t *max_chunk_size); + uint32_t get_max_bucket_shards() { + return MAX_BUCKET_INDEX_SHARDS_PRIME; + } + int list_raw_objects(rgw_bucket& pool, const string& prefix_filter, int max, RGWListRawObjsCtx& ctx, list& oids, bool *is_truncated);