From patchwork Fri Mar 11 20:31:06 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 628911 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p2BKVJ7s004560 for ; Fri, 11 Mar 2011 20:31:19 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754067Ab1CKUbM (ORCPT ); Fri, 11 Mar 2011 15:31:12 -0500 Received: from mail-iw0-f174.google.com ([209.85.214.174]:57922 "EHLO mail-iw0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754059Ab1CKUbL (ORCPT ); Fri, 11 Mar 2011 15:31:11 -0500 Received: by iwn34 with SMTP id 34so2995873iwn.19 for ; Fri, 11 Mar 2011 12:31:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:sender:from:subject:to:cc:date:message-id :user-agent:mime-version:content-type:content-transfer-encoding; bh=X7ywraKwmzZbGjkPZXCZyeK2A6oc+oaV8CTWWobLnaQ=; b=Ffj9IUkYXfmARzaqwLGdLq5y4sbjN5HtrqHGLWYLOfuTmatb0FYk/hQnbzfPFEVGXC P/MXQcABsjmYZ0aw4l7x7yLSHe7ectS3eagAdnTGyf+cGCy8rw58Q1JfrWEOR2UlEyCX gRNH7fbqKVtPdbfiGVFAaY1/zf9uUlHL8i9Ak= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:from:subject:to:cc:date:message-id:user-agent:mime-version :content-type:content-transfer-encoding; b=gDXnHUZmjrUctKlcK4Wnm9MuMik/6w61h67xZs5ER2ohlvnumKJZhkIp79HguqhyQG fWyQL1WXvjHPY8yZ8SsWWPuYEP7Vf+zwmrKPlQ7Bpcn1BLM2OS7wwiVwQ5RmhD3n1MBu lBfsYP2i7WORdjpMuDnAqhHC3ssbLbL0SkUfc= Received: by 10.42.147.9 with SMTP id l9mr1680683icv.476.1299875470840; Fri, 11 Mar 2011 12:31:10 -0800 (PST) Received: from matisse.1015granger.net (adsl-99-26-161-222.dsl.sfldmi.sbcglobal.net [99.26.161.222]) by mx.google.com with ESMTPS id 8sm3753389iba.16.2011.03.11.12.31.08 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 11 Mar 2011 12:31:08 -0800 (PST) From: Chuck Lever Subject: [PATCH] NFS: NFSROOT should default to "proto=udp" To: trond.myklebust@netapp.com Cc: linux-nfs@vger.kernel.org Date: Fri, 11 Mar 2011 15:31:06 -0500 Message-ID: <20110311202750.12680.13402.stgit@matisse.1015granger.net> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 11 Mar 2011 20:31:20 +0000 (UTC) diff --git a/fs/nfs/nfsroot.c b/fs/nfs/nfsroot.c index 903908a..c541093 100644 --- a/fs/nfs/nfsroot.c +++ b/fs/nfs/nfsroot.c @@ -86,11 +86,14 @@ /* Default path we try to mount. "%s" gets replaced by our IP address */ #define NFS_ROOT "/tftpboot/%s" +/* Default NFSROOT mount options. */ +#define NFS_DEF_OPTIONS "udp" + /* Parameters passed from the kernel command line */ static char nfs_root_parms[256] __initdata = ""; /* Text-based mount options passed to super.c */ -static char nfs_root_options[256] __initdata = ""; +static char nfs_root_options[256] __initdata = NFS_DEF_OPTIONS; /* Address of NFS server */ static __be32 servaddr __initdata = htonl(INADDR_NONE); @@ -160,8 +163,14 @@ static int __init root_nfs_copy(char *dest, const char *src, } static int __init root_nfs_cat(char *dest, const char *src, - const size_t destlen) + const size_t destlen) { + size_t len = strlen(dest); + + if (len && dest[len - 1] != ',') + if (strlcat(dest, ",", destlen) > destlen) + return -1; + if (strlcat(dest, src, destlen) > destlen) return -1; return 0; @@ -194,16 +203,6 @@ static int __init root_nfs_parse_options(char *incoming, char *exppath, if (root_nfs_cat(nfs_root_options, incoming, sizeof(nfs_root_options))) return -1; - - /* - * Possibly prepare for more options to be appended - */ - if (nfs_root_options[0] != '\0' && - nfs_root_options[strlen(nfs_root_options)] != ',') - if (root_nfs_cat(nfs_root_options, ",", - sizeof(nfs_root_options))) - return -1; - return 0; } @@ -217,7 +216,7 @@ static int __init root_nfs_parse_options(char *incoming, char *exppath, */ static int __init root_nfs_data(char *cmdline) { - char addr_option[sizeof("nolock,addr=") + INET_ADDRSTRLEN + 1]; + char mand_options[sizeof("nolock,addr=") + INET_ADDRSTRLEN + 1]; int len, retval = -1; char *tmp = NULL; const size_t tmplen = sizeof(nfs_export_path); @@ -244,9 +243,9 @@ static int __init root_nfs_data(char *cmdline) * Append mandatory options for nfsroot so they override * what has come before */ - snprintf(addr_option, sizeof(addr_option), "nolock,addr=%pI4", + snprintf(mand_options, sizeof(mand_options), "nolock,addr=%pI4", &servaddr); - if (root_nfs_cat(nfs_root_options, addr_option, + if (root_nfs_cat(nfs_root_options, mand_options, sizeof(nfs_root_options))) goto out_optionstoolong;