All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb@suse.com>
To: Steve Dickson <SteveD@redhat.com>
Cc: Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: [PATCH nfs-utils] nfs-server-generator: avoid using external services.
Date: Thu, 13 Oct 2016 17:50:22 +1100	[thread overview]
Message-ID: <8737k0215d.fsf@notabene.neil.brown.name> (raw)

[-- Attachment #1: Type: text/plain, Size: 2917 bytes --]


nfs-server-generator is run very early when a lot of services
are not yet started, so it mustn't depend on them.
Currently it can try to use hostname lookup and syslog.

Hostname-lookup is not needed, as we don't use the host issue,
and sending message to stderr is sufficient for the generator.

Disabling syslog is easy - call a function that sets a static variable.

Disabling hostname lookup isn't quite so easy, so add a static variable
which can be set to disable it.

Signed-off-by: NeilBrown <neilb@suse.com>
---

hi,
 I contemplated passing another arg to export_read() and export_d_read()
 to resolve this, but it didn't seem worth it.

 Is this approach OK to people?

Thanks,
NeilBrown


 support/export/export.c        | 12 ++++++++++--
 support/include/exportfs.h     |  1 +
 systemd/nfs-server-generator.c |  4 ++++
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/support/export/export.c b/support/export/export.c
index 0b8a858c2c74..c65dc8807a4e 100644
--- a/support/export/export.c
+++ b/support/export/export.c
@@ -67,6 +67,14 @@ static void warn_duplicated_exports(nfs_export *exp, struct exportent *eep)
 	}
 }
 
+static int assume_canonical = 0;
+
+void
+export_avoid_host_lookup(int i)
+{
+	assume_canonical = i;
+}
+
 /**
  * export_read - read entries from /etc/exports
  * @fname: name of file to read from
@@ -83,9 +91,9 @@ export_read(char *fname)
 
 	setexportent(fname, "r");
 	while ((eep = getexportent(0,1)) != NULL) {
-		exp = export_lookup(eep->e_hostname, eep->e_path, 0);
+		exp = export_lookup(eep->e_hostname, eep->e_path, assume_canonical);
 		if (!exp) {
-			if (export_create(eep, 0))
+			if (export_create(eep, assume_canonical))
 				/* possible complaints already logged */
 				volumes++;
 		}
diff --git a/support/include/exportfs.h b/support/include/exportfs.h
index f033329b5fd2..ba45b2dee199 100644
--- a/support/include/exportfs.h
+++ b/support/include/exportfs.h
@@ -134,6 +134,7 @@ struct addrinfo *		client_resolve(const struct sockaddr *sap);
 int 				client_member(const char *client,
 						const char *name);
 
+void				export_avoid_host_lookup(int i);
 int				export_read(char *fname);
 int				export_d_read(const char *dname);
 void				export_reset(nfs_export *);
diff --git a/systemd/nfs-server-generator.c b/systemd/nfs-server-generator.c
index af8bb52bfbd7..7ae6dd1c4b20 100644
--- a/systemd/nfs-server-generator.c
+++ b/systemd/nfs-server-generator.c
@@ -93,6 +93,10 @@ int main(int argc, char *argv[])
 	FILE		*f, *fstab;
 	struct mntent	*mnt;
 
+	/* Avoid using any external services */
+	xlog_syslog(0);
+	export_avoid_host_lookup(1);
+
 	if (argc != 4 || argv[1][0] != '/') {
 		fprintf(stderr, "nfs-server-generator: create systemd dependencies for nfs-server\n");
 		fprintf(stderr, "Usage: normal-dir early-dir late-dir\n");
-- 
2.10.0


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 800 bytes --]

             reply	other threads:[~2016-10-13  7:25 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-13  6:50 NeilBrown [this message]
2016-11-01 18:45 ` [PATCH nfs-utils] nfs-server-generator: avoid using external services Steve Dickson
2016-11-01 19:55   ` NeilBrown
2016-11-01 22:03     ` Steve Dickson
2016-11-02  0:25       ` [PATCH nfs-utils v2] " NeilBrown
2016-11-07 19:16         ` Steve Dickson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8737k0215d.fsf@notabene.neil.brown.name \
    --to=neilb@suse.com \
    --cc=SteveD@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.