On Wed, Aug 19, 2009 at 10:25:01PM -0500, Victor Lowther wrote:
> Since different distros may or may not use vol_id in udev, and blkid
> is generally replacing vol_id, abstract them out into a function which
> tries to use vol_id first and blkid second, on the assumption that
> blkid can take over for vol_id if vol_id is no longer there.
> ---
> dracut-functions | 11 +++++++++++
> modules.d/90crypt/check | 2 +-
> modules.d/90dmraid/check | 2 +-
> modules.d/90lvm/check | 4 ++--
> modules.d/90mdraid/check | 2 +-
> 5 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/dracut-functions b/dracut-functions
> index 1df2045..655d311 100755
> --- a/dracut-functions
> +++ b/dracut-functions
> @@ -48,6 +48,17 @@ derror() {
> [[ -w $dracutlogfile ]] && echo "E: $@" >>"$dracutlogfile"
> }
>
> +get_fs_type() (
> + if [[ -x /lib/udev/vol_id ]]; then
> + eval /usr/udev/vol_id --export $1
> + echo $ID_FS_TYPE
> + elif find_binary >/dev/null; then
> + blkid -o value -s TYPE $1
This is to expensive, the blkid(8) supports two modes: low-level and
high-level. The low-level mode together with "-o udev" is replacement
of vol_id.
get_fs_type() (
if [[ -x /lib/udev/vol_id ]]; then
eval /usr/udev/vol_id --export $1
elif find_binary >/dev/null; then
eval blkid -p -o udev $1
else
return 1
fi
echo $ID_FS_TYPE
)
> -is_crypt() { /lib/udev/vol_id /dev/block/$1 |grep -q crypto_LUKS; }
> +is_crypt() { [[ $(get_fs_type /dev/block/$1) = crypto_LUKS ]]; }
> -is_dmraid() { /lib/udev/vol_id /dev/block/$1 |grep -v linux_raid_member | \
> +is_dmraid() { get_fs_type /dev/block/$1 |grep -v linux_raid_member | \
> grep -q _raid_member; }
> -is_lvm() { /lib/udev/vol_id /dev/block/$1 |grep -q LVM2_member; }
> +is_lvm() { [[ $(get_fs_type /dev/block/$1) = LVM2_member ]]; }
> -is_mdraid() { /lib/udev/vol_id /dev/block/$1 |egrep -q '(linux|isw)_raid'; }
> +is_mdraid() { get_fs_type /dev/block/$1 |egrep -q '(linux|isw)_raid'; }
Note that blkid -p and vol_id allows to probe for raids only. It
should be faster than probe always for all filesystems.
Karel
--
Karel Zak <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html