From owner-freebsd-bugs@freebsd.org Fri Dec 2 17:54:18 2016 Return-Path: Delivered-To: freebsd-bugs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3752FC62CC0 for ; Fri, 2 Dec 2016 17:54:18 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 02A411CCE for ; Fri, 2 Dec 2016 17:54:18 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id uB2HsHd9094901 for ; Fri, 2 Dec 2016 17:54:17 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 215011] kqueue: notification race condition between open and kqueue Date: Fri, 02 Dec 2016 17:54:18 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: myron.walker@emc.com X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Dec 2016 17:54:18 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D215011 Bug ID: 215011 Summary: kqueue: notification race condition between open and kqueue Product: Base System Version: CURRENT Hardware: Any OS: Any Status: New Severity: Affects Many People Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: myron.walker@emc.com There is a race condition that must be worked around by everyone using kqueue(s) to monitor files for changes. The race condition is. 1. open file and get fd 2. create kqueue to listen for events like (rename, delete, etc.) 3. go to sleep and wait for changes The problem is that if the file is deleted or renamed in between the call to open and before the kqueue is setup to monitor the file, you will not receive any notification In order to work around this people do: 1. create/open file 2. check stat and path of file 3. create kqueue to listen for events 4. check stat and path of file again and make sure nothing changed 5. go to sleep and wait for changes. It would be useful if there was a kqueue API for opening a file that would eliminate the race condition between opening a file and setting up monitori= ng an API that combines the parameters of open and kqueue so that the file descriptor returned and the kqueue monitoring setup will be atomic. Maybe a 'kopen' api or something like that. This would raise awareness of the race condition and provide a standard way= of navigating around it that can be stabalized and utilized throughout code to provide support for a much more robust platform. --=20 You are receiving this mail because: You are the assignee for the bug.=