From: Joao Eduardo Luis Date: Fri, 27 Jun 2014 20:41:18 +0000 (+0100) Subject: mon: OSDMonitor: add 'osd pool get-quota' command X-Git-Tag: v0.84~134^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=714a9bb5a058b2553f3be3e4cfb7e7f30150e75a;p=ceph.git mon: OSDMonitor: add 'osd pool get-quota' command Enables us to obtain current quotas for a given pool. Fixes: #8523 Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h index e01bcba1a7ee..e8f1b2ac1813 100644 --- a/src/mon/MonCommands.h +++ b/src/mon/MonCommands.h @@ -587,6 +587,10 @@ COMMAND("osd pool set-quota " \ "name=field,type=CephChoices,strings=max_objects|max_bytes " \ "name=val,type=CephString", "set object or byte limit on pool", "osd", "rw", "cli,rest") +COMMAND("osd pool get-quota " \ + "name=pool,type=CephPoolname ", + "obtain object or byte limits for pool", + "osd", "r", "cli,rest") COMMAND("osd pool stats " \ "name=name,type=CephString,req=false", "obtain stats from all pools, or from specified pool", diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c649a4de4e26..71018d4e7e5a 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2676,6 +2676,45 @@ stats_out: rdata.append("\n"); r = 0; + } else if (prefix == "osd pool get-quota") { + string pool_name; + cmd_getval(g_ceph_context, cmdmap, "pool", pool_name); + + int64_t poolid = osdmap.lookup_pg_pool_name(pool_name); + if (poolid < 0) { + assert(poolid == -ENOENT); + ss << "unrecognized pool '" << pool_name << "'"; + r = -ENOENT; + goto reply; + } + const pg_pool_t *p = osdmap.get_pg_pool(poolid); + + if (f) { + f->open_object_section("pool_quotas"); + f->dump_string("pool_name", pool_name); + f->dump_unsigned("pool_id", poolid); + f->dump_unsigned("quota_max_objects", p->quota_max_objects); + f->dump_unsigned("quota_max_bytes", p->quota_max_bytes); + f->close_section(); + f->flush(rdata); + } else { + stringstream rs; + rs << "quotas for pool '" << pool_name << "':\n" + << " max objects: "; + if (p->quota_max_objects == 0) + rs << "N/A"; + else + rs << si_t(p->quota_max_objects) << " objects"; + rs << "\n" + << " max bytes : "; + if (p->quota_max_bytes == 0) + rs << "N/A"; + else + rs << si_t(p->quota_max_bytes) << "B"; + rdata.append(rs.str()); + } + rdata.append("\n"); + r = 0; } else if (prefix == "osd crush rule list" || prefix == "osd crush rule ls") { string format;