From patchwork Sun Oct 20 22:49:02 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: NeilBrown X-Patchwork-Id: 3074081 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 56E53BF925 for ; Sun, 20 Oct 2013 22:49:46 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 898E220364 for ; Sun, 20 Oct 2013 22:49:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 58D232035E for ; Sun, 20 Oct 2013 22:49:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751972Ab3JTWtf (ORCPT ); Sun, 20 Oct 2013 18:49:35 -0400 Received: from cantor2.suse.de ([195.135.220.15]:52601 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751816Ab3JTWtV (ORCPT ); Sun, 20 Oct 2013 18:49:21 -0400 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B2EDFA60D0; Mon, 21 Oct 2013 00:49:17 +0200 (CEST) Date: Mon, 21 Oct 2013 09:49:02 +1100 From: NeilBrown To: NeilBrown Cc: Chuck Lever , Wangminlan , "J. Bruce Fields" , "linux-nfs@vger.kernel.org" Subject: Re: Different sequence of "exportfs" produce different effects on nfs client mounts Message-ID: <20131021094902.616f2100@notabene.brown> In-Reply-To: <20131018083253.40e8881e@notabene.brown> References: <3962238FD7EA0F41B1810E7ABEAFBC314CEF9ACF@szxema505-mbs.china.huawei.com> <20131014174540.GA27747@fieldses.org> <3962238FD7EA0F41B1810E7ABEAFBC314CEF9E97@szxema505-mbs.china.huawei.com> <20131015154918.GA6117@fieldses.org> <3962238FD7EA0F41B1810E7ABEAFBC314CEF9FD9@szxema505-mbs.china.huawei.com> <3962238FD7EA0F41B1810E7ABEAFBC314CEFA2F5@szxema505-mbs.china.huawei.com> <20131018083253.40e8881e@notabene.brown> X-Mailer: Claws Mail 3.9.0 (GTK+ 2.24.18; x86_64-suse-linux-gnu) Mime-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_TVD_MIME_EPI, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Fri, 18 Oct 2013 08:32:53 +1100 NeilBrown wrote: > On Thu, 17 Oct 2013 09:14:02 -0400 Chuck Lever wrote: > > > Hi- > > > > 281 if (ident[0] == '\0') > > 282 return MCL_ANONYMOUS; > > 283 if (ident[0] == '@') { > > 284 #ifndef HAVE_INNETGR > > 285 xlog(L_WARNING, "netgroup support not compiled in"); > > 286 #endif > > 287 return MCL_NETGROUP; > > 288 } > > 289 for (sp = ident; *sp; sp++) { > > 290 if (*sp == '*' || *sp == '?' || *sp == '[') > > 291 return MCL_WILDCARD; > > 292 if (*sp == '/') > > 293 return MCL_SUBNETWORK; > > 294 if (*sp == '\\' && sp[1]) > > 295 sp++; > > 296 } > > > > is still in play today. The "host_pton()" code you posted was added by commit 502edf1d just after this paragraph. But here is what that commit replaced. > > > > - /* check for N.N.N.N */ > > - sp = ident; > > - if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_FQDN; > > - sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_F > > - sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '.') return MCL_F > > - sp++; if(!isdigit(*sp) || strtoul(sp, &sp, 10) > 255 || *sp != '\0') return MCL_ > > - /* we lie here a bit. but technically N.N.N.N == N.N.N.N/32 :) */ > > - return MCL_SUBNETWORK; > > + > > + /* > > + * Treat unadorned IP addresses as MCL_SUBNETWORK. > > + * Everything else is MCL_FQDN. > > + */ > > + ai = host_pton(ident); > > + if (ai != NULL) { > > + freeaddrinfo(ai); > > + return MCL_SUBNETWORK; > > + } > > + > > + return MCL_FQDN; > > } > > > > The replaced logic also treats IP addresses as MCL_SUBNETWORK. That's from commit 54669c98 in 2005. Neil, do you remember why this semantic change was made? > > > > See this thread: > > http://marc.info/?t=110993941000003&r=1&w=2 > > It was a simple (though possibly flawed) solution to clearly differentiate > those addresses where DNS looked might be needed, and those where it was not. > > I may have more to say later but I have to rush off now, so thought I'd just > post this anyway. > Unfortunately I cannot see how that change ever made any important difference, and the email exchanges ends without resolving anything. It could only make a difference to the number of DNS lookups if there was somewhere a test for whether clientlist[MCL_FQDN] was NULL, but there isn't and never was. So it seems very likely that: is appropriate and may well fix the current issue. It would be good to test how many DNS looks (hopefully none) are performed when using a exports file that contains only IP addresses, both before and after the patch. NeilBrown diff --git a/support/export/client.c b/support/export/client.c index ba2db8f..adbeed8 100644 --- a/support/export/client.c +++ b/support/export/client.c @@ -767,15 +767,5 @@ client_gettype(char *ident) sp++; } - /* - * Treat unadorned IP addresses as MCL_SUBNETWORK. - * Everything else is MCL_FQDN. - */ - ai = host_pton(ident); - if (ai != NULL) { - freeaddrinfo(ai); - return MCL_SUBNETWORK; - } - return MCL_FQDN; }