*
* Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
* Copyright (C) 2013,2014 Cloudwatt <libre.licensing@cloudwatt.com>
+ * Copyright (C) 2014 Red Hat <contact@redhat.com>
*
* Author: Loic Dachary <loic@dachary.org>
*
goto reply;
}
+ bool implicit_ruleset_creation = false;
string ruleset_name;
cmd_getval(g_ceph_context, cmdmap, "ruleset", ruleset_name);
string erasure_code_profile;
}
}
if (ruleset_name == "") {
+ implicit_ruleset_creation = true;
if (erasure_code_profile == "default") {
ruleset_name = "erasure-code";
} else {
ruleset_name = erasure_code_profile;
}
+ if (!implicit_ruleset_creation && ruleset_name != "") {
+ int ruleset;
+ err = get_crush_ruleset(ruleset_name, &ruleset, ss);
+ if (err == -EAGAIN) {
+ wait_for_finished_proposal(new C_RetryMessage(this, m));
+ return true;
+ }
+ if (err)
+ goto reply;
+ }
+
int64_t expected_num_objects;
cmd_getval(g_ceph_context, cmdmap, "expected_num_objects", expected_num_objects, int64_t(0));
if (expected_num_objects < 0) {
#!/bin/bash
#
# Copyright (C) 2013,2014 Cloudwatt <libre.licensing@cloudwatt.com>
+# Copyright (C) 2014 Red Hat <contact@redhat.com>
#
# Author: Loic Dachary <loic@dachary.org>
#
./ceph osd erasure-code-profile set myprofile
./ceph osd pool create $poolname 12 12 erasure myprofile
./ceph osd crush rule ls | grep $poolname || return 1
+ #
+ # a non existent crush ruleset given in argument is an error
+ # http://tracker.ceph.com/issues/9304
+ #
+ poolname=pool_erasure3
+ ! ./ceph osd pool create $poolname 12 12 erasure myprofile INVALIDRULESET || return 1
}
function TEST_erasure_crush_rule_pending() {
test $result = true || return 1
./ceph osd pool create pool_simple 12 12 replicated $crush_ruleset || return 1
CEPH_ARGS='' ./ceph --admin-daemon $dir/a/ceph-mon.a.asok log flush || return 1
- grep "$crush_ruleset is pending, try again" $dir/a/log || return 1
+ grep "$crush_ruleset try again" $dir/a/log || return 1
}
function TEST_erasure_code_profile_default() {
function TEST_replicated_pool() {
local dir=$1
run_mon $dir a --public-addr 127.0.0.1
- ./ceph osd pool create replicated 12 12 replicated 2>&1 | \
+ ./ceph osd pool create replicated 12 12 replicated replicated_ruleset 2>&1 | \
grep "pool 'replicated' created" || return 1
- ./ceph osd pool create replicated 12 12 replicated 2>&1 | \
+ ./ceph osd pool create replicated 12 12 replicated replicated_ruleset 2>&1 | \
grep 'already exists' || return 1
+ ! ./ceph osd pool create replicated0 12 12 replicated INVALIDRULESET
# default is replicated
./ceph osd pool create replicated1 12 12 2>&1 | \
grep "pool 'replicated1' created" || return 1