From 3d4d4b6898b3b32b7c5af3d34d9d8e5d976eb9d6 Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Tue, 29 Sep 2009 13:34:39 +0000 Subject: main/alpine-conf: fix for setup-disk --- .../0001-setup-disk-fix-find_disks.patch | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 main/alpine-conf/0001-setup-disk-fix-find_disks.patch (limited to 'main/alpine-conf/0001-setup-disk-fix-find_disks.patch') diff --git a/main/alpine-conf/0001-setup-disk-fix-find_disks.patch b/main/alpine-conf/0001-setup-disk-fix-find_disks.patch new file mode 100644 index 000000000..2b5453d6b --- /dev/null +++ b/main/alpine-conf/0001-setup-disk-fix-find_disks.patch @@ -0,0 +1,76 @@ +From 5572e8a3db95f179b3433e5ea5f8c6fa2c8c65ab Mon Sep 17 00:00:00 2001 +From: Natanael Copa +Date: Tue, 29 Sep 2009 09:40:53 +0000 +Subject: [PATCH] setup-disk: fix find_disks + +The old way did not detect ida/c0d0. The new should detect it. +We also filter out md devices. +--- + setup-disk.in | 42 ++++++++++++++++++++++++++++++++---------- + 1 files changed, 32 insertions(+), 10 deletions(-) + +diff --git a/setup-disk.in b/setup-disk.in +index d53fba1..33cc868 100644 +--- a/setup-disk.in ++++ b/setup-disk.in +@@ -146,25 +146,47 @@ find_swap_size() { + + has_mounted_part() { + local p +- # parse /proc/mounts for moutned devices ++ # parse /proc/mounts for mounted devices + for p in $(awk '$1 ~ /^\/dev\// {gsub("/dev/", "", $1); print $1}' \ + /proc/mounts); do +- if [ -e /sys/block/$1/$p ]; then +- return 0 +- fi ++ [ -e /sys/block/$1/$p ] && return 0 + done + return 1 + } + ++has_holders() { ++ local i ++ # check if device is used by any md devices ++ for i in $1/holders/* $1/*/holders/*; do ++ [ -e "$i" ] && return 0 ++ done ++ return 1 ++} ++ ++is_available_disk() { ++ local dev=$1 ++ local b=$(echo $p | sed 's:/:!:g') ++ ++ # check if its a "root" block device and not a partition ++ [ -e /sys/block/$b ] || return 1 ++ ++ # check so it does not have mounted partitions ++ has_mounted_part $dev && return 1 ++ ++ # check so its not part of an md setup ++ has_holders /sys/block/$b && return 1 ++ ++ # check so its not an md device ++ [ -e /sys/block/$b/md ] && return 1 ++ ++ return 0 ++} ++ + find_disks() { +- local p= disks= ++ local p= + for p in $(awk '$1 ~ /[0-9]+/ {print $4}' /proc/partitions); do +- b=$(echo $p | sed 's:/:!:g') +- if [ -e /sys/block/$b/device ] && ! has_mounted_part $p; then +- disks="$disks $p" +- fi ++ is_available_disk $p && echo -n " $p" + done +- echo $disks + } + + useall() { +-- +1.6.4.4 + -- cgit v1.2.3