svn commit: r243142 - in head/sys: fs/nfsclient kern sys

Pawel Jakub Dawidek pjd at FreeBSD.org
Sat Nov 24 22:23:03 UTC 2012


On Fri, Nov 16, 2012 at 08:25:06AM +0000, Konstantin Belousov wrote:
> Author: kib
> Date: Fri Nov 16 08:25:06 2012
> New Revision: 243142
> URL: http://svnweb.freebsd.org/changeset/base/243142
> 
> Log:
>   In pget(9), if PGET_NOTWEXIT flag is not specified, also search the
>   zombie list for the pid. This allows several kern.proc sysctls to
>   report useful information for zombies.
>   
>   Hold the allproc_lock around all searches instead of relocking it.
>   Remove private pfind_locked() from the new nfs client code.
>   
>   Requested and reviewed by:	pjd
>   Tested by:	pho
>   MFC after:	3 weeks
[...]
> @@ -364,12 +374,16 @@ pget(pid_t pid, int flags, struct proc *
>  	struct proc *p;
>  	int error;
>  
> +	sx_slock(&allproc_lock);
>  	if (pid <= PID_MAX)
> -		p = pfind(pid);
> +		p = pfind_locked(pid);
>  	else if ((flags & PGET_NOTID) == 0)
> -		p = pfind_tid(pid);
> +		p = pfind_tid_locked(pid);
>  	else
>  		p = NULL;
> +	if (p == NULL && (flags & PGET_NOTWEXIT) == 0)
> +		p = zpfind_locked(pid);
> +	sx_sunlock(&allproc_lock);
>  	if (p == NULL)
>  		return (ESRCH);

I think we should move zpfind_locked() under 'pid <= PID_MAX':

	sx_slock(&allproc_lock);
	if (pid <= PID_MAX) {
		p = pfind_locked(pid);
		if (p == NULL && (flags & PGET_NOTWEXIT) == 0)
			p = zpfind_locked(pid);
	} else if ((flags & PGET_NOTID) == 0) {
		p = pfind_tid_locked(pid);
	} else {
		p = NULL;
	}
	sx_sunlock(&allproc_lock);
	if (p == NULL)
		return (ESRCH);

-- 
Pawel Jakub Dawidek                       http://www.wheelsystems.com
FreeBSD committer                         http://www.FreeBSD.org
Am I Evil? Yes, I Am!                     http://tupytaj.pl
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
URL: <http://lists.freebsd.org/pipermail/svn-src-head/attachments/20121124/f6fdcf0c/attachment.sig>


More information about the svn-src-head mailing list