[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#501359: initramfs-tools: MODULES=dep does not like Xen virtual block devices



On Mon, 22 Dec 2008, Ian Campbell wrote:

> Ferenc seems to be using the xvda1=img1,xvda2=img2 scheme of Xen disks
> (this is what xentools gets you) rather than the whole disk with
> partition scheme.
> 
> In the xvda1/xvda2 scheme /sys/block contains:
>         # ls /sys/block/
>         ram0  ram1  ram10  ram11  ram12  ram13 ram14  ram15  ram2  ram3
>         ram4 ram5  ram6  ram7  ram8 ram9  xvda1  xvda2
> 
> In the whole disk scheme it contains xvda as you would expect:
>         # ls /sys/block/
>         loop0  loop1  loop2  loop3  loop4  loop5  loop6  loop7 ram0
>         ram1  ram10  ram11  ram12  ram13 ram14  ram15  ram2  ram3  ram4
>         ram5  ram6  ram7  ram8 ram9  xvda

thanks for the analysis and the explanation.
 
> I've attached a patch which takes care of this difference. However the
> modules still aren't loaded.

hmm what?
which modules are not loaded?
 
> Note that the -xen type images seem to have the block driver builtin
> (and therefore work fine) while the -686-bigmem ones have it modular
> (xen-blkfront.ko) and break with MODULES=dep.

argh,
the syswalking doesn't add that one?
could you post output with MODULES=dep for the modular case of
sh -x mkinitramfs -o /tmp/foo
 
> I've attached ls -lRt of my /sys running -686-bigmem
> and /sys/devices/vbd-51712/modalias contains "xen:vbd" which is present
> as an alias on the xen-blkfront.ko module. Any other info required
> please ask.
 

thanks for the patch bellow i'll apply it asap,
as it is an improvement anyway

> --- /usr/share/initramfs-tools/hook-functions.orig	2008-12-17 21:48:06.000000000 +0000
> +++ /usr/share/initramfs-tools/hook-functions	2008-12-17 21:53:02.000000000 +0000
> @@ -269,6 +269,14 @@
>  		root=${root#/dev/}
>  		block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \
>  			/proc/mdstat)
> +	# Xen virtual device /dev/xvdX
> +	elif [ "${root#/dev/xvd}" != "${root}" ]; then
> +		block=${root#/dev/}
> +		# Xen has a mode where only the individual partitions are registered with the kernel
> +		# as well as the usual full disk with partition table scheme.
> +		if [ ! -e /sys/block/${block} ] ; then
> +			block=${block%[0-9]*}
> +		fi
>  	# classical root device
>  	else
>  		block=${root#/dev/}

-- 
maks



Reply to: