From owner-freebsd-hackers@FreeBSD.ORG Mon Feb 21 21:47:25 2005 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BD50116A4CE; Mon, 21 Feb 2005 21:47:25 +0000 (GMT) Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8D04143D49; Mon, 21 Feb 2005 21:47:25 +0000 (GMT) (envelope-from dillon@apollo.backplane.com) Received: from apollo.backplane.com (localhost [127.0.0.1]) j1LLlP0e010675; Mon, 21 Feb 2005 13:47:25 -0800 (PST) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.12.9p2/8.12.9/Submit) id j1LLlP7n010674; Mon, 21 Feb 2005 13:47:25 -0800 (PST) (envelope-from dillon) Date: Mon, 21 Feb 2005 13:47:25 -0800 (PST) From: Matthew Dillon Message-Id: <200502212147.j1LLlP7n010674@apollo.backplane.com> To: Don Lewis References: <200502212013.j1LKDJPT042188@gw.catspoiler.org> cc: freebsd-hackers@freebsd.org cc: rwatson@freebsd.org Subject: Re: Re[2]: vn_fullpath() X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Feb 2005 21:47:25 -0000 :> tree if elements are missing, either directly, or by asking the file :> system using the above call. It's the last step from the file back to a :> parent directory that is the hardest. Alternatively, we can back off :> dropping the intermediate nodes and see to what extent that hurts vs. :> helps. : :I seem to recall that DragonFly keeps the intermediate nodes. There's no way to backport that, it would be hundreds of man hours of work. DragonFly uses a totally different namecache topology now, one that is mandatory and which guarentees the existance of intermediate nodes. You'd have to implement something similar to libc's getcwd code. e.g. ".." through and scan each directory to find the matching inode if the namecache entry is not present. It actually wouldn't be too hard to do. It wouldn't be efficient, but vn_fullpath() is rarely used so it shouldn't be a problem. -Matt Matthew Dillon