]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Mon: show the pool quota info on ceph df detail command 7094/head
authorsongbaisen <song.baisen@zte.com.cn>
Wed, 3 Feb 2016 06:12:25 +0000 (14:12 +0800)
committersongbaisen <song.baisen@zte.com.cn>
Wed, 3 Feb 2016 06:23:27 +0000 (14:23 +0800)
Fixes: #14216
Signed-off-by: song baisen <song.baisen@zte.com.cn>
src/mon/PGMonitor.cc
src/mon/PGMonitor.h
src/test/Makefile.am
src/test/mon/test_pool_quota.sh [new file with mode: 0755]

index 60ce45d49412654158c4f36daa73ba6847f28f3b..414b2e0188a05989bbf3f53cd250e9b731feeb50 100644 (file)
@@ -1335,7 +1335,7 @@ inline string percentify(const float& a) {
 //void PGMonitor::dump_object_stat_sum(stringstream& ss, Formatter *f,
 void PGMonitor::dump_object_stat_sum(TextTable &tbl, Formatter *f,
                                      object_stat_sum_t &sum, uint64_t avail,
-                                     float raw_used_rate, bool verbose) const
+                                     float raw_used_rate, bool verbose, const pg_pool_t *pool) const
 {
   float curr_object_copies_rate = 0.0;
   if (sum.num_object_copies > 0)
@@ -1347,6 +1347,8 @@ void PGMonitor::dump_object_stat_sum(TextTable &tbl, Formatter *f,
     f->dump_unsigned("max_avail", avail);
     f->dump_int("objects", sum.num_objects);
     if (verbose) {
+      f->dump_int("quota_objects", pool->quota_max_objects);
+      f->dump_int("quota_bytes", pool->quota_max_bytes);
       f->dump_int("dirty", sum.num_objects_dirty);
       f->dump_int("rd", sum.num_rd);
       f->dump_int("rd_bytes", sum.num_rd_kb * 1024ull);
@@ -1414,8 +1416,12 @@ void PGMonitor::dump_pool_stats(stringstream &ss, Formatter *f, bool verbose)
   } else {
     tbl.define_column("NAME", TextTable::LEFT, TextTable::LEFT);
     tbl.define_column("ID", TextTable::LEFT, TextTable::LEFT);
-    if (verbose)
+    if (verbose) {
       tbl.define_column("CATEGORY", TextTable::LEFT, TextTable::LEFT);
+      tbl.define_column("QUOTA OBJECTS", TextTable::LEFT, TextTable::LEFT);
+      tbl.define_column("QUOTA BYTES", TextTable::LEFT, TextTable::LEFT);
+    }
+
     tbl.define_column("USED", TextTable::LEFT, TextTable::RIGHT);
     tbl.define_column("%USED", TextTable::LEFT, TextTable::RIGHT);
     tbl.define_column("MAX AVAIL", TextTable::LEFT, TextTable::RIGHT);
@@ -1485,10 +1491,22 @@ void PGMonitor::dump_pool_stats(stringstream &ss, Formatter *f, bool verbose)
     } else {
       tbl << pool_name
           << pool_id;
-      if (verbose)
+      if (verbose) {
        tbl << "-";
+
+        if (pool->quota_max_objects == 0)
+          tbl << "N/A";
+        else
+          tbl << si_t(pool->quota_max_objects);
+
+        if (pool->quota_max_bytes == 0)
+          tbl << "N/A";
+        else
+          tbl << si_t(pool->quota_max_bytes);
+      }
+
     }
-    dump_object_stat_sum(tbl, f, stat.stats.sum, avail, raw_used_rate, verbose);
+    dump_object_stat_sum(tbl, f, stat.stats.sum, avail, raw_used_rate, verbose, pool);
     if (f)
       f->close_section();  // stats
     else
index c5af197fe591f5bafb7f274f476b7745d7cf65af..233f7768799186321000bb9b8f667ca4a5ffc3d0 100644 (file)
@@ -157,7 +157,7 @@ private:
                            object_stat_sum_t &sum,
                            uint64_t avail,
                            float raw_used_rate,
-                           bool verbose) const;
+                           bool verbose, const pg_pool_t *pool) const;
 
   int64_t get_rule_avail(OSDMap& osdmap, int ruleno) const;
 
index 6abfa43279056ab1a9f500565b81698882a16537..9bcb6b886aa772a3046f938e0b88820cd2a004ca 100644 (file)
@@ -79,6 +79,7 @@ check_SCRIPTS += \
        test/mon/osd-erasure-code-profile.sh \
        test/mon/mkfs.sh \
        test/mon/mon-scrub.sh \
+       test/mon/test_pool_quota.sh \
        test/osd/osd-scrub-repair.sh \
        test/osd/osd-scrub-snaps.sh \
        test/osd/osd-config.sh \
diff --git a/src/test/mon/test_pool_quota.sh b/src/test/mon/test_pool_quota.sh
new file mode 100755 (executable)
index 0000000..fd3879d
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/bash 
+
+#
+# Generic pool quota test
+#
+
+# Includes
+source ../qa/workunits/ceph-helpers.sh
+
+function run() {
+    local dir=$1
+    shift
+
+    export CEPH_MON="127.0.0.1:17108"
+    export CEPH_ARGS
+    CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+    CEPH_ARGS+="--mon-host=$CEPH_MON "
+
+    local funcs=${@:-$(set | sed -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
+    for func in $funcs ; do
+        $func $dir || return 1
+    done
+}
+
+function TEST_pool_quota() {
+    local dir=$1
+    setup $dir || return 1
+    run_mon $dir a || return 1
+    run_osd $dir 0 || return 1
+    run_osd $dir 1 || return 1
+    run_osd $dir 2 || return 1
+   
+    local poolname=testquoa
+    ceph osd  pool create $poolname 20
+    local objects=`ceph df detail | grep -w $poolname|awk '{print $4}'`
+    local bytes=`ceph df detail | grep -w $poolname|awk '{print $5}'`
+
+    echo $objects
+    echo $bytes
+    if [ $objects != 'N/A' ] || [ $bytes != 'N/A' ] ;
+      then
+      return 1
+    fi
+
+    ceph osd pool set-quota  $poolname   max_objects 1000
+    ceph osd pool set-quota  $poolname  max_bytes 1024
+
+    objects=`ceph df detail | grep -w $poolname|awk '{print $4}'`
+    bytes=`ceph df detail | grep -w $poolname|awk '{print $5}'`
+   
+     if [ $objects != '1000' ] || [ $bytes != '1024' ] ;
+       then
+       return 1
+     fi
+
+     ceph osd pool delete  $poolname $poolname  --yes-i-really-really-mean-it
+     teardown $dir || return 1
+}
+
+main testpoolquota