mirror of
https://github.com/ceph/ceph
synced 2025-02-22 18:47:18 +00:00
Merge pull request #947 from dachary/wip-6824
mon: set ceph osd (down|out|in|rm) error code on failure Reviewed-by: Sage Weil <sage@inktank.com>
This commit is contained in:
commit
58d68995c4
@ -1,6 +1,8 @@
|
||||
#!/bin/bash -x
|
||||
|
||||
set -e
|
||||
set -o functrace
|
||||
PS4=' ${FUNCNAME[0]}: $LINENO: '
|
||||
|
||||
get_pg()
|
||||
{
|
||||
@ -26,7 +28,7 @@ expect_false()
|
||||
}
|
||||
|
||||
TMPFILE=/tmp/test_invalid.$$
|
||||
trap "rm $TMPFILE" 0
|
||||
trap "rm -f $TMPFILE" 0
|
||||
|
||||
function check_response()
|
||||
{
|
||||
@ -236,6 +238,8 @@ for id in `ceph osd ls` ; do
|
||||
ceph tell osd.$id version
|
||||
done
|
||||
|
||||
ceph osd rm 0 2>&1 | grep 'EBUSY'
|
||||
|
||||
id=`ceph osd create`
|
||||
ceph osd lost $id --yes-i-really-mean-it
|
||||
ceph osd rm $id
|
||||
@ -323,10 +327,11 @@ for s in pg_num pgp_num size min_size crash_replay_interval crush_ruleset; do
|
||||
ceph osd pool get data $s
|
||||
done
|
||||
|
||||
ceph osd pool get data size | grep 'size: 2'
|
||||
ceph osd pool set data size 3
|
||||
ceph osd pool get data size | grep 'size: 3'
|
||||
ceph osd pool set data size 2
|
||||
old_size=$(ceph osd pool get data size | sed -e 's/size: //')
|
||||
(( new_size = old_size + 1 ))
|
||||
ceph osd pool set data size $new_size
|
||||
ceph osd pool get data size | grep "size: $new_size"
|
||||
ceph osd pool set data size $old_size
|
||||
|
||||
ceph osd pool set data hashpspool true
|
||||
ceph osd pool set data hashpspool false
|
||||
|
@ -3604,17 +3604,15 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
|
||||
long osd = parse_osd_id(idvec[j].c_str(), &ss);
|
||||
if (osd < 0) {
|
||||
ss << "invalid osd id" << osd;
|
||||
// XXX -EINVAL here?
|
||||
err = -EINVAL;
|
||||
continue;
|
||||
} else if (!osdmap.exists(osd)) {
|
||||
ss << "osd." << osd << " does not exist. ";
|
||||
err = 0;
|
||||
continue;
|
||||
}
|
||||
if (prefix == "osd down") {
|
||||
if (osdmap.is_down(osd)) {
|
||||
ss << "osd." << osd << " is already down. ";
|
||||
err = 0;
|
||||
} else {
|
||||
pending_inc.new_state[osd] = CEPH_OSD_UP;
|
||||
ss << "marked down osd." << osd << ". ";
|
||||
@ -3623,7 +3621,6 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
|
||||
} else if (prefix == "osd out") {
|
||||
if (osdmap.is_out(osd)) {
|
||||
ss << "osd." << osd << " is already out. ";
|
||||
err = 0;
|
||||
} else {
|
||||
pending_inc.new_weight[osd] = CEPH_OSD_OUT;
|
||||
ss << "marked out osd." << osd << ". ";
|
||||
@ -3632,7 +3629,6 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
|
||||
} else if (prefix == "osd in") {
|
||||
if (osdmap.is_in(osd)) {
|
||||
ss << "osd." << osd << " is already in. ";
|
||||
err = 0;
|
||||
} else {
|
||||
pending_inc.new_weight[osd] = CEPH_OSD_IN;
|
||||
ss << "marked in osd." << osd << ". ";
|
||||
@ -3640,7 +3636,10 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
|
||||
}
|
||||
} else if (prefix == "osd rm") {
|
||||
if (osdmap.is_up(osd)) {
|
||||
if (any)
|
||||
ss << ", ";
|
||||
ss << "osd." << osd << " is still up; must be down before removal. ";
|
||||
err = -EBUSY;
|
||||
} else {
|
||||
pending_inc.new_state[osd] = osdmap.get_state(osd);
|
||||
pending_inc.new_uuid[osd] = uuid_d();
|
||||
@ -3656,7 +3655,7 @@ bool OSDMonitor::prepare_command(MMonCommand *m)
|
||||
}
|
||||
if (any) {
|
||||
getline(ss, rs);
|
||||
wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));
|
||||
wait_for_finished_proposal(new Monitor::C_Command(mon, m, err, rs, get_last_committed()));
|
||||
return true;
|
||||
}
|
||||
} else if (prefix == "osd reweight") {
|
||||
|
Loading…
Reference in New Issue
Block a user