merge in huge changing of device listing

This commit is contained in:
Tobias Powalowski 2009-06-29 22:56:45 +02:00
parent 7def330a33
commit a1286f8302

View file

@ -263,10 +263,20 @@ findpartitions() {
fi fi
done done
done done
# include any mapped devices, only show dmraid partitions! # include any mapped devices, only show dmraid partitions, remove part of encrypted devices, remove part of lvm!
for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control | grep -v $(dmraid -s -c)$); do for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control); do
echo "/dev/mapper/$devpath" k="$(cryptsetup status $devpath 2>/dev/null | grep device: | sed -e 's#.*\ ##g')"
[ "$1" ] && echo $1 partofcrypt="$partofcrypt $k"
done
for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control); do
k="$(blkid -c=/dev/null /dev/mapper/$devpath 2>/dev/null | grep "TYPE=\"lvm2pv\"" | sed -e 's#:.*##g')"
partoflvm="$partoflvm $k"
done
for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control); do
if ! [ "$(dmraid -s -c | grep $devpath$)" -o "$(echo $partofcrypt | grep $devpath)" -o "$(echo $partoflvm | grep $devpath)" ]; then
echo "/dev/mapper/$devpath"
[ "$1" ] && echo $1
fi
done done
# include none partitionable raid md devices # include none partitionable raid md devices
for devpath in $(ls -d /dev/md* 2>/dev/null | grep md[0-9]); do for devpath in $(ls -d /dev/md* 2>/dev/null | grep md[0-9]); do
@ -381,10 +391,12 @@ findbootloaderpartitions() {
done done
fi fi
else else
# dmraid devices # only show dmraid partitions!
for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control | grep $(dmraid -s -c) | grep -v $(dmraid -s -c)$); do for devpath in $(ls /dev/mapper 2>/dev/null | grep -v control); do
echo "/dev/mapper/$devpath" if ! [ "$(dmraid -s -c | grep $devpath$)" -a "$(dmraid -s -c | grep $devpath)" ]; then
[ "$1" ] && echo $1 echo "/dev/mapper/$devpath"
[ "$1" ] && echo $1
fi
done done
fi fi
} }
@ -401,8 +413,8 @@ get_grub_dmraid_map() {
USE_DMRAID="1" USE_DMRAID="1"
rm /tmp/dev.map rm /tmp/dev.map
DIALOG --infobox "Generating GRUB dmraid device map...\nThis could take a while.\n\n Please be patient." 0 0 DIALOG --infobox "Generating GRUB dmraid device map...\nThis could take a while.\n\n Please be patient." 0 0
majorhd=0
for i in $(dmraid -s -c); do for i in $(dmraid -s -c); do
majorhd=0
echo "(hd$majorhd) /dev/mapper/$i" >> /tmp/dev.map echo "(hd$majorhd) /dev/mapper/$i" >> /tmp/dev.map
majorhd="$(($majorhd+1))" majorhd="$(($majorhd+1))"
done done
@ -422,16 +434,20 @@ get_chs() {
# we need symlinks for grub installation! # we need symlinks for grub installation!
grub_dmraid_hack() { grub_dmraid_hack() {
for i in $(ls /dev/mapper 2>/dev/null | grep -v control | grep $(dmraid -s -c) | grep -v $(dmraid -s -c)$); do for i in $(ls /dev/mapper 2>/dev/null | grep -v control); do
rm -f /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p") if ! [ "$(dmraid -s -c | grep $i$)" ]; then
ln -s /dev/mapper/$i /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p") rm -f /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p")
ln -s /dev/mapper/$i /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p")
fi
done done
} }
# remove created symlinks # remove created symlinks
remove_grub_dmraid_hack(){ remove_grub_dmraid_hack(){
for i in $(ls /dev/mapper 2>/dev/null | grep -v control | grep $(dmraid -s -c) | grep -v $(dmraid -s -c)$); do for i in $(ls /dev/mapper 2>/dev/null | grep -v control); do
rm -f /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p") if ! [ "$(dmraid -s -c | grep $i$)" ]; then
rm -f /dev/mapper/$(echo $i | sed -n -e "s/\(.*\)p/\1/p")
fi
done done
} }
@ -568,8 +584,8 @@ _mkfs() {
jfs) yes | mkfs.jfs ${_device} >$LOG 2>&1; ret=$? ;; jfs) yes | mkfs.jfs ${_device} >$LOG 2>&1; ret=$? ;;
reiserfs) yes | mkreiserfs ${_device} >$LOG 2>&1; ret=$? ;; reiserfs) yes | mkreiserfs ${_device} >$LOG 2>&1; ret=$? ;;
ext2) mkfs.ext2 ${_device} >$LOG 2>&1; ret=$? ;; ext2) mkfs.ext2 ${_device} >$LOG 2>&1; ret=$? ;;
ext3) mkfs.ext3 ${_device} >$LOG 2>&1; ret=$? ;; ext3) mke2fs -t ext3 ${_device} >$LOG 2>&1; ret=$? ;;
ext4) mkfs.ext4 ${_device} >$LOG 2>&1; ret=$? ;; ext4) mke2fs -t ext4 ${_device} >$LOG 2>&1; ret=$? ;;
ntfs-3g) mkfs.ntfs ${_device} >$LOG 2>&1; ret=$? ;; ntfs-3g) mkfs.ntfs ${_device} >$LOG 2>&1; ret=$? ;;
vfat) mkfs.vfat ${_device} >$LOG 2>&1; ret=$? ;; vfat) mkfs.vfat ${_device} >$LOG 2>&1; ret=$? ;;
# don't handle anything else here, we will error later # don't handle anything else here, we will error later
@ -815,8 +831,8 @@ _raid()
PARTS=$(echo $PARTS | sed -e "s#$k\ _##g") PARTS=$(echo $PARTS | sed -e "s#$k\ _##g")
done done
# skip dmraid devices # skip dmraid devices
for i in $(ls /dev/mapper/$(dmraid -s -c)*); do for i in $(dmraid -s -c); do
ALREADYINUSE="$ALREADYINUSE $i" ALREADYINUSE="$ALREADYINUSE /dev/mapper/$i"
done done
for i in $ALREADYINUSE; do for i in $ALREADYINUSE; do
PARTS=$(echo $PARTS | sed -e "s#$i\ _##g") PARTS=$(echo $PARTS | sed -e "s#$i\ _##g")
@ -910,8 +926,8 @@ _raidpartitions()
PARTS=$(echo $PARTS | sed -e "s#$k\ _##g") PARTS=$(echo $PARTS | sed -e "s#$k\ _##g")
done done
# skip dmraid devices # skip dmraid devices
for i in $(ls /dev/mapper/$(dmraid -s -c)*); do for i in $(dmraid -s -c); do
ALREADYINUSE="$ALREADYINUSE $i" ALREADYINUSE="$ALREADYINUSE /dev/mapper/$i"
done done
for i in $ALREADYINUSE; do for i in $ALREADYINUSE; do
PARTS=$(echo $PARTS | sed -e "s#$i\ _##g") PARTS=$(echo $PARTS | sed -e "s#$i\ _##g")
@ -1006,6 +1022,7 @@ _createraid()
# writing raid information to partition table # writing raid information to partition table
if [ "$(echo $RAIDDEVICE | grep /md_d[0-9])" ]; then if [ "$(echo $RAIDDEVICE | grep /md_d[0-9])" ]; then
for i in $(sfdisk -l $RAIDDEVICE | grep ^/dev | grep -v Empty | grep -v Extended | sed -e 's# .*##g'); do for i in $(sfdisk -l $RAIDDEVICE | grep ^/dev | grep -v Empty | grep -v Extended | sed -e 's# .*##g'); do
# output will be /dev/md_d0*
# get device name # get device name
k=$(echo $i | sed -e 's#p[0-9]##g') k=$(echo $i | sed -e 's#p[0-9]##g')
# get partition number of device # get partition number of device
@ -1016,9 +1033,22 @@ _createraid()
else else
for i in $(cat /tmp/.raid | grep -v missing); do for i in $(cat /tmp/.raid | grep -v missing); do
# get device name # get device name
k=$(echo $i | sed -e 's#[0-9]##g') if ! [ "$(echo $i | grep /dev/sd)" -o "$(echo $1 | grep /dev/hd)" ]; then
k=$(echo $i | sed -e 's#p[0-9].*$##')
else
k=$(echo $i | sed -e 's#[0-9].*$##g')
fi
# get partition number of device # get partition number of device
l=$(echo $i | sed -e 's#.*[a-z]##g') if ! [ "$(echo $i | grep /dev/sd)" -o "$(echo $1 | grep /dev/hd)" ]; then
if [ "$(echo $i | egrep 'p[0-9].*$')" ]; then
l=$(echo $i | sed -e 's#.*p##g')
fi
else
if [ "$(echo $1 | egrep '[0-9]$')" ]; then
# /dev/hdXY
l=$(echo $1 | cut -b9-)
fi
fi
DIALOG --infobox "Changing device $k$l to raid..." 0 0 DIALOG --infobox "Changing device $k$l to raid..." 0 0
sfdisk --change-id $k $l fd >$LOG 2>&1 sfdisk --change-id $k $l fd >$LOG 2>&1
done done
@ -1133,15 +1163,30 @@ findpv()
{ {
for dev in $(pvs -o pv_name --noheading);do for dev in $(pvs -o pv_name --noheading);do
if [ "$(pvs -o vg_name --noheading $dev)" = " " ]; then if [ "$(pvs -o vg_name --noheading $dev)" = " " ]; then
echo "$dev" if [ "$(echo "$dev" | grep "block/254")" ]; then
[ "$1" ] && echo $1 getsymlink="$(readlink $dev)"
correctdevice="$(echo $getsymlink | sed -e 's#\.\.#/dev#g')"
echo "$correctdevice"
[ "$1" ] && echo $1
else
echo "$dev"
[ "$1" ] && echo $1
fi
fi fi
done done
} }
getavailablepv() getavailablepv()
{ {
pvs -o pv_name,pv_size --noheading | sed -e 's#$#\\n#' for i in "$(pvs -o pv_name,pv_size --noheading)"; do
if [ "$(echo $i | grep block/254)" ]; then
getsymlink="$(readlink $(echo $i | sed -e 's#\ .*$##g'))"
correctdevice="$(echo $getsymlink | sed -e 's#\.\.#/dev#g')"
echo "$i" | sed -e "s#.*\ #$correctdevice\ \\n#g"
else
echo "$i" | sed -e 's#$#\\n#'
fi
done
} }
#find volume groups that are not already full in use #find volume groups that are not already full in use