#!/bin/sh

set -e

DISK=$AUTOPKGTEST_TMP/disk

cleanup () {
  umount /mnt || true
  [ "$LOOP" ] && losetup -d $LOOP
  rm -f $DISK $DISK.image || true
  service dlm stop
  service corosync stop
}

trap "cleanup" 0 2 3 15

# configure cluster
echo "=== corosync ==="
corosync-quorumtool -e 1
corosync-quorumtool || true

echo "=== dlm ==="
service dlm restart
dlm_tool status

# create test disk
echo "=== losetup ==="
dd if=/dev/zero of=$DISK bs=1M count=200 2>&1
LOOP=$(losetup --find --show $DISK)

# test tools
echo "=== mkfs ==="
mkfs.ocfs2 --cluster-stack=pcmk --cluster-name=debian $LOOP 2>&1

echo "=== pcmk ==="
echo pcmk > /sys/fs/ocfs2/cluster_stack

echo "=== o2image ==="
o2image $LOOP $DISK.image
ls -l $DISK.image

echo "=== fsck ==="
fsck.ocfs2 -f -y $LOOP 2>&1

echo "=== o2cluster ==="
o2cluster -o $LOOP

echo "=== tunefs ==="
tunefs.ocfs2 -L $DISK -N 3 -Q 'Label = %V\nNumSlots = %N\n' $LOOP

echo "=== debugfs ==="
debugfs.ocfs2 -R stats $LOOP

echo "=== o2info ==="
o2info --volinfo $LOOP

echo "=== grow ==="
dd if=/dev/zero of=$DISK bs=1M count=50 seek=200 2>&1
losetup --set-capacity $LOOP
tunefs.ocfs2 -S $LOOP

echo "=== mount ==="
mount $LOOP /mnt
df /mnt

echo "=== mounted ==="
mounted.ocfs2 -d
mounted.ocfs2 -f
