From owner-svn-src-head@FreeBSD.ORG Tue Dec 23 07:56:21 2014 Return-Path: Delivered-To: svn-src-head@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 23CD483D; Tue, 23 Dec 2014 07:56:21 +0000 (UTC) Received: from st11p02mm-asmtp001.mac.com (st11p02mm-asmtp001.mac.com [17.172.220.236]) (using TLSv1.2 with cipher DHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E83F26460F; Tue, 23 Dec 2014 07:56:20 +0000 (UTC) Received: from fukuyama.hsd1.ca.comcast.net (unknown [73.162.13.215]) by st11p02mm-asmtp001.mac.com (Oracle Communications Messaging Server 7.0.5.33.0 64bit (built Aug 27 2014)) with ESMTPSA id <0NH0008T9ZCP6D10@st11p02mm-asmtp001.mac.com>; Tue, 23 Dec 2014 07:55:39 +0000 (GMT) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.13.68,1.0.33,0.0.0000 definitions=2014-12-23_03:2014-12-23,2014-12-23,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1412080000 definitions=main-1412230083 Content-type: text/plain; charset=windows-1252 MIME-version: 1.0 (Mac OS X Mail 8.1 \(1993\)) Subject: Re: svn commit: r276008 - in head/sys: kern sys From: Rui Paulo In-reply-to: <549913D4.5090103@FreeBSD.org> Date: Mon, 22 Dec 2014 23:55:36 -0800 Content-transfer-encoding: quoted-printable Message-id: <8F0C318C-9312-479E-BF1C-57E3654D6105@me.com> References: <201412211332.sBLDW8VC030548@svn.freebsd.org> <201412220940.02509.jhb@freebsd.org> <08A2ABA0-C982-46BC-B309-3C23B8D277B9@me.com> <201412221417.42894.jhb@freebsd.org> <2C4635EF-6BE6-4ED7-B9D1-237F76259E88@me.com> <549913D4.5090103@FreeBSD.org> To: Andriy Gapon X-Mailer: Apple Mail (2.1993) Cc: Konstantin Belousov , svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, John Baldwin X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Dec 2014 07:56:21 -0000 On Dec 22, 2014, at 23:03, Andriy Gapon wrote: >=20 > On 23/12/2014 04:39, Rui Paulo wrote: >> On Dec 22, 2014, at 11:17, John Baldwin wrote: >>>=20 >>> On Monday, December 22, 2014 1:29:38 pm Rui Paulo wrote: >>>> On Dec 22, 2014, at 06:40, John Baldwin wrote: >>>>> Is there something specific to core dumps that makes vn_fullpath() = more >>>>> useful to have working before a process tries to open the core? = (As >>>>> compared to other newly-created files) >>>>=20 >>>> Yes: the ability to provide the full path to userland when a core = dump file=20 >>> is generated. >>>=20 >>> Can you be more specific? Are we printing the path on the console = after >>> destroying the generated path? Is it being written into a note in = the core >>> itself (but only having the vnode of the core file available and not = the=20 >>> generated path)? >>=20 >> No. I have some code that calls devctl_notify() when a core dump is = generated which is useful for running an automated debugging session. = We use this at work and I'll see if I can upstream it. What Konstantin = fixed was the generation of the cache entry in the corefile_open() = routine. This lets me call vn_fullpath() after vn_close() with a high = probability that it will work whereas, in the past, it was never in the = cache, so vn_fullpath() would always fail. >=20 > What is not entirely clear to me is why we need to recover the path = from the > vnode if we, obviously, have the path even before we have the vnode. Using the default setting for core files, it's based on the CWD of the = process. If you're using a different kern.corefile setting, it's = different. You will also need to account for the %N format string = (check the code for indexpos). Given that this is far from being a hot = path, it's much easier to just do a vn_fullpath() on the vnode than to = deal with all the other details.=20 -- Rui Paulo