new file system (my experiments)
Kris Kennaway
kris at FreeBSD.org
Tue Aug 12 18:50:16 UTC 2008
Chagin Dmitry wrote:
> Hi
>
> I experiment resalization of new file system based on tmpfs - shmfs for
> Linux emulation layer. for the beginning has simply copied current source
> codes to compat/lintmps, has compiled a module and tried to mount:
>
> mount -t lintmpfs lintmpfs /compat/linux/dev/shm
> and has received a panic:
>
> #11 0xffffffff803b6ade in calltrap ()
> at /usr/local/root/pub/linux_shmfs/sys/amd64/amd64/exception.S:217
> ---Type <return> to continue, or q <return> to quit---
> #12 0xffffffff802a794b in vfs_filteropt (opts=0x0, legal=0xffffffff808497e0)
> at /usr/local/root/pub/linux_shmfs/sys/kern/vfs_mount.c:1812
> #13 0xffffffff80847015 in tmpfs_mount (mp=0xffffff0001a3a000,
> td=0xffffff004dcb56c0)
> at /usr/local/root/pub/linux_shmfs/sys/modules/lintmpfs/../../compat/lintmpf
> s/lintmpfs_vfsops.c:206
> #14 0xffffffff802a947f in vfs_donmount (td=0xffffff004dcb56c0, fsflags=0,
> fsoptions=0xffffff000190e800)
> at /usr/local/root/pub/linux_shmfs/sys/kern/vfs_mount.c:1010
> #15 0xffffffff802aaa46 in nmount (td=0xffffff004dcb56c0,
> uap=0xfffffffe7e7fcbf0)
> at /usr/local/root/pub/linux_shmfs/sys/kern/vfs_mount.c:417
> #16 0xffffffff803d4e47 in syscall (frame=0xfffffffe7e7fcc80)
> at /usr/local/root/pub/linux_shmfs/sys/amd64/amd64/trap.c:902
> #17 0xffffffff803b6ceb in Xfast_syscall ()
>
> (kgdb) f 12
> #12 0xffffffff802a794b in vfs_filteropt (opts=0x0, legal=0xffffffff808497e0)
> at /usr/local/root/pub/linux_shmfs/sys/kern/vfs_mount.c:1812
> 1812 {
> (kgdb) list *0xffffffff802a794b
> 0xffffffff802a794b is in vfs_filteropt (/usr/local/root/pub/linux_shmfs/sys/kern
> /vfs_mount.c:1818).
> 1813 struct vfsopt *opt;
> 1814 char errmsg[255];
> 1815 const char **t, *p, *q;
> 1816 int ret = 0;
> 1817
> 1818 TAILQ_FOREACH(opt, opts, link) {
> 1819 p = opt->name;
> 1820 q = NULL;
> 1821 if (p[0] == 'n' && p[1] == 'o')
> 1822 q = p + 2;
> (kgdb)
> (kgdb) up
> #13 0xffffffff80847015 in tmpfs_mount (mp=0xffffff0001a3a000,
> td=0xffffff004dcb56c0)
> at /usr/local/root/pub/linux_shmfs/sys/modules/lintmpfs/../../compat/lintmpf
> s/lintmpfs_vfsops.c:206
> 206 if (vfs_filteropt(mp->mnt_optnew, lintmpfs_opts))
> (kgdb)
>
> Problem in that mp->mnt_optnew is 0, but tmpfs works correctly.
> I shall not understand that I have missied...
>
If you have DEBUG_LOCKS and/or DEBUG_VFS_LOCKS then one of them changes
the kernel ABI (adds entries to structs somewhere). You need to either
add them to the module CFLAGS or use make buildkernel.
Kris
More information about the freebsd-fs
mailing list