DragonFly kernel List (threaded) for 2008-07
DragonFly BSD
DragonFly kernel List (threaded) for 2008-07
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: vfs.root.mountfrom hammer?


From: Michael Neumann <mneumann@xxxxxxxx>
Date: Sun, 27 Jul 2008 14:31:57 +0200

Matthew Dillon schrieb:
:Hi,
:
:I'm trying to mount a hammer filesystem as root via vfs.root.mountfrom.
:I tried some simple patches to make it work, but I still get panics. Is :it any harder than calling VFS_MOUNT for the hammer filesystem?
:
:That would allow to have a small partition with /boot on it, and the :rest would be loaded from the hammer partition.
:
:Regards,
:
: Michael


    A root mount wil call mount with a NULL path and NULL data
    pointer.  I think it would be fairly easy to adjust HAMMER to
    deal with that.

You can look at the UFS code as an example. Look at /usr/src/sys/vfs/ufs/ffs_vfsops.c starting on line 151.
The following patch works perfectly:

http://leaf.dragonflybsd.org/~mneumann/hammer-rootmount.diff

It isn't possible to use more than one volume, but I think thats a minor problem for a hammer root mount.

I'm also not quite sure where this line

mp->mnt_flag &= ~MNT_RDONLY; /* mount R/W */

best belongs to. Right now it has the effect that every hammer root mount
is read/write. I'm also not 100% sure if I did it right to create the root vnode (which is required in hammer_install_volume, otherwise nlookup seems to fail).


Feel free to fix/commit it.

For those that want to try out the patch, you have to add a line to /boot/loader.conf:

vfs.root.mountfrom="hammer:ad4s1d"

And change that ad4s1d to your hammer partition.

This partition will be mounted as "/". For the boot loader you still need the
ad4s1a partition where "/boot/*" , "/kernel" and "/modules/*" reside. So you may want to boot ad4s1a as /bootdir and "ln -s /bootdir/boot /boot".


This is btw more or less exactly how one can use ZFS as root mount:

http://wiki.freebsd.org/ZFSOnRoot


Regards,


Michael




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