From owner-freebsd-bugs Mon Nov 19 3:50: 8 2001 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id E9E9037B416 for ; Mon, 19 Nov 2001 03:50:04 -0800 (PST) Received: (from gnats@localhost) by freefall.freebsd.org (8.11.4/8.11.4) id fAJBo4a53978; Mon, 19 Nov 2001 03:50:04 -0800 (PST) (envelope-from gnats) Date: Mon, 19 Nov 2001 03:50:04 -0800 (PST) Message-Id: <200111191150.fAJBo4a53978@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Maxim Konovalov Subject: Re: kern/23353: fcntl(F_GETLK) return l_pid equal to -1 for the file loked with flock() Reply-To: Maxim Konovalov Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org The following reply was made to PR kern/23353; it has been noted by GNATS. From: Maxim Konovalov To: freebsd-gnats-submit@freebsd.org Cc: Subject: Re: kern/23353: fcntl(F_GETLK) return l_pid equal to -1 for the file loked with flock() Date: Mon, 19 Nov 2001 14:42:57 +0300 (MSK) ---------- Forwarded message ---------- Date: Mon, 19 Nov 2001 12:41:20 +0200 (EET) From: Andrey Simonenko To: Maxim Konovalov Cc: iedowse@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: kern/23353: fcntl(F_GETLK) return l_pid equal to -1 for the file loked with flock() On Mon, 19 Nov 2001, Maxim Konovalov wrote: > OK, just imagine a process got a lock by flock(2) and then fork(2)ed > nine children, so we have ten processes with the same lock. What do > you expect to find in flock.l_pid now? Imho l_pid is about clueless > here because of the lock inheritance. Probably l_pid should be equal to the PID of the parent and then, when the parent is terminated, it should be equal to one of its childs, and so on. > > Historically, flock(2) is a BSD interface and fcntl(F_???LK) is a > POSIX one. They can be used concurrently for locking but there is a > feature which I described above. Take a look at the line 517 > kern_lockf.c (1.25): > > if (block->lf_flags & F_POSIX) > fl->l_pid = ((struct proc *)(block->lf_id))->p_pid; > else > fl->l_pid = -1; > Thanks, I understood. > > flock(2) call (at least in my experiments). Also I haven't find any > > information about this in manual pages. > > Agree. > > What about this patch for fcntl.2: > > Index: fcntl.2 > =================================================================== > RCS file: /vol0/cvs/ncvs/src/lib/libc/sys/fcntl.2,v > retrieving revision 1.35 > diff -u -r1.35 fcntl.2 > --- fcntl.2 2001/10/26 17:38:20 1.35 > +++ fcntl.2 2001/11/19 09:18:09 > @@ -535,6 +535,12 @@ > .Xr sigvec 2 , > .Xr tcgetpgrp 3 , > .Xr tcsetpgrp 3 > +.Sh BUGS > +fcntl(F_GETLK) returns -1 in > +.Fa l_pid > +if the process holding a blocking lock previously locked the > +file desriptor by > +.Xr flock 2 . > .Sh HISTORY > The > .Fn fcntl > May be it will be good to put description of such behaviour of flock and fcntl to the manual page, not sure that it should be placed in the BUG section, but commiters should know where to put this sentence. In any way I agree that this PR can be closed. To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message