|  | #!/bin/bash | 
|  |  | 
|  | # | 
|  | # Copyright (C) 2007 Karel Zak <kzak@redhat.com> | 
|  | # | 
|  | # This file is part of util-linux-ng. | 
|  | # | 
|  | # 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="$(dirname $0)/../.." | 
|  | TS_DESC="mkfs checksums" | 
|  |  | 
|  | . $TS_TOPDIR/functions.sh | 
|  | ts_init "$*" | 
|  | ts_skip_nonroot | 
|  |  | 
|  | set -o pipefail | 
|  |  | 
|  | ORIGPWD=$(pwd) | 
|  | IMAGE_NAME="${TS_TESTNAME}-loop.img" | 
|  | IMAGE_PATH="$TS_OUTDIR/$IMAGE_NAME" | 
|  | IMAGE_SRC="$TS_OUTDIR/${TS_TESTNAME}-data" | 
|  | LABEL="testCramfs" | 
|  |  | 
|  | ts_log "create mountpoint dir" | 
|  |  | 
|  | [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT | 
|  |  | 
|  | ts_log "generate data" | 
|  | if [ ! -d "$IMAGE_SRC" ]; then | 
|  | mkdir -p $IMAGE_SRC | 
|  | for d in `seq 0 110`; do | 
|  | DIRNAME="$IMAGE_SRC/$(printf "dir-%03d" $d)" | 
|  | mkdir -p $DIRNAME | 
|  | for f in `seq 0 10`; do | 
|  | FILENAME="$DIRNAME/$(printf "data.%03d" $f)" | 
|  | printf "data in %03d-%03d" $d $f >> $FILENAME | 
|  | done | 
|  | done | 
|  | fi | 
|  |  | 
|  | cd $IMAGE_SRC | 
|  |  | 
|  | ts_log "list checksums from original data" | 
|  | find -type f -exec md5sum {} \; | sort >> $TS_OUTPUT | 
|  | echo >> $TS_OUTPUT | 
|  |  | 
|  | ts_log "create cramfs image" | 
|  | $TS_CMD_MKCRAMFS -n $LABEL $IMAGE_SRC $IMAGE_PATH 2>&1 >> $TS_OUTPUT | 
|  | [ -s "$IMAGE_PATH" ] || ts_die "Cannot create $IMAGE_PATH" | 
|  |  | 
|  | cd $TS_OUTDIR | 
|  |  | 
|  | ts_log "count MD5 from the image" | 
|  | md5sum $IMAGE_NAME 2>&1 | sort >> $TS_OUTPUT | 
|  | echo >> $TS_OUTPUT | 
|  |  | 
|  | ts_log "create loop device from image" | 
|  | DEVICE=$($TS_CMD_LOSETUP -s -f $IMAGE_PATH) | 
|  |  | 
|  | ts_log "check the image" | 
|  | ts_device_has "TYPE" "cramfs" $DEVICE | 
|  | [  "$?" == "0" ] || ts_die "Cannot found cramfs on $DEVICE" $DEVICE | 
|  |  | 
|  | ts_log "mount the image" | 
|  | $TS_CMD_MOUNT -L $LABEL $TS_MOUNTPOINT 2>&1 >> $TS_OUTPUT | 
|  |  | 
|  | # check it | 
|  | ts_is_mounted $DEVICE || ts_die "Cannot found $DEVICE in /proc/mounts" $DEVICE | 
|  |  | 
|  | cd $TS_MOUNTPOINT | 
|  |  | 
|  | ts_log "list the image" | 
|  | ls -laR --time-style=long-iso . >> $TS_OUTPUT | 
|  | echo >> $TS_OUTPUT | 
|  |  | 
|  | ts_log "list checksums from new data" | 
|  | find . -type f -exec md5sum {} \; | sort >> $TS_OUTPUT | 
|  | echo >> $TS_OUTPUT | 
|  |  | 
|  | cd $ORIGPWD | 
|  |  | 
|  | ts_log "umount the image" | 
|  | $TS_CMD_UMOUNT $DEVICE | 
|  | $TS_CMD_LOSETUP -d $DEVICE 2>&1 >> $TS_OUTPUT | 
|  | ts_finalize | 
|  |  |