From patchwork Thu Oct 11 15:10:59 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chuck Lever X-Patchwork-Id: 1582291 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 9522FDFABE for ; Thu, 11 Oct 2012 15:11:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757678Ab2JKPLD (ORCPT ); Thu, 11 Oct 2012 11:11:03 -0400 Received: from mail-ie0-f174.google.com ([209.85.223.174]:64939 "EHLO mail-ie0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757156Ab2JKPLC (ORCPT ); Thu, 11 Oct 2012 11:11:02 -0400 Received: by mail-ie0-f174.google.com with SMTP id k13so3136165iea.19 for ; Thu, 11 Oct 2012 08:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:subject:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-type:content-transfer-encoding; bh=1Jkf3YiGkhh9UtwjlrBwHuOk3VUZPGVjSd1A8O4imI0=; b=K/xUZj1RV8VHPj4KKbNlXjdta1RJkuhMKUL4IIPbEh1wVBMHi5h+7kAav/oje29Y57 DVnhSXwOUrPbXTuCLBLcq9NYlKb/w17ycOlEoUuyMYpemSaOAHiTZ9WGfUrd1DIP2eB6 S+sO8r3mxOT7RFlo5/eNXhGNrmDlV+NPgn7pnv39PxRI4kKm9272swKd0N75EYvO4/LL t53mJ8Ut5ymOhp1BEePoJcRVSC8aF8/5HlJTNLeHG/Ka4wbEwbXsfmxzDJDwz2vPEZKG n5jPfye/ZZpfiiLJsw4+UXqfVEwqAoS6WGtp9tm4cn5MzqoA782MwebEYC6wjHckP50k C12g== Received: by 10.50.57.130 with SMTP id i2mr9079684igq.56.1349968261113; Thu, 11 Oct 2012 08:11:01 -0700 (PDT) Received: from lebasque.1015granger.net (adsl-99-26-161-222.dsl.sfldmi.sbcglobal.net. [99.26.161.222]) by mx.google.com with ESMTPS id v12sm4058041igv.3.2012.10.11.08.11.00 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 11 Oct 2012 08:11:00 -0700 (PDT) From: Chuck Lever Subject: [PATCH 2/8] mountd: Use static buffer when constructing junction export options To: steved@redhat.com Cc: bfields@redhat.com, linux-nfs@vger.kernel.org Date: Thu, 11 Oct 2012 11:10:59 -0400 Message-ID: <20121011151059.4665.71119.stgit@lebasque.1015granger.net> In-Reply-To: <20121011150421.4665.35964.stgit@lebasque.1015granger.net> References: <20121011150421.4665.35964.stgit@lebasque.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 Clean up: Simplify locations_to_export() by constructing a junction's export options in a static buffer. We can do this because all of this code is called serially, in one thread, and the result is thrown away immediately after the caller is finished. The returned exportent itself is static. Signed-off-by: Chuck Lever --- utils/mountd/cache.c | 36 +++++------------------------------- 1 files changed, 5 insertions(+), 31 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 942fdbd..8de2eac 100644 --- a/utils/mountd/cache.c +++ b/utils/mountd/cache.c @@ -917,14 +917,15 @@ out_false: * * Returned exportent points to static memory. */ -static struct exportent *do_locations_to_export(struct jp_ops *ops, - nfs_fsloc_set_t locations, const char *junction, - char *options, size_t options_len) +static struct exportent *locations_to_export(struct jp_ops *ops, + nfs_fsloc_set_t locations, const char *junction) { + static char options[BUFSIZ]; struct exportent *exp; int ttl; - if (!locations_to_options(ops, locations, options, options_len, &ttl)) + options[0] = '\0'; + if (!locations_to_options(ops, locations, options, sizeof(options), &ttl)) return NULL; exp = mkexportent("*", (char *)junction, options); @@ -939,33 +940,6 @@ static struct exportent *do_locations_to_export(struct jp_ops *ops, } /* - * Convert set of FS locations to an exportent. Returns pointer to - * an exportent if "junction" refers to a junction. - * - * Returned exportent points to static memory. - */ -static struct exportent *locations_to_export(struct jp_ops *ops, - nfs_fsloc_set_t locations, const char *junction) -{ - struct exportent *exp; - char *options; - - options = malloc(BUFSIZ); - if (options == NULL) { - xlog(D_GENERAL, "%s: failed to allocate options buffer", - __func__); - return NULL; - } - options[0] = '\0'; - - exp = do_locations_to_export(ops, locations, junction, - options, BUFSIZ); - - free(options); - return exp; -} - -/* * Retrieve locations information in "junction" and dump it to the * kernel. Returns pointer to an exportent if "junction" refers * to a junction.