From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Torvalds Subject: Re: [PATCH 7/3] Make index preloading check the whole path to the file Date: Thu, 9 Jul 2009 13:56:17 -0700 (PDT) Message-ID: References: <20090707000500.GA5594@dpotapov.dyndns.org> <7vskh646bw.fsf@alter.siamese.dyndns.org> <7vws6h3ji4.fsf@alter.siamese.dyndns.org> <7vab3d3dpc.fsf@alter.siamese.dyndns.org> Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Cc: Dmitry Potapov , Git Mailing List , Kjetil Barvik To: Junio C Hamano X-From: git-owner@vger.kernel.org Thu Jul 09 22:56:32 2009 Return-path: Envelope-to: gcvg-git-2@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1MP0fO-0002DY-GT for gcvg-git-2@gmane.org; Thu, 09 Jul 2009 22:56:31 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755250AbZGIU4Y (ORCPT ); Thu, 9 Jul 2009 16:56:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754360AbZGIU4X (ORCPT ); Thu, 9 Jul 2009 16:56:23 -0400 Received: from smtp1.linux-foundation.org ([140.211.169.13]:34123 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753653AbZGIU4X (ORCPT ); Thu, 9 Jul 2009 16:56:23 -0400 Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [140.211.169.55]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id n69KuIVZ018613 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 9 Jul 2009 13:56:19 -0700 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id n69KuHVN021732; Thu, 9 Jul 2009 13:56:17 -0700 X-X-Sender: torvalds@localhost.localdomain In-Reply-To: User-Agent: Alpine 2.01 (LFD 1184 2008-12-16) X-Spam-Status: No, hits=-3.966 required=5 tests=AWL,BAYES_00,OSDL_HEADER_SUBJECT_BRACKETED X-Spam-Checker-Version: SpamAssassin 3.2.4-osdl_revision__1.47__ X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.13 Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Ok, with these patches, the strace of the index preload looks very clean, and has the required tests for the directory components too: ... 26504 lstat("connect.c", {st_mode=S_IFREG|0664, st_size=14312, ...}) = 0 26504 lstat("contrib", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 26504 lstat("contrib/README", {st_mode=S_IFREG|0664, st_size=2113, ...}) = 0 26504 lstat("contrib/blameview", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 26504 lstat("contrib/blameview/blameview.perl", {st_mode=S_IFREG|0775, st_size=3776, ...}) = 0 ... ie now it actualyl verifies that the directories leading up to filenames are really directories by doing lstat() on them. And the symlink cache means that it doesn't do it for every single pathname, only for the first lookup per thread and directory. Maybe Kjetil wants to check the changes, but quite frankly, it looked pretty trivial to make that whole has_symlink_leading_path() be thread-safe. Linus