#!/bin/bash

#
# Copyright (C) 2007 Karel Zak <kzak@redhat.com>
#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="remount"

. $TS_TOPDIR/functions.sh
ts_init "$*"

ts_check_test_command "$TS_CMD_MOUNT"
ts_check_test_command "$TS_CMD_FINDMNT"

ts_skip_nonroot
ts_check_losetup
ts_check_prog "mkfs.ext2"

# mountpoint
[ -d $TS_MOUNTPOINT ] || mkdir -p $TS_MOUNTPOINT

ts_device_init
DEVICE=$TS_LODEV

MTAB_FILE="/proc/mounts"
has_mtab=$( ts_has_mtab_support )
if [ "$has_mtab" == "yes" ]; then
	MTAB_FILE="/etc/mtab"
fi

mkfs.ext2 $DEVICE &> /dev/null || ts_die "Cannot make ext2 on $DEVICE"

# mount read-write
$TS_CMD_MOUNT $DEVICE $TS_MOUNTPOINT || ts_die "Cannot mount $TS_MOUNTPOINT"

# check the mount
egrep -q "^$DEVICE $TS_MOUNTPOINT" $MTAB_FILE \
 || ts_die "Cannot find $TS_MOUNTPOINT in $MTAB_FILE"

# remount
$TS_CMD_MOUNT -o remount,ro $TS_MOUNTPOINT \
 || ts_die "Cannot remount $TS_MOUNTPOINT"

# check the remount
$TS_CMD_FINDMNT --kernel --mountpoint "$TS_MOUNTPOINT" --options "ro" &> /dev/null
[ "$?" == "0" ] || ts_die "Cannot find read-only in $TS_MOUNTPOINT in /proc/self/mountinfo"

ts_log "Success"
ts_finalize

