Quoting Andre Albsmeier <[email protected]> (from Thu, 6 Jan 2011 11:32:26 +0100):

On Thu, 06-Jan-2011 at 08:57:53 +0100, Alexander Leidinger wrote:
Quoting Andre Albsmeier <[email protected]> (from Wed, 5 Jan
2011 20:19:15 +0100):

> My solution is eerie but it works. This is what I did:
>
> 1. cd /compat/linux
> 2. mkdir dev
> 3. cd dev
> 4. ln -s /tmp shm

As long as you do not need to access something from dev (FreeBSD one),
this works. As soon as you need to access something from there it
depends upon the software. If the software is doing a readdir, the
user experience will be worse. And if it does not allow to enter a

Let me see if I got this: Now I have a /compat/linux/dev directory
which means that if some Linux programme wants to look into /dev it
will see just the shm entry. If there wasn't my dev directory it
would have continued to FreeBSD's /dev...

Correct.

Can you please try a solution with devfs.conf (I never tried if it
allows to link outside of dev)?

I added the following line to devfs.conf

link /tmp shm

and removed my dev stuff under /compat/linux. And it still works ;-).

That's great.

The devfs.conf thing makes it possible to simplify the (ugly)
patch a bit:

--- /sys/compat/linux/linux_stats.c.ORI 2008-01-10 20:11:51.000000000 +0100
+++ /sys/compat/linux/linux_stats.c     2011-01-06 11:26:53.000000000 +0100
@@ -379,6 +379,7 @@
        struct statfs bsd_statfs;
        char *path;
        int error;
+       unsigned char shm = 0;

        LCONVPATHEXIST(td, args->path, &path);

@@ -387,10 +388,14 @@
                printf(ARGS(statfs, "%s, *"), path);
 #endif
        error = kern_statfs(td, path, UIO_SYSSPACE, &bsd_statfs);
+       if( strncmp( path, "/dev/shm", 8 ) == 0 )
+         shm = ( path[8] == '\0' || (path[8] == '/' && path[9] == '\0') );
        LFREEPATH(path);
        if (error)
                return (error);
        bsd_to_linux_statfs(&bsd_statfs, &linux_statfs);
+       if( shm )
+         linux_statfs.f_type = 0x01021994;
        return copyout(&linux_statfs, args->buf, sizeof(linux_statfs));
 }

Thanks for the hint with devfs.conf, that's a lot better!

Thanks for the patch.

Bye,
Alexander.

--
Freedom begins when you tell Mrs. Grundy to go fly a kite.

http://www.Leidinger.net    Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org       netchild @ FreeBSD.org  : PGP ID = 72077137
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-emulation
To unsubscribe, send any mail to "[email protected]"

Reply via email to