mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 15:30:14 +00:00
OpenBSD: allow for more graceful shutdown
A shutdown or unmount of AFS on OpenBSD will invariably result in a kernel panic. This is because the afs_unmount() routine does not (can not?) force vnode releases if the vnode is still busy. However, it continues on nonetheless and dies a horrible death a little later. This update causes a return from afs_unmount() with EBUSY if all the vnodes weren't released. This results in error messages on shutdown but the overall process continues more reliably and reboots, for example, work. There is likely a better solution to this but at least this is no worse than a system crash and it doesn't require console (or power button) intervention so it should do until I have the chance to explore further. Change-Id: Ia70f83bda748ea3d0b81b341a292e83121446567 Reviewed-on: http://gerrit.openafs.org/1275 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
d06bc699f2
commit
5f39ae64ba
@ -268,6 +268,13 @@ afs_unmount(afsp, flags, p)
|
||||
{
|
||||
extern int sys_ioctl(), sys_setgroups();
|
||||
|
||||
struct vnode *vp;
|
||||
|
||||
for (vp = LIST_FIRST(&afsp->mnt_vnodelist); vp != NULL;
|
||||
vp = LIST_NEXT(vp, v_mntvnodes)) {
|
||||
if (vp->v_usecount) return EBUSY;
|
||||
}
|
||||
|
||||
AFS_STATCNT(afs_unmount);
|
||||
#ifdef AFS_DISCON_ENV
|
||||
give_up_cbs();
|
||||
|
Loading…
Reference in New Issue
Block a user