#!/usr/local/bin/bash

if [ "$1" = "" ]; then
	echo "Usage: isi_save_meta <destination directory>"
	exit 1
fi

status_file="/tmp/.save_meta"
devid=`isi_nodes -n \`hostname | awk -F- '{print $NF}'\` %{devid}`
node=`hostname | sed -E "s/-[0-9]*$//"`-$devid
cp /etc/ifs/drives.xml $1/${node}_drives.xml
echo $? > $status_file

# Save each disk in parallel
for drive in `isi_drivenum -D`; do
	if [ "$drive" == "N/A" ]; then
		continue
	fi
	echo "saving disk meta for /dev/${drive}s1e..."
	(
	isi_save_disk_meta -r /dev/${drive}s1e -o $1/${node}_${drive}s1e -v
	echo $? >> $status_file
	) & 
done

# Save the journal.  XXXJMH we don't really want to do this.
(
dd if=/dev/mnv0 bs=1m count=512 2> /dev/null | gzip -c > $1/${node}_mnv0.gz
echo $? >> $status_file
) &

# Should check to see if the journal is clean

wait

exit_status=0
errors=`grep -c -v ^0$ $status_file`

if [ $errors -gt 1 ]; then
	echo "isi_save_meta encountered $errors errors"
	exit_status=1
elif [ $errors -eq 1 ]; then
	echo "isi_save_meta encountered an error"
	exit_status=1
else
	echo "isi_save_meta completed successfully"
fi

rm $status_file

exit $exit_status

