LINUX: Initialize CellLRU during osi_Init
[openafs.git] / src / afs / LINUX / osi_module.c
index a7b59d6..47e32cf 100644 (file)
@@ -42,35 +42,42 @@ DECLARE_MUTEX(afs_global_lock);
 #endif
 int afs_global_owner = 0;
 
+#ifdef HAVE_LINUX_KUID_T
+struct user_namespace *afs_ns;
+#endif
+
 int __init
 afs_init(void)
 {
     int err;
-    AFS_RWLOCK_INIT(&afs_xosi, "afs_xosi");
+
+#ifdef HAVE_LINUX_KUID_T
+    afs_ns = afs_current_user_ns();
+#endif
 
     osi_Init();
+
+    /* Initialize CellLRU since it is used while traversing CellServDB proc
+     * entry */
+
+    QInit(&CellLRU);
+
 #if !defined(AFS_NONFSTRANS)
     osi_linux_nfssrv_init();
 #endif
 
-#ifndef LINUX_KEYRING_SUPPORT
     err = osi_syscall_init();
     if (err)
        return err;
-#endif
     err = afs_init_inodecache();
     if (err) {
-#ifndef LINUX_KEYRING_SUPPORT
        osi_syscall_clean();
-#endif
        return err;
     }
     err = register_filesystem(&afs_fs_type);
     if (err) {
        afs_destroy_inodecache();
-#ifndef LINUX_KEYRING_SUPPORT
        osi_syscall_clean();
-#endif
        return err;
     }
 
@@ -94,15 +101,14 @@ afs_cleanup(void)
     osi_keyring_shutdown();
 #endif
     osi_sysctl_clean();
-#ifndef LINUX_KEYRING_SUPPORT
     osi_syscall_clean();
-#endif
     unregister_filesystem(&afs_fs_type);
 
     afs_destroy_inodecache();
 #if !defined(AFS_NONFSTRANS)
     osi_linux_nfssrv_shutdown();
 #endif
+    shutdown_osisleep();
     osi_linux_free_afs_memory();
 
     osi_ioctl_clean();