2008-11-19 18:32:27

by Jan Engelhardt

[permalink] [raw]
Subject: uml: using hostfs as rootfs is not working

Hi,


as per Documentation/uml/*txt, I issued the following to get a direct
hostfs:

./linux ubd0=/tftpboot/linux

(/tftpboot/linux/sbin/init exists), but the UM kernel only gives:

Failed to open '/home/tftpboot/linux', errno = 21
ubda: Can't open "/home/tftpboot/linux": errno = 21
List of all partitions:
6200 4 ubda driver: uml-blkdev

So either UML lost some functionality sometime, or the documentation is
incorrect.


2008-11-21 17:44:51

by Cong Wang

[permalink] [raw]
Subject: Re: uml: using hostfs as rootfs is not working

On Wed, Nov 19, 2008 at 07:32:16PM +0100, Jan Engelhardt wrote:
>Hi,
>

Hi, Jan!


>
>as per Documentation/uml/*txt, I issued the following to get a direct
>hostfs:
>
> ./linux ubd0=/tftpboot/linux
>
>(/tftpboot/linux/sbin/init exists), but the UM kernel only gives:
>
>Failed to open '/home/tftpboot/linux', errno = 21


I think this error comes from arch/um/drivers/ubd_kern.c::ubd_open_dev()


>ubda: Can't open "/home/tftpboot/linux": errno = 21

This is from the caller: ubd_open().

ubd_open_dev() calls open_ubd_file() to open the ubd device, which, in
turn, calls os_open_file() which is a wrapper of open64().

And errno 21 should be EISDIR, for open(), which means we invoked it
with a writing operation, probably O_RDWR...

So I think there must be something wrong in the code, writing to a
directory is suspicious...

I will try to check it.

Thank you!

--
"Sometimes the only way to stay sane is to go a little crazy."