186d7f5d3SJohn Marino#!/bin/bash 286d7f5d3SJohn Marino 386d7f5d3SJohn MarinoCRYPTSETUP="../src/cryptsetup" 486d7f5d3SJohn MarinoDEV="" 586d7f5d3SJohn Marino 686d7f5d3SJohn Marinocleanup() { 786d7f5d3SJohn Marino udevadm settle 2>/dev/null 2>&1 886d7f5d3SJohn Marino rmmod scsi_debug 2>/dev/null 986d7f5d3SJohn Marino sleep 2 1086d7f5d3SJohn Marino} 1186d7f5d3SJohn Marino 1286d7f5d3SJohn Marinofail() 1386d7f5d3SJohn Marino{ 1486d7f5d3SJohn Marino [ -n "$1" ] && echo "$1" 1586d7f5d3SJohn Marino cleanup 1686d7f5d3SJohn Marino exit 100 1786d7f5d3SJohn Marino} 1886d7f5d3SJohn Marino 1986d7f5d3SJohn Marinoadd_device() { 2086d7f5d3SJohn Marino modprobe scsi_debug $@ 2186d7f5d3SJohn Marino if [ $? -ne 0 ] ; then 2286d7f5d3SJohn Marino echo "This kernel seems to not support proper scsi_debug module, test skipped." 2386d7f5d3SJohn Marino exit 0 2486d7f5d3SJohn Marino fi 2586d7f5d3SJohn Marino 2686d7f5d3SJohn Marino sleep 2 2786d7f5d3SJohn Marino DEV=$(grep scsi_debug /sys/block/*/device/model | cut -f4 -d /) 2886d7f5d3SJohn Marino 2986d7f5d3SJohn Marino if [ ! -e /sys/block/$DEV/alignment_offset ] ; then 3086d7f5d3SJohn Marino echo "This kernel seems to not support topology info, test skipped." 3186d7f5d3SJohn Marino cleanup 3286d7f5d3SJohn Marino exit 0 3386d7f5d3SJohn Marino fi 3486d7f5d3SJohn Marino 3586d7f5d3SJohn Marino DEV="/dev/$DEV" 3686d7f5d3SJohn Marino [ -b $DEV ] || fail "Cannot find $DEV." 3786d7f5d3SJohn Marino} 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marino 4086d7f5d3SJohn Marinoformat() # key_bits expected [forced] 4186d7f5d3SJohn Marino{ 4286d7f5d3SJohn Marino if [ -z "$3" ] ; then 4386d7f5d3SJohn Marino echo -n "Formatting using topology info ($1 bits key)...." 4486d7f5d3SJohn Marino echo xxx| $CRYPTSETUP luksFormat $DEV -q -s $1 4586d7f5d3SJohn Marino else 4686d7f5d3SJohn Marino echo -n "Formatting using forced offset $3 ($1 bits key)..." 4786d7f5d3SJohn Marino echo xxx| $CRYPTSETUP luksFormat $DEV -q -s $1 --align-payload=$2 4886d7f5d3SJohn Marino fi 4986d7f5d3SJohn Marino 5086d7f5d3SJohn Marino ALIGN=$($CRYPTSETUP luksDump $DEV |grep "Payload offset" | sed -e s/.*\\t//) 5186d7f5d3SJohn Marino #echo "ALIGN = $ALIGN" 5286d7f5d3SJohn Marino 5386d7f5d3SJohn Marino if [ $ALIGN -ne $2 ] ; then 5486d7f5d3SJohn Marino echo "FAIL" 5586d7f5d3SJohn Marino echo "Expected alignment differs: expected $2 != detected $ALIGN" 5686d7f5d3SJohn Marino fail 5786d7f5d3SJohn Marino fi 5886d7f5d3SJohn Marino echo "PASSED" 5986d7f5d3SJohn Marino} 6086d7f5d3SJohn Marino 6186d7f5d3SJohn Marinoif [ $(id -u) != 0 ]; then 6286d7f5d3SJohn Marino echo "WARNING: You must be root to run this test, test skipped." 6386d7f5d3SJohn Marino exit 0 6486d7f5d3SJohn Marinofi 6586d7f5d3SJohn Marino 6686d7f5d3SJohn Marinomodprobe --dry-run scsi_debug || exit 0 6786d7f5d3SJohn Marinocleanup 6886d7f5d3SJohn Marino 6986d7f5d3SJohn Marinoecho "# Create desktop-class 4K drive" 7086d7f5d3SJohn Marinoecho "# (logical_block_size=512, physical_block_size=4096, alignment_offset=0)" 7186d7f5d3SJohn Marinoadd_device dev_size_mb=16 sector_size=512 physblk_exp=3 num_tgts=1 7286d7f5d3SJohn Marinoformat 256 2112 7386d7f5d3SJohn Marinoformat 128 1088 7486d7f5d3SJohn Marinoformat 256 8192 8192 7586d7f5d3SJohn Marinoformat 128 8192 8192 7686d7f5d3SJohn Marinocleanup 7786d7f5d3SJohn Marino 7886d7f5d3SJohn Marinoecho "# Create desktop-class 4K drive w/ 63-sector DOS partition compensation" 7986d7f5d3SJohn Marinoecho "# (logical_block_size=512, physical_block_size=4096, alignment_offset=3584)" 8086d7f5d3SJohn Marinoadd_device dev_size_mb=16 sector_size=512 physblk_exp=3 lowest_aligned=7 num_tgts=1 8186d7f5d3SJohn Marinoformat 256 2119 8286d7f5d3SJohn Marinoformat 128 1095 8386d7f5d3SJohn Marinocleanup 8486d7f5d3SJohn Marino 8586d7f5d3SJohn Marinoecho "# Create enterprise-class 4K drive" 8686d7f5d3SJohn Marinoecho "# (logical_block_size=4096, physical_block_size=4096, alignment_offset=0)" 8786d7f5d3SJohn Marinoadd_device dev_size_mb=16 sector_size=4096 num_tgts=1 8886d7f5d3SJohn Marinoformat 256 2560 8986d7f5d3SJohn Marinoformat 128 1536 9086d7f5d3SJohn Marinocleanup 9186d7f5d3SJohn Marino 9286d7f5d3SJohn Marinoecho "# Create classic 512b drive and stack dm-linear" 9386d7f5d3SJohn Marinoecho "# (logical_block_size=512, physical_block_size=512, alignment_offset=0)" 9486d7f5d3SJohn Marinoadd_device dev_size_mb=16 sector_size=512 num_tgts=1 9586d7f5d3SJohn MarinoDEV2=$DEV 9686d7f5d3SJohn MarinoDEV=/dev/mapper/luks0xbabe 9786d7f5d3SJohn Marinodmsetup create luks0xbabe --table "0 32768 linear $DEV2 0" 9886d7f5d3SJohn Marinoformat 256 2112 9986d7f5d3SJohn Marinoformat 128 1088 10086d7f5d3SJohn Marinoformat 128 8192 8192 10186d7f5d3SJohn Marinodmsetup remove luks0xbabe 10286d7f5d3SJohn Marinocleanup 103