Annotation of qemu/roms/ipxe/contrib/vm/cow, revision 1.1

1.1     ! root        1: #!/bin/sh
        !             2: 
        !             3: set -e
        !             4: 
        !             5: imgloop=
        !             6: tmpfile=
        !             7: tmploop=
        !             8: dmname=
        !             9: cowlink=
        !            10: 
        !            11: function cleanup () {
        !            12:     set +e
        !            13:     [ -n "$cowlink" ] && rm $cowlink
        !            14:     [ -n "$dmname" ] && dmsetup remove $dmname
        !            15:     [ -n "$tmploop" ] && losetup -d $tmploop
        !            16:     [ -n "$tmpfile" ] && rm $tmpfile
        !            17:     [ -n "$imgloop" ] && losetup -d $imgloop
        !            18: }
        !            19: 
        !            20: trap cleanup EXIT
        !            21: 
        !            22: imgfile=$1 ; shift
        !            23: command=$1 ; shift
        !            24: if [ -z "$imgfile" -o -z "$command" ] ; then
        !            25:     echo Syntax: $0 /path/to/image/file command [args..]
        !            26:     exit 1
        !            27: fi
        !            28: 
        !            29: # Set up image loop device
        !            30: x=`losetup -f` ; losetup -r $x $imgfile ; imgloop=$x
        !            31: 
        !            32: # Create temporary file and set up temporary loop device
        !            33: tmpfile=`mktemp $imgfile.XXXXXXXXXX`
        !            34: truncate -r $imgfile $tmpfile
        !            35: x=`losetup -f` ; losetup $x $tmpfile ; tmploop=$x
        !            36: 
        !            37: # Create snapshot device
        !            38: imgsize=`blockdev --getsz $imgloop`
        !            39: x=`basename $imgfile` ; echo 0 $imgsize snapshot $imgloop $tmploop N 16 | \
        !            40:     dmsetup create $x ; dmname=$x
        !            41: chown --reference=$imgfile /dev/mapper/$dmname
        !            42: chmod --reference=$imgfile /dev/mapper/$dmname
        !            43: 
        !            44: # Create symlink
        !            45: x=$imgfile.cow ; ln -s /dev/mapper/$dmname $x ; cowlink=$x
        !            46: 
        !            47: # Wait until killed
        !            48: echo "Created $cowlink"
        !            49: $command "$@" $cowlink

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.