timeout 60 rados bench -p foo 15 write -b 4096 --no-cleanup #|| return 1
wait_for_clean || return 1
+ echo PASSED
+ return 0
}
function TEST_bluestore2() {
osd_pid0=$(cat $dir/osd.0.pid)
wait_for_clean || return 1
+
+ echo PASSED
+ return 0
}
function TEST_bluestore_expand() {
ceph osd down 0
ceph-bluestore-tool --log-file $dir/bluestore_tool.log --path $dir/0 qfsck || return 1
+
+ echo PASSED
+ return 0
}
function TEST_bluestore_expand_online() {
local dir=$1
- local flimit=$(ulimit -n)
- if [ $flimit -lt 1536 ]; then
- echo "Low open file limit ($flimit), test may fail. Increase to 1536 or higher and retry if that happens."
- fi
export CEPH_MON="127.0.0.1:7146" # git grep '\<7146\>' : there must be only one
export CEPH_ARGS
CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
ceph-bluestore-tool --path $dir/1 fsck || return 1
ceph-bluestore-tool --path $dir/2 fsck || return 1
ceph-bluestore-tool --path $dir/3 fsck || return 1
-
}
+function TEST_bluestore_expand_with_allocmap_recovery() {
+ local dir=$1
+
+ export CEPH_MON="127.0.0.1:7146" # git grep '\<7146\>' : there must be only one
+ export CEPH_ARGS
+ CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none "
+ CEPH_ARGS+="--mon-host=$CEPH_MON "
+ CEPH_ARGS+="--bluestore_block_size=2G "
+ CEPH_ARGS+="--bluestore_block_db_create=true "
+ CEPH_ARGS+="--bluestore_block_db_size=1G "
+ CEPH_ARGS+="--bluestore_block_wal_size=1G "
+ CEPH_ARGS+="--bluestore_block_wal_create=true "
+ CEPH_ARGS+="--bluestore_fsck_on_mount=true "
+ CEPH_ARGS+="--osd_pool_default_size=1 "
+ CEPH_ARGS+="--osd_pool_default_min_size=1 "
+ CEPH_ARGS+="--bluestore_debug_enforce_settings=ssd "
+ CEPH_ARGS+="--bluestore_allocation_from_file=1 "
+
+ run_mon $dir a || return 1
+ run_mgr $dir x || return 1
+ run_osd $dir 0 || return 1
+ osd_pid0=$(cat $dir/osd.0.pid)
+
+ run_osd $dir 1 || return 1
+ osd_pid1=$(cat $dir/osd.1.pid)
+
+ sleep 5
+
+ create_pool foo 16
+
+ # write some objects
+ timeout 60 rados bench -p foo 5 write -b 4096 --no-cleanup #|| return 1
+
+ echo "after bench"
+
+ # kill OSD.0 non-gracefully
+ while kill -9 $osd_pid0; do sleep 1 ; done
+ ceph osd down 0
+
+ # kill OSD.1 [hopefully] gracefully
+ while kill $osd_pid1; do sleep 1 ; done
+ ceph osd down 1
+
+ available0=$( ceph-objectstore-tool --data-path $dir/0 --op statfs --no-mon-config --format json-pretty | jq ".available" )
+ truncate $dir/0/block -s +2G # 4GB total
+
+ ceph-bluestore-tool --path $dir/0 bluefs-bdev-expand || return 1
+
+ available=$( ceph-objectstore-tool --data-path $dir/0 --op statfs --no-mon-config --format json-pretty | jq ".available" )
+ if [ $(($available-$available0)) -le $((1<<30)) ]; then
+ # Failed to get large enough available space increase
+ echo $available0 " -> " $available ", failed to expand?"
+ return 1
+ fi
+
+ available0=$( ceph-objectstore-tool --data-path $dir/1 --op statfs --no-mon-config --format json-pretty | jq ".available" )
+ truncate $dir/1/block -s +2G # 4GB total
+
+ ceph-bluestore-tool --path $dir/1 bluefs-bdev-expand || return 1
+
+ available=$( ceph-objectstore-tool --data-path $dir/1 --op statfs --no-mon-config --format json-pretty | jq ".available" )
+ if [ $(($available-$available0)) -le $((1<<30)) ]; then
+ # Failed to get large enough available space increase
+ echo $available0 " -> " $available ", failed to expand?"
+ return 1
+ fi
+
+ ceph-bluestore-tool --path $dir/0 fsck || return 1
+ ceph-bluestore-tool --path $dir/1 fsck || return 1
+
+ activate_osd $dir 0 || return 1
+ osd_pid0=$(cat $dir/osd.0.pid)
+
+ activate_osd $dir 1 || return 1
+ osd_pid1=$(cat $dir/osd.1.pid)
+
+ wait_for_clean || return 1
+
+ echo PASSED
+ return 0
+}
main osd-bluefs-volume-ops "$@"
# Local Variables: