]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
OSDMonitor: return EEXIST if users try to do a PG merge
authorGreg Farnum <greg@inktank.com>
Mon, 2 Dec 2013 23:11:54 +0000 (15:11 -0800)
committerGreg Farnum <greg@inktank.com>
Mon, 2 Dec 2013 23:13:57 +0000 (15:13 -0800)
This was returning a machine-code success if users tried to merge, and
was erroneously (but harmlessly) increasing the pool's last_change
marker even though it wasn't actually changing anything.

Backport: emperor

Signed-off-by: Greg Farnum <greg@inktank.com>
src/mon/OSDMonitor.cc

index 058a5cfeef3a3f56825f3f74444e914299abf171..7cc2f0d82b69e898036dc58d5d5ab9f4f822393d 100644 (file)
@@ -2802,6 +2802,10 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
     }
     if (n <= (int)p.get_pg_num()) {
       ss << "specified pg_num " << n << " <= current " << p.get_pg_num();
+      if (n < (int)p.get_pg_num())
+       return -EEXIST;
+      else
+       return 0;
     } else {
       for(set<pg_t>::iterator i = mon->pgmon()->pg_map.creating_pgs.begin();
          i != mon->pgmon()->pg_map.creating_pgs.end();