From patchwork Thu Jul 14 02:26:43 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: NeilBrown X-Patchwork-Id: 9228805 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 95F896086B for ; Thu, 14 Jul 2016 02:27:58 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8381827D5D for ; Thu, 14 Jul 2016 02:27:58 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 782792807B; Thu, 14 Jul 2016 02:27:58 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0788127D5D for ; Thu, 14 Jul 2016 02:27:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751217AbcGNC14 (ORCPT ); Wed, 13 Jul 2016 22:27:56 -0400 Received: from mx2.suse.de ([195.135.220.15]:57088 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750865AbcGNC14 (ORCPT ); Wed, 13 Jul 2016 22:27:56 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B2EEBAC5D; Thu, 14 Jul 2016 02:27:54 +0000 (UTC) From: NeilBrown To: Steve Dickson Date: Thu, 14 Jul 2016 12:26:43 +1000 Subject: [PATCH 4/8] mountd: cause attempts to access unmounted exportpoints to return ESTALE Cc: Linux NFS Mailing list Message-ID: <20160714022643.5874.15072.stgit@noble> In-Reply-To: <20160714021310.5874.22953.stgit@noble> References: <20160714021310.5874.22953.stgit@noble> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP If a filehandle arrives for an export with the "mountpoint" option, but which isn't mounted, then we should return ESTALE rather than delaying in the hope the filesystem might get mounted. It is safest to assume that if a filesystem didn't get mounted, then there is a serious problem, and waiting isn't likely to fix it. Signed-off-by: NeilBrown --- utils/mountd/cache.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c index 346a8b3af8b5..f33f66640c6c 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -689,6 +689,7 @@ static void nfsd_fh(int f) int i; char buf[RPC_CHAN_BUF_SIZE], *bp; int blen; + int short_timeout = 0; blen = read(f, buf, sizeof(buf)); if (blen <= 0 || buf[blen-1] != '\n') return; @@ -787,13 +788,12 @@ static void nfsd_fh(int f) !is_mountpoint(found->e_mountpoint[0]? found->e_mountpoint: found->e_path)) { - /* Cannot export this yet - * should log a warning, but need to rate limit - xlog(L_WARNING, "%s not exported as %d not a mountpoint", - found->e_path, found->e_mountpoint); + /* Cannot export this, as it isn't mounted. + * Set a short timeout so we might try again + * if the filesystem gets mounted. */ - /* FIXME we need to make sure we re-visit this later */ - goto out; + found = 0; + short_timeout = 1; } if (found) @@ -812,7 +812,10 @@ static void nfsd_fh(int f) * timeout. Maybe this should be configurable on the command * line. */ - qword_addint(&bp, &blen, 0x7fffffff); + if (short_timeout) + qword_addint(&bp, &blen, DEFAULT_TTL); + else + qword_addint(&bp, &blen, 0x7fffffff); if (found) qword_add(&bp, &blen, found_path); qword_addeol(&bp, &blen);