[LU-4012] GSS upcall routine fails due to removed generic cache routines in Linux kernels >= 3.4.X Created: 26/Sep/13 Updated: 26/Mar/14 Resolved: 02/Nov/13 |
|
| Status: | Resolved |
| Project: | Lustre |
| Component/s: | None |
| Affects Version/s: | Lustre 2.5.0 |
| Fix Version/s: | Lustre 2.6.0 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Thomas Stibor | Assignee: | Nathaniel Clark |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | gssapi, kerberos, patch | ||
| Environment: |
Debian Wheezy with Lustre Patched Kernel 3.6.11 |
||
| Severity: | 3 |
| Rank (Obsolete): | 10752 |
| Description |
|
With Linux kernel version >= 3.4.X the generic cache registering int cache_register(struct cache_detail *cd)
{
return cache_register_net(cd, &init_net);
}
void cache_unregister(struct cache_detail *cd)
{
cache_unregister_net(cd, &init_net);
}
To keep compatibility with former kernel versions, I provide a patch to fix it. |
| Comments |
| Comment by Peter Jones [ 24/Oct/13 ] |
| Comment by Peter Jones [ 02/Nov/13 ] |
|
Landed for 2.6 |
| Comment by James A Simmons [ 04/Dec/13 ] |
|
Going through the GSS compile issue I get I noticed problems related to this patch. For RHEL6.4 kernels cache_register_net is not exported which causes this error: WARNING: "cache_register_net" [/data/buildsystem/jsimmons-head/rpmbuild/BUILD/lustre-2.5.52/lustre/ptlrpc/gss/ptlrpc_gss.ko] undefined! |
| Comment by Thomas Stibor [ 09/Dec/13 ] |
|
cache_register_net/cache_unregister_net was introducted in 2.6.37 and it not available in prior Kernel versions. thomas@[SSH]denbp068:[1]~/linux/linux-stable/net/sunrpc>git checkout linux-2.6.36.y Checking out files: 100% (41297/41297), done. Switched to branch 'linux-2.6.36.y' thomas@[SSH]denbp068:~/linux/linux-stable/net/sunrpc>grep -r "cache_register_net" thomas@[SSH]denbp068:[1]~/linux/linux-stable/net/sunrpc>git checkout linux-2.6.37.y Checking out files: 100% (11077/11077), done. Switched to branch 'linux-2.6.37.y' thomas@[SSH]denbp068:~/linux/linux-stable/net/sunrpc>grep -r "cache_register_net" cache.c:int cache_register_net(struct cache_detail *cd, struct net *net) cache.c: return cache_register_net(cd, &init_net); svcauth_unix.c: err = cache_register_net(cd, net); Which Kernel version will be used in 2.6? Cheers |
| Comment by Peter Jones [ 09/Dec/13 ] |
|
Thomas atm 2.6 is currently targeted for RHEL6.5 (2.6.32-431.el6). Is cache_register_net/cache_unregister_net something that we could reasonably ask RH to include in an upcoming kernel update? Peter |
| Comment by Thomas Stibor [ 09/Dec/13 ] |
|
Hello Peter, I think for providing compatibility to RHEL6.5 (2.6.32-431.el6) it is most straightforward by using #ifdef check, e.g. # # cache_register/cache_unregister are removed since 3.4 # AC_DEFUN([LC_HAVE_CACHE_REGISTER_NET], [AC_MSG_CHECKING([if have cache_register_net]) LB_LINUX_TRY_COMPILE([ #include <linux/sunrpc/cache.h> ],[ cache_register_net(NULL, NULL); ],[ AC_DEFINE(HAVE_CACHE_REGISTER_NET, 1, [have cache_register_net]) AC_MSG_RESULT([yes]) ],[ AC_MSG_RESULT([no]) ]) ]) I will provide a patch to fix this problem. Cheers |