aufs doesn't build with (non-standard) config w/o vserver or apparmor
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
I'm building a custom kernel, because I want Jaunty's 2.6.28 on Intrepid with a linux-headers-
http://
Anyway, with my custom .config (attached), trying to build 2.6.28-7.20 from the latest Jaunty git repo gives:
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
...
The problem seems to be that the #ifdefs select broken code for my config, but not for Ubuntu's default config. ubuntu/aufs/vfsub.c looks like:
#ifdef CONFIG_VSERVER // line 160
err = vfs_mknod(dir, dentry, mode, dev, NULL);
#elif defined(
err = vfs_mknod(dir, dentry, NULL, mode, dev);
#else
err = vfs_mknod(dir, dentry, mode, dev);
#endif // line 167
My .config includes neither CONFIG_VSERVER nor CONFIG_
There are similar #ifdefs going on with calls to vfs_link, vfs_mkdir, vfs_unlink, etc. Some googling found a patch where someone had made vfs_mknod and so on into macros that added a NULL in the right place depending on what was #defined. That seems more sensible than scattering that extra NULL throughout the aufs code. Although perhaps that's not needed so much anymore, if there are too few arguments in the 4-arg call. Maybe now vfs_mkdir always takes 5 args? Or maybe it shouldn't be #ifdef CONFIG_VSERVER but rather if the vserver patch is applied, if that's how it works. Anyway, my idle speculation is probably not so useful to anyone who's seen this code before. :P
Anyway, this is not strictly an Ubuntu bug, but this is the easiest way to report the bug. So I hope this gets passed along to the right upstream people.
unionfs is also broken w/o APPARMOR (or by something else in my .config)
/usr/local/ src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: In function 'get_hidden_ parent' : src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 489: error: invalid use of undefined type 'struct export_operations' src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: In function 'do_get_dentry': src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 553: warning: passing argument 2 of 'vfs_readdir' from incompatible pointer type src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: In function 'unionfs_ encode_ fh': src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 666: error: invalid use of undefined type 'struct export_operations' src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: In function 'unionfs_ decode_ fh': src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 710: error: invalid use of undefined type 'struct export_operations' src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: At top level: src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 728: error: variable 'unionfs_ export_ ops' has initializer but incomplete t src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 729: error: unknown field 'decode_fh' specified in initializer src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 729: warning: excess elements in struct initializer src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 729: warning: (near initialization for 'unionfs_ export_ ops') src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 730: error: unknown field 'encode_fh' specified in initializer src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 731: warning: excess elements in struct initializer src/linux/ ubuntu- jaunty/ ubuntu/ unionfs/ super.c: 731: warning: (near initialization for 'unionfs_ export_ ops')
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
ype
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
/usr/local/
umm, happy hacking. :)