# @param ... can be any option valid for ceph-mon
# @return 0 on success, 1 on error
#
-function run_mon_no_pool() {
+function run_mon() {
local dir=$1
shift
local id=$1
--run-dir=$dir \
--pid-file=$dir/\$name.pid \
--mon-allow-pool-delete \
+ --mon-osd-backfillfull-ratio .99 \
"$@" || return 1
cat > $dir/ceph.conf <<EOF
EOF
}
-function run_mon() {
- local dir=$1
- shift
- local id=$1
- shift
-
- run_mon_no_pool $dir $id "$@" || return 1
-
- ceph osd pool create rbd 8
-
- if test -z "$(get_config mon $id mon_initial_members)" ; then
- ceph osd pool delete rbd rbd --yes-i-really-really-mean-it || return 1
- ceph osd pool create rbd $PG_NUM || return 1
- ceph osd set-backfillfull-ratio .99
- rbd pool init rbd
- fi
-}
-
function test_run_mon() {
local dir=$1
setup $dir || return 1
run_mon $dir a --mon-initial-members=a || return 1
+ create_rbd_pool || return 1
# rbd has not been deleted / created, hence it has pool id 0
ceph osd dump | grep "pool 1 'rbd'" || return 1
kill_daemons $dir || return 1
run_mon $dir a || return 1
+ create_rbd_pool || return 1
# rbd has been deleted / created, hence it does not have pool id 0
! ceph osd dump | grep "pool 1 'rbd'" || return 1
local size=$(CEPH_ARGS='' ceph --format=json daemon $(get_asok_path mon.a) \
teardown $dir || return 1
}
+function create_rbd_pool() {
+ ceph osd pool delete rbd rbd --yes-i-really-really-mean-it || return 1
+ ceph osd pool create rbd $PG_NUM || return 1
+ rbd pool init rbd
+}
+
#######################################################################
function run_mgr() {
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
+ create_rbd_pool || return 1
get_osds rbd GROUP | grep --quiet '^[0-1] [0-1]$' || return 1
teardown $dir || return 1
}
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
get_pg rbd GROUP | grep --quiet '^[0-9]\.[0-9a-f][0-9a-f]*$' || return 1
teardown $dir || return 1
local osd=0
run_mgr $dir x || return 1
run_osd $dir $osd || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
test $(get_primary rbd GROUP) = $osd || return 1
teardown $dir || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local primary=$(get_primary rbd GROUP)
local not_primary=$(get_not_primary rbd GROUP)
local osd=0
run_mgr $dir x || return 1
run_osd $dir $osd || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
rados --pool rbd put GROUP /etc/group || return 1
objectstore_tool $dir $osd GROUP get-bytes | \
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local num_active_clean=$(get_num_active_clean)
test "$num_active_clean" = $PG_NUM || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local num_pgs=$(get_num_pgs)
test "$num_pgs" -gt 0 || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local osd_ids=$(get_osd_id_used_by_pgs | uniq)
test "$osd_ids" = "0" || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
wait_osd_id_used_by_pgs 0 8 || return 1
! TIMEOUT=1 wait_osd_id_used_by_pgs 123 5 || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
stamp=$(get_last_scrub_stamp 2.0)
test -n "$stamp" || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
is_clean || return 1
teardown $dir || return 1
setup $dir || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
+ create_rbd_pool || return 1
! TIMEOUT=1 wait_for_clean || return 1
run_osd $dir 0 || return 1
wait_for_clean || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
repair 2.0 || return 1
kill_daemons $dir KILL osd || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
pg_scrub 2.0 || return 1
kill_daemons $dir KILL osd || return 1
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local pgid=2.0
ceph pg repair $pgid
run_mon $dir a --osd_pool_default_size=1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
rados -p rbd put obj /etc/group
flush_pg_stats
local jq_filter='.pools | .[] | select(.name == "rbd") | .stats'
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
run_osd $dir 2 || return 1
+ create_rbd_pool || return 1
test "$(get_osds_up rbd SOMETHING)" == "1 2 0" || return 1
add_something $dir SOMETHING || return 1
for id in $(seq 0 2) ; do
run_osd $dir $id || return 1
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
for plugin in ${legacy_jerasure_plugins[*]}; do
for id in $(seq 0 10) ; do
run_osd $dir $id || return 1
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
# check that erasure code plugins are preloaded
CEPH_ARGS='' ceph --admin-daemon $(get_asok_path osd.0) log flush || return 1
setup $dir || return 1
run_mon $dir a || return 1
run_mgr $dir x || return 1
+ create_rbd_pool || return 1
+
# check that erasure code plugins are preloaded
CEPH_ARGS='' ceph --admin-daemon $(get_asok_path mon.a) log flush || return 1
grep 'load: jerasure.*lrc' $dir/mon.a.log || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
run_osd $dir 2 || return 1
+ create_rbd_pool || return 1
# create toyfile
dd if=/dev/urandom of=$dir/toyfile bs=1234 count=1
setup $dir || return 1
run_mon $dir a || return 1
+ create_rbd_pool || return 1
ceph osd pool create $TEST_POOL 8
local flag
# from the public-addr.
CEPH_ARGS+="--mon-initial-members=a "
CEPH_ARGS+="--mon-host=${MON_IP}:${MONA_PUBLIC} "
- run_mon_no_pool $dir a --mon-host=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
+ run_mon $dir a --mon-host=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
# now attempt to ping it that should fail.
timeout 3 ceph ping mon.a || return 0
# from the public-addr.
CEPH_ARGS+="--mon-initial-members=a "
CEPH_ARGS+="--mon-host=${MON_IP}:${MONA_PUBLIC} "
- run_mon_no_pool $dir a --mon-host=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
+ run_mon $dir a --mon-host=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
# now forward the public port to the bind port.
port_forward ${MONA_PUBLIC} ${MONA_BIND}
# from the public-addr.
CEPH_ARGS+="--mon-initial-members=a,b,c "
CEPH_ARGS+="--mon-host=${MON_IP}:${MONA_PUBLIC},${MON_IP}:${MONB_PUBLIC},${MON_IP}:${MONC_PUBLIC} "
- run_mon_no_pool $dir a --public-addr=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
- run_mon_no_pool $dir b --public-addr=${MON_IP}:${MONB_PUBLIC} --public-bind-addr=${MON_IP}:${MONB_BIND} || return 1
- run_mon_no_pool $dir c --public-addr=${MON_IP}:${MONC_PUBLIC} --public-bind-addr=${MON_IP}:${MONC_BIND} || return 1
+ run_mon $dir a --public-addr=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
+ run_mon $dir b --public-addr=${MON_IP}:${MONB_PUBLIC} --public-bind-addr=${MON_IP}:${MONB_BIND} || return 1
+ run_mon $dir c --public-addr=${MON_IP}:${MONC_PUBLIC} --public-bind-addr=${MON_IP}:${MONC_BIND} || return 1
# now forward the public port to the bind port.
port_forward ${MONA_PUBLIC} ${MONA_BIND}
# from the public-addr.
CEPH_ARGS+="--mon-initial-members=a,b,c "
CEPH_ARGS+="--mon-host=${MON_IP}:${MONA_PUBLIC},${MON_IP}:${MONB_PUBLIC},${MON_IP}:${MONC_PUBLIC} "
- run_mon_no_pool $dir a --public-addr=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
- run_mon_no_pool $dir b --public-addr=${MON_IP}:${MONB_PUBLIC} --public-bind-addr=${MON_IP}:${MONB_BIND} || return 1
- run_mon_no_pool $dir c --public-addr=${MON_IP}:${MONC_PUBLIC} --public-bind-addr=${MON_IP}:${MONC_BIND} || return 1
+ run_mon $dir a --public-addr=${MON_IP}:${MONA_PUBLIC} --public-bind-addr=${MON_IP}:${MONA_BIND} || return 1
+ run_mon $dir b --public-addr=${MON_IP}:${MONB_PUBLIC} --public-bind-addr=${MON_IP}:${MONB_BIND} || return 1
+ run_mon $dir c --public-addr=${MON_IP}:${MONC_PUBLIC} --public-bind-addr=${MON_IP}:${MONC_BIND} || return 1
# now forward the public port to the bind port.
port_forward ${MONA_PUBLIC} ${MONA_BIND}
run_mon $dir a || return 1
# should have at least one OSD
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
local empty_map=$dir/empty_map
:> $empty_map.txt
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
# success
rados -p rbd put foo $(which rados)
pids[$oi]=$(cat $dir/osd.$oi.pid)
done
+ create_rbd_pool || return 1
+
# make some objects so osds to ensure connectivity between osds
rados -p rbd bench 10 write -b 4096 --max-objects 128 --no-cleanup
sleep 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
destroy_osd $dir 1 || return 1
run_osd $dir 1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
add_something $dir $poolname || return 1
run_osd $dir $id $ceph_osd_args || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
# Create an EC pool
run_osd $dir $id || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
create_ec_pool $poolname $allow_overwrites k=2 m=2 || return 1
run_osd $dir $id || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
create_ec_pool $poolname $allow_overwrites k=4 m=2 l=3 plugin=lrc || return 1
run_osd $dir $id || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
create_ec_pool $poolname $allow_overwrites k=2 m=2 || return 1
run_osd $dir $id || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
create_ec_pool $poolname $allow_overwrites k=2 m=1 || return 1
for id in $(seq 0 2) ; do
activate_osd $dir $id >&2 || return 1
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
# Get get - both objects should in the same PG
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
run_osd $dir 1 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
ceph osd pool create $poolname 1 1 || return 1
run_osd $dir $id || return 1
fi
done
+ create_rbd_pool || return 1
wait_for_clean || return 1
create_ec_pool $poolname $allow_overwrites k=2 m=1 stripe_unit=2K --force || return 1
local ceph_osd_args="--osd-scrub-interval-randomize-ratio=0 --osd-deep-scrub-randomize-ratio=0"
run_osd $dir 0 $ceph_osd_args || return 1
run_osd $dir 1 $ceph_osd_args || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
ceph osd pool create $poolname 1 1 || return 1
run_mgr $dir x || return 1
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
# Create a pool with a single pg
rm -f $dir/bad
run_osd $dir 0 || return 1
+ create_rbd_pool || return 1
wait_for_clean || return 1
local pgid="${poolid}.0"
shift
run_mon $dir a
+ create_rbd_pool
local osd_data=$dir/dir
$mkdir -p $osd_data
run_mon $dir a || return 1
run_mgr $dir x || return 1
+ create_rbd_pool
test_activate $dir $dir/dir1 --osd-uuid $(uuidgen) || return 1
run_mon $dir a || return 1
run_mgr $dir x || return 1
+ create_rbd_pool
$@
test_activate $dir $dir/dir || return 1
run_mon $dir a || return 1
run_mgr $dir x || return 1
+ create_rbd_pool
local osd_data=$dir/dir
$mkdir -p $osd_data
shift
run_mon $dir a
+ create_rbd_pool
local osd_data=$dir/dir
$mkdir -p $osd_data