All pastes #365123 Raw Edit

dwon

public shellscript v1 · immutable
#365123 ·published 2007-02-20 18:07 UTC
rendered paste body
#!/bin/bashset -eexport LC_ALL=Ce2fslv="$1"blocks_to_add="$2"if ! [ -b "$e2fslv" ] || ! [ "$blocks_to_add" -gt 0 ] ; then    echo "Usage: $0 LogicalVolumePath blocks_to_add" >&2    exit 255fi# Get logical volume infolvinfo=`lvdisplay -c "$e2fslv"`# Volume group namevgname=`echo "$lvinfo" | cut -d: -f2`# Number of physical extents (PE) in the logical volumeorig_num_pe=`echo "$lvinfo" | cut -d: -f8`# Get volume group infovginfo=`vgdisplay -c "$vgname"`# PE Sizepesize=$(( `echo "$vginfo" | cut -d: -f13` * 1024 ))dumpe2fs -h "$e2fslv" | perl -e '    $blocks_to_add = $ARGV[0];    $pe_size = $ARGV[1];    $block_size = undef;    $block_count = undef;    while(<STDIN>) {        if (/^Block count:\s*(\d+)$/) {            $block_count = $1;        } elsif (/^Block size:\s*(\d+)$/) {            $block_size = $1;        }    }    if (!defined($block_size) or !defined($block_count)) {        exit(1);    }    $total_blocks = $block_count + $blocks_to_add;        $total_pe = int(($total_blocks * $block_size) / $pe_size);    $total_pe++ if ((($total_blocks * $block_size) % $pe_size) > 0);        print "$block_size $block_count $total_blocks $total_pe\n";    exit(0);    ' -- "$blocks_to_add" "$pesize" \| {    read block_size orig_num_blocks new_num_blocks new_num_pe    if ! [ "$orig_num_blocks" -gt 0 ]  ||        ! [ "$new_num_blocks" -gt "$orig_num_blocks" ] ||       ! [ "$blocks_to_add" -gt 0 ] ||       ! [ "$block_size" -gt 0 ] ||       ! [ -b "$e2fslv" ] ||       ! [ "$new_num_pe" -ge "$orig_num_pe" ]    then        echo "Safety check failed.  Aborting."        exit 1    fi    set -x    [ "$new_num_pe" -gt "$orig_num_pe" ] && lvresize -l "$new_num_pe" "$e2fslv"     resize2fs "$e2fslv" "$new_num_blocks"}exit $?# vim:set ts=4 sw=4 sts=4 expandtab: