All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Dickson <SteveD@redhat.com>
To: NeilBrown <neilb@suse.de>
Cc: Tony Asleson <tasleson@redhat.com>, linux-nfs@vger.kernel.org
Subject: Re: [PATCH] exportfs: Return non-zero exit value on error
Date: Tue, 22 Oct 2013 04:38:11 -0400	[thread overview]
Message-ID: <52663973.8000005@RedHat.com> (raw)
In-Reply-To: <20131022092519.4f4683a8@notabene.brown>



On 21/10/13 18:25, NeilBrown wrote:
> From 2f63d6c3c38e673216a3351aff47d32059056638 Mon Sep 17 00:00:00 2001
> From: Neil Brown <neilb@suse.de>
> Date: Mon, 21 Oct 2013 17:40:55 +1100
> Subject: [PATCH] exportfs: exit with error code if there was any error.
> 
> exportfs currently exits with a non-zero error for some errors,
> but not for others.
> 
> It does this by having various support routines set the global
> variable "export_errno".
> 
> Change this to have 'xlog' set export_errno if an ERROR is
> reported.  That way all errors will be caught.
> 
> Note that the exit error code is changed from 22 (EINVAL)
> to the more traditional '1'.
> 
> Signed-off-by: NeilBrown <neilb@suse.de>
Committed... 

steved.

> 
> diff --git a/support/include/exportfs.h b/support/include/exportfs.h
> index 1fbf754..97b2327 100644
> --- a/support/include/exportfs.h
> +++ b/support/include/exportfs.h
> @@ -179,7 +179,4 @@ struct export_features {
>  struct export_features *get_export_features(void);
>  void fix_pseudoflavor_flags(struct exportent *ep);
>  
> -/* Record export error.  */
> -extern int export_errno;
> -
>  #endif /* EXPORTFS_H */
> diff --git a/support/include/xlog.h b/support/include/xlog.h
> index fd1a3f4..fd34ec2 100644
> --- a/support/include/xlog.h
> +++ b/support/include/xlog.h
> @@ -35,6 +35,7 @@ struct xlog_debugfac {
>  	int		df_fac;
>  };
>  
> +extern int export_errno;
>  void			xlog_open(char *progname);
>  void			xlog_stderr(int on);
>  void			xlog_syslog(int on);
> diff --git a/support/nfs/exports.c b/support/nfs/exports.c
> index d3160d3..d18667f 100644
> --- a/support/nfs/exports.c
> +++ b/support/nfs/exports.c
> @@ -47,8 +47,6 @@ struct flav_info flav_map[] = {
>  
>  const int flav_map_size = sizeof(flav_map)/sizeof(flav_map[0]);
>  
> -int export_errno;
> -
>  static char	*efname = NULL;
>  static XFILE	*efp = NULL;
>  static int	first;
> @@ -133,7 +131,6 @@ getexportent(int fromkernel, int fromexports)
>  	}
>  	if (ok < 0) {
>  		xlog(L_ERROR, "expected client(options...)");
> -		export_errno = EINVAL;
>  		return NULL;
>  	}
>  	first = 0;
> @@ -153,7 +150,6 @@ getexportent(int fromkernel, int fromexports)
>  		ok = getexport(exp, sizeof(exp));
>  		if (ok < 0) {
>  			xlog(L_ERROR, "expected client(options...)");
> -			export_errno = EINVAL;
>  			return NULL;
>  		}
>  	}
> @@ -173,7 +169,6 @@ getexportent(int fromkernel, int fromexports)
>  		*opt++ = '\0';
>  		if (!(sp = strchr(opt, ')')) || sp[1] != '\0') {
>  			syntaxerr("bad option list");
> -			export_errno = EINVAL;
>  			return NULL;
>  		}
>  		*sp = '\0';
> @@ -590,7 +585,6 @@ parseopts(char *cp, struct exportent *ep, int warn, int *had_subtree_opt_ptr)
>  				     flname, flline, opt);	
>  bad_option:
>  				free(opt);
> -				export_errno = EINVAL;
>  				return -1;
>  			}
>  		} else if (strncmp(opt, "anongid=", 8) == 0) {
> diff --git a/support/nfs/xlog.c b/support/nfs/xlog.c
> index 6820346..9f9e63e 100644
> --- a/support/nfs/xlog.c
> +++ b/support/nfs/xlog.c
> @@ -38,6 +38,8 @@ static int  logmask = 0;		/* What will be logged		*/
>  static char log_name[256];		/* name of this program		*/
>  static int  log_pid = -1;		/* PID of this program		*/
>  
> +int export_errno = 0;
> +
>  static void	xlog_toggle(int sig);
>  static struct xlog_debugfac	debugnames[] = {
>  	{ "general",	D_GENERAL, },
> @@ -189,6 +191,8 @@ void
>  xlog(int kind, const char* fmt, ...)
>  {
>  	va_list args;
> +	if (kind & (L_ERROR|D_GENERAL))
> +		export_errno = 1;
>  
>  	va_start(args, fmt);
>  	xlog_backend(kind, fmt, args);
> diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
> index 4331697..c2cb2fc 100644
> --- a/utils/exportfs/exportfs.c
> +++ b/utils/exportfs/exportfs.c
> @@ -103,8 +103,6 @@ main(int argc, char **argv)
>  	xlog_stderr(1);
>  	xlog_syslog(0);
>  
> -	export_errno = 0;
> -
>  	while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) {
>  		switch(c) {
>  		case 'a':

  reply	other threads:[~2013-10-22  8:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-02 23:29 [PATCH] exportfs: Return non-zero exit value on error Tony Asleson
2013-10-21 22:25 ` NeilBrown
2013-10-22  8:38   ` Steve Dickson [this message]
2013-10-22 15:23   ` Tony Asleson
2013-10-23  1:44     ` NeilBrown
2013-10-23 17:36       ` Tony Asleson
2013-10-23 22:18         ` NeilBrown
2013-10-23 23:31           ` Chuck Lever
2013-10-24 15:56             ` Steve Dickson
2013-10-24 16:05               ` Chuck Lever
2013-10-28  3:39                 ` NeilBrown
2013-10-28 14:09                   ` Chuck Lever
2013-10-24  5:34           ` Tony Asleson
2013-10-22  8:30 ` Steve Dickson
2013-10-22  8:36   ` Steve Dickson
2013-10-28 22:35     ` NeilBrown
2013-11-04 15:33       ` 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=52663973.8000005@RedHat.com \
    --to=steved@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=tasleson@redhat.com \
    /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.