Skip to content

Commit

Permalink
rgw-admin: fix bucket limit check argparse, div(0)
Browse files Browse the repository at this point in the history
1. normalize arg parsing for "bucket limit check"
1.1 s/buckets/bucket/

2. avoid dividing by num_shards when it is 0

Signed-off-by: Matt Benjamin <[email protected]>
  • Loading branch information
mattbenjamin committed May 26, 2017
1 parent cc2780c commit fb8e2fa
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
16 changes: 8 additions & 8 deletions src/rgw/rgw_admin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -343,7 +343,7 @@ enum {
OPT_KEY_CREATE,
OPT_KEY_RM,
OPT_BUCKETS_LIST,
OPT_BUCKETS_LIMIT_CHECK,
OPT_BUCKET_LIMIT_CHECK,
OPT_BUCKET_LINK,
OPT_BUCKET_UNLINK,
OPT_BUCKET_STATS,
Expand Down Expand Up @@ -562,10 +562,6 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_
} else if (strcmp(prev_cmd, "buckets") == 0) {
if (strcmp(cmd, "list") == 0)
return OPT_BUCKETS_LIST;
if (strcmp(cmd, "limit") == 0) {
*need_more = true;
return 0;
}
} else if (strcmp(prev_cmd, "bucket") == 0) {
if (strcmp(cmd, "list") == 0)
return OPT_BUCKETS_LIST;
Expand All @@ -587,6 +583,10 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_
*need_more = true;
return 0;
}
if (strcmp(cmd, "limit") == 0) {
*need_more = true;
return 0;
}
} else if (prev_prev_cmd && strcmp(prev_prev_cmd, "bucket") == 0) {
if (strcmp(prev_cmd, "sync") == 0) {
if (strcmp(cmd, "status") == 0)
Expand All @@ -597,7 +597,7 @@ static int get_cmd(const char *cmd, const char *prev_cmd, const char *prev_prev_
return OPT_BUCKET_SYNC_RUN;
} else if ((strcmp(prev_cmd, "limit") == 0) &&
(strcmp(cmd, "check") == 0)) {
return OPT_BUCKETS_LIMIT_CHECK;
return OPT_BUCKET_LIMIT_CHECK;
}
} else if (strcmp(prev_cmd, "log") == 0) {
if (strcmp(cmd, "list") == 0)
Expand Down Expand Up @@ -4894,7 +4894,7 @@ int main(int argc, const char **argv)
}
}

if (opt_cmd == OPT_BUCKETS_LIMIT_CHECK) {
if (opt_cmd == OPT_BUCKET_LIMIT_CHECK) {
void *handle;
std::list<std::string> user_ids;
metadata_key = "user";
Expand Down Expand Up @@ -4937,7 +4937,7 @@ int main(int argc, const char **argv)
store->meta_mgr->list_keys_complete(handle);
}
return -ret;
} /* OPT_BUCKETS_LIMIT_CHECK */
} /* OPT_BUCKET_LIMIT_CHECK */

if (opt_cmd == OPT_BUCKETS_LIST) {
if (bucket_name.empty()) {
Expand Down
3 changes: 2 additions & 1 deletion src/rgw/rgw_bucket.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1470,7 +1470,8 @@ int RGWBucketAdminOp::limit_check(RGWRados *store,
}

num_shards = info.num_shards;
uint64_t objs_per_shard = num_objects / num_shards;
uint64_t objs_per_shard =
(num_shards) ? num_objects/num_shards : num_objects;
{
bool warn = false;
stringstream ss;
Expand Down

0 comments on commit fb8e2fa

Please sign in to comment.