FIXES 6002
The appended patch resets afs_globalVFS to NULL if /afs cannot be mounted,
eg., if no cell server is accessible.
There are two advantages:
- it is possible to do "afsd -shutdown" to terminate all daemons
- more importantly, if /afs cannot be mounted, the linux kernel will
probably free the superblock, ie the memory pointed to afs_globalVFS.
(cherry picked from commit
e5e7801db895b1e57ff99fb59371aee47ac33b9c)
sb->s_maxbytes = MAX_NON_LFS;
#endif
code = afs_root(sb);
- if (code)
+ if (code) {
+ afs_globalVFS = NULL;
+#if defined(AFS_LINUX26_ENV)
+ module_put(THIS_MODULE);
+#else
MOD_DEC_USE_COUNT;
+#endif
+ }
#if !defined(AFS_LINUX24_ENV)
unlock_super(sb);