Hello Jorgen,

> Since you didn't seem to understand what I wrote.
> I suggest you one more thing.
> - build your kernel by yourself.
> If you succeed it, then you have a correct environment.

While I don't know that you are still trying aufs, I have found one
thing about ubuntu edgy kernel.

The version of this kernel seems to be 2.6.17 basically, but one
interface (at least) is patched by a part of 2.6.18. It is the arguments
of super_block operation umount_begin().

Since aufs supports both of 2.6.17 and 18, it uses,
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
        /* code for linux-2.6.17 and earlier */
#endif
In ubuntu edgy kernel, this condition didn't work.
Since the LINUX_VERSION_CODE in ubuntu edgy is defineed as 2.6.17, but a
part of code/interface is 2.6.18 actually.

I guess you were warned by your compiler at compiling aufs/super.c,
since the arguments of umount_begin() mismatches.
So you need to fake aufs, at least the arguments of umount_begin() to be
matched.

Here is a patch for it.
But I am afraid you may meet another problem which is related to the
kernel interface which is mixed with 2.6.17 and 2.6.18 in ubuntu edgy.


Junjiro Okajima

----------------------------------------------------------------------

Index: local.mk
===================================================================
RCS file: /cvsroot/aufs/aufs/local.mk,v
retrieving revision 1.32
diff -u -p -r1.32 local.mk
--- local.mk    26 Feb 2007 02:28:08 -0000      1.32
+++ local.mk    11 Mar 2007 09:15:54 -0000
@@ -21,6 +21,7 @@ CONFIG_AUFS_DEBUG_RWSEM =
 CONFIG_AUFS_COMPAT =
 
 AUFS_DEF_CONFIG =
+AUFS_DEF_CONFIG = -DUbuntuEdgy17Umount18
 -include priv_def.mk
 
 define conf
Index: fs/aufs/super.c
===================================================================
RCS file: /cvsroot/aufs/aufs/fs/aufs/super.c,v
retrieving revision 1.39
diff -u -p -r1.39 super.c
--- fs/aufs/super.c     5 Mar 2007 02:21:26 -0000       1.39
+++ fs/aufs/super.c     11 Mar 2007 09:15:54 -0000
@@ -230,7 +230,7 @@ static int aufs_statfs(struct super_bloc
 #undef StatfsSb
 #undef StatfsArg
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18) || 
defined(UbuntuEdgy17Umount18)
 #define UmountBeginSb(mnt)     (mnt)->mnt_sb
 static void aufs_umount_begin(struct vfsmount *arg, int flags)
 #else
@@ -269,7 +271,7 @@ static void aufs_put_super(struct super_
        if (unlikely(!sbinfo))
                return;
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) && 
!defined(UbuntuEdgy17Umount18)
        // umount_begin() may not be called.
        aufs_umount_begin(sb);
 #endif

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV

Reply via email to