int afs_unmount(struct mount *mp, int flags, THREAD_OR_PROC) { /* * Release any remaining vnodes on this mount point. * The `1' means that we hold one extra reference on * the root vnode (this is just a guess right now). * This has to be done outside the global lock. */ #if defined(AFS_FBSD80_ENV) /* do nothing */ #elif defined(AFS_FBSD53_ENV) vflush(mp, 1, (flags & MNT_FORCE) ? FORCECLOSE : 0, p); #else vflush(mp, 1, (flags & MNT_FORCE) ? FORCECLOSE : 0); #endif AFS_GLOCK(); AFS_STATCNT(afs_unmount); afs_globalVFS = 0; afs_shutdown(); AFS_GUNLOCK(); return 0; }
/* afs_put_super * Called from unmount to release super_block. */ static void afs_put_super(struct super_block *sbp) { AFS_GLOCK(); AFS_STATCNT(afs_unmount); if (!suser()) { AFS_GUNLOCK(); return; } afs_globalVFS = 0; afs_globalVp = 0; afs_shutdown(); #if defined(AFS_LINUX24_ENV) mntput(afs_cacheMnt); #endif osi_linux_verify_alloced_memory(); AFS_GUNLOCK(); sbp->s_dev = 0; MOD_DEC_USE_COUNT; }
/* afs_put_super * Called from unmount to release super_block. */ static void afs_put_super(struct super_block *sbp) { AFS_GLOCK(); AFS_STATCNT(afs_unmount); if (!suser()) { AFS_GUNLOCK(); return; } afs_globalVFS = 0; afs_globalVp = 0; osi_linux_free_inode_pages(); /* invalidate and release remaining AFS inodes. */ afs_shutdown(); #if defined(AFS_LINUX24_ENV) mntput(afs_cacheMnt); #endif osi_linux_verify_alloced_memory(); AFS_GUNLOCK(); sbp->s_dev = 0; MOD_DEC_USE_COUNT; }
int afs_unmount(struct vfs *afsp) { AFS_STATCNT(afs_unmount); afs_globalVFS = 0; afs_shutdown(); return 0; }
afs_unmount(struct mount *mp, int flags, struct thread *p) #endif { int error = 0; AFS_GLOCK(); if (afs_globalVp && ((flags & MNT_FORCE) || !VREFCOUNT_GT(afs_globalVp, 1))) { /* Put back afs_root's ref */ struct vcache *gvp = afs_globalVp; afs_globalVp = NULL; afs_PutVCache(gvp); } if (afs_globalVp) error = EBUSY; AFS_GUNLOCK(); /* * Release any remaining vnodes on this mount point. * The `1' means that we hold one extra reference on * the root vnode (this is just a guess right now). * This has to be done outside the global lock. */ if (!error) { #if defined(AFS_FBSD80_ENV) error = vflush(mp, 1, (flags & MNT_FORCE) ? FORCECLOSE : 0, curthread); #elif defined(AFS_FBSD53_ENV) error = vflush(mp, 1, (flags & MNT_FORCE) ? FORCECLOSE : 0, p); #else error = vflush(mp, 1, (flags & MNT_FORCE) ? FORCECLOSE : 0); #endif } if (error) goto out; AFS_GLOCK(); AFS_STATCNT(afs_unmount); afs_globalVFS = 0; afs_shutdown(); AFS_GUNLOCK(); out: return error; }
/* afs_put_super * Called from unmount to release super_block. */ static void afs_put_super(struct super_block *sbp) { AFS_GLOCK(); AFS_STATCNT(afs_unmount); afs_globalVFS = 0; afs_globalVp = 0; afs_shutdown(); mntput(afs_cacheMnt); osi_linux_verify_alloced_memory(); #if defined(HAVE_LINUX_BDI_INIT) bdi_destroy(afs_backing_dev_info); #endif kfree(afs_backing_dev_info); AFS_GUNLOCK(); sbp->s_dev = 0; module_put(THIS_MODULE); }
/* afs_put_super * Called from unmount to release super_block. */ static void afs_put_super(struct super_block *sbp) { AFS_GLOCK(); AFS_STATCNT(afs_unmount); afs_globalVFS = 0; afs_globalVp = 0; osi_linux_free_inode_pages(); /* invalidate and release remaining AFS inodes. */ afs_shutdown(); mntput(afs_cacheMnt); osi_linux_verify_alloced_memory(); #if defined(HAVE_LINUX_BDI_INIT) bdi_destroy(afs_backing_dev_info); #endif osi_Free(afs_backing_dev_info, sizeof(struct backing_dev_info)); AFS_GUNLOCK(); sbp->s_dev = 0; module_put(THIS_MODULE); }