Return-Path: Delivered-To: apmail-new-httpd-archive@apache.org Received: (qmail 24461 invoked by uid 500); 2 Aug 2001 14:05:57 -0000 Mailing-List: contact new-httpd-help@apache.org; run by ezmlm Precedence: bulk Reply-To: new-httpd@apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list new-httpd@apache.org Received: (qmail 24448 invoked from network); 2 Aug 2001 14:05:56 -0000 Errors-To: Message-ID: <17b001c11b5b$debe1e60$93c0b0d0@roweclan.net> From: "William A. Rowe, Jr." To: References: <3B33B2B2.40800@pacbell.net> <114401c11ab2$348fe170$93c0b0d0@roweclan.net> <3B691549.7040306@pacbell.net> Subject: Re: [PATCH] Re: directory_walk performance Date: Thu, 2 Aug 2001 09:01:42 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N Status: O X-Status: X-Keywords: X-UID: 49 From: "Brian Pane" Sent: Thursday, August 02, 2001 3:54 AM > William A. Rowe, Jr. wrote: > > > see my commit to core/request.c ... I've dropped in the new directory_walk > >code. > > Here's a patch that implements my pre-merge optimization to > reduce (and in some cases completely eliminate) the calls to > ap_merge_per_dir_configs. Its impacts on directory_walk are > minor; all the real work happens in a new post-config-phase > function. > > I was able to generalize the pre-merge technique to support > even wildcard directories (something that my original prototype > couldn't handle correctly). The comments in core.c describe the > algorithm. There is one _huge_, glaring omission (not in your patch). If we optimize an individual module dir_merge (see the tables in mod_mime) and the optimizer comes along and holds a partial merge, that cached merge _may_ become corrupted when we try merging along the complete context in the r pool. This change will require all dir_merge operaions to be told if it is merging a final (cached) copy, or an incremental (the request, or part of a cached copy that isn't the end-node). The dir_merge must be certain it doesn't modify anything in the working base if that base has come from the config rec or the cache. Contrawise, it _may_ modify the base if the caller will be discarding that base. Bill