From owner-freebsd-bugs@FreeBSD.ORG Thu Feb 19 05:04:11 2015 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3439C21F for ; Thu, 19 Feb 2015 05:04:11 +0000 (UTC) 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 1AD89B75 for ; Thu, 19 Feb 2015 05:04:11 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id t1J54A8M041355 for ; Thu, 19 Feb 2015 05:04:10 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 197695] Fix broken KERN_PROC_FILEDESC sysctl Date: Thu, 19 Feb 2015 05:04:11 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 11.0-CURRENT X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Many People X-Bugzilla-Who: s_bugzilla@nedprod.com X-Bugzilla-Status: New X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit 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.18-1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Feb 2015 05:04:11 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=197695 --- Comment #4 from Niall Douglas --- It turns out that I was wrong about there being no method of retrieving a canonical path for an open file descriptor on FreeBSD. There in fact is, and it is called KERN_PROC_FILEDESC. Unfortunately, KERN_PROC_FILEDESC is broken for regular files, but not directories where it works perfectly - even tracking renames and deletions with ease. The attached test case and its output shows the broken behaviour: 1. Files opened with O_CREAT never get a path. Creating the file, closing it and opening it again gets the file descriptor its path. 2. As soon as the process does its first rename() all the paths for all the regular file descriptors get reset to null, but not directory file descriptors. 3. Directory file descriptors work correctly. This was tested on FreeBSD 10.1 with ZFS on root. Other filing systems may vary. Niall -- You are receiving this mail because: You are the assignee for the bug.