NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/52364: System hangs not much before showing the login prompt; changes in VFS suspected



The following reply was made to PR kern/52364; it has been noted by GNATS.

From: "J. Hannken-Illjes" <hannken%eis.cs.tu-bs.de@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/52364: System hangs not much before showing the login
 prompt; changes in VFS suspected
Date: Tue, 11 Jul 2017 10:41:44 +0200

 The suspension gets blocked for a long time or forever by saslauthd
 setting advisory locks (VOP_ADVLOCK -> lf_advlock -> lf_setlock -> BLOCK).
 
 As we hold fstrans for the VOP there is no chance to suspend the fs.
 
 This diff (against May, 17. sources) should help, please try it out:
 
 Index: vnode_if.c
 ===================================================================
 RCS file: /cvsroot/src/sys/kern/vnode_if.c,v
 retrieving revision 1.103
 diff -p -u -2 -r1.103 vnode_if.c
 --- vnode_if.c	26 Apr 2017 03:04:24 -0000	1.103
 +++ vnode_if.c	11 Jul 2017 08:35:59 -0000
 @@ -1405,5 +1405,4 @@ VOP_ADVLOCK(struct vnode *vp,
  	bool mpsafe;
  	struct vop_advlock_args a;
 -	struct mount *mp = vp->v_mount;
  	a.a_desc = VDESC(vop_advlock);
  	a.a_vp = vp;
 @@ -1414,7 +1413,5 @@ VOP_ADVLOCK(struct vnode *vp,
  	mpsafe = (vp->v_vflag & VV_MPSAFE);
  	if (!mpsafe) { KERNEL_LOCK(1, curlwp); }
 -	fstrans_start(mp, FSTRANS_SHARED);
  	error = (VCALL(vp, VOFFSET(vop_advlock), &a));
 -	fstrans_done(mp);
  	if (!mpsafe) { KERNEL_UNLOCK_ONE(curlwp); }
  	return error;
 


Home | Main Index | Thread Index | Old Index