#!/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.
#

#
# The /etc/mtab file should not be modified if RLIMIT_FSIZE (ulimit -f)
# is too low, otherwise the file could be corrupted (incomplete write).
# The [u]mount(8) has to block SIGXFSZ and check if all writes and fflush
# calls are successful.
#

TS_TOPDIR="${0%/*}/../.."
TS_DESC="rlimit-fsize"

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

ts_check_test_command "$TS_CMD_MOUNT"
ts_check_test_command "$TS_CMD_UMOUNT"
ts_check_test_command "$TS_HELPER_MD5"

ts_skip_nonroot
ts_check_losetup
ts_check_prog "mkfs.ext3"

has_mtab=$( ts_has_mtab_support )
[ "$has_mtab" == "yes" ] || ts_skip "mtab unsupported"

[ -L /etc/mtab ] && ts_skip "mtab is symlink"
[ "$(stat --format '%s' /etc/mtab)" -gt "1024" ] || ts_skip "mtab is too small"

function mtab_checksum()
{
	"$TS_HELPER_MD5" < /etc/mtab
}

ts_device_init
DEVICE=$TS_LODEV

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


ts_init_subtest "mount"
OLD_SUM=$(mtab_checksum)
[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
(
	ulimit -f 1
	$TS_CMD_MOUNT $DEVICE $TS_MOUNTPOINT
) &> /dev/null
NEW_SUM=$(mtab_checksum)
[ $NEW_SUM = $OLD_SUM ] && echo "OK: mtab unmodified by mount" >> $TS_OUTPUT
ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
$TS_CMD_UMOUNT $TS_MOUNTPOINT &> /dev/null
ts_is_mounted $DEVICE && ts_die "$DEVICE is still mounted"
ts_finalize_subtest


ts_init_subtest "umount"
[ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
$TS_CMD_MOUNT $DEVICE $TS_MOUNTPOINT &> /dev/null
ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts"
OLD_SUM=$(mtab_checksum)
(
	ulimit -f 1
	$TS_CMD_UMOUNT $TS_MOUNTPOINT &> /dev/null
) &> /dev/null
NEW_SUM=$(mtab_checksum)
[ $NEW_SUM = $OLD_SUM ] && echo "OK: mtab unmodified by umount" >> $TS_OUTPUT
if ts_is_mounted $DEVICE; then
	echo "FAIL: $DEVICE is still mounted" >> $TS_OUTPUT
	$TS_CMD_UMOUNT $TS_MOUNTPOINT &> /dev/null
else
	# repair /etc/mtab
	$TS_CMD_UMOUNT --fake $TS_MOUNTPOINT &> /dev/null
fi
ts_finalize_subtest

ts_log "Success"
ts_finalize
