Skip to contentSkip to conversation

mount: improve error message when statd cannot be started.

PATCH In review NeilBrown 2 participants 2 messages Mar 23, 2015 – Mar 26, 2015

Subsystems (2)
lore
Share & tools
lore

NeilBrown

author
#0 lore raw

PATCH 1/1 mount: improve error message when statd cannot be started.

If you try to mount and NFSv3 filesystem, and statd is not running and cannot be started (maybe rpcbind isn't running either), the error message is:

mount.nfs: rpc.statd is not running but is required for remote locking. mount.nfs: Either use '-o nolock' to keep locks local, or start statd. mount.nfs: an incorrect mount option was specified

That last line is incorrect and misleading: no incorret mount option was specified.

This line comes from mount_error() in error.c. In this case that function doesn't really need to provide any more information.

So introduce a concention that EALREADY means an error message has already been printed, and use it to suppress that message.

utils/mount/error.c +3 -0
index e06f598e96e3..c9797fc380c4 100644
@@ -247,6 +247,9 @@ void mount_error(const char *spec, const char *mount_point, int error)
 		nfs_error(_("%s: please report the error to" PACKAGE_BUGREPORT),
 				progname);
 		break;
+	case EALREADY:
+		/* Error message has already been provided */
+		break;
 	default:
 		nfs_error(_("%s: %s"),
 			progname, strerror(error));
utils/mount/stropts.c +1 -0
index 76ecb3292860..df67facdd9d1 100644
@@ -298,6 +298,7 @@ static int nfs_verify_lock_option(struct mount_options *options)
 			    "required for remote locking."), progname);
 		nfs_error(_("%s: Either use '-o nolock' to keep "
 			    "locks local, or start statd."), progname);
+		errno = EALREADY; /* Don't print further error message */
 		return 0;
 	}
 
#1 lore raw
Quoted 13 lines · NeilBrown

If you try to mount and NFSv3 filesystem, and statd is not running and cannot be started (maybe rpcbind isn't running either), the error message is:

mount.nfs: rpc.statd is not running but is required for remote locking. mount.nfs: Either use '-o nolock' to keep locks local, or start statd. mount.nfs: an incorrect mount option was specified

That last line is incorrect and misleading: no incorret mount option was specified.

Quoted 7 lines

This line comes from mount_error() in error.c. In this case that function doesn't really need to provide any more information.

So introduce a concention that EALREADY means an error message has already been printed, and use it to suppress that message.

Committed...

steved.

Quoted 28 lines
utils/mount/error.c +3 -0
index e06f598e96e3..c9797fc380c4 100644
@@ -247,6 +247,9 @@ void mount_error(const char *spec, const char *mount_point, int error)
 		nfs_error(_("%s: please report the error to" PACKAGE_BUGREPORT),
 				progname);
 		break;
+	case EALREADY:
+		/* Error message has already been provided */
+		break;
 	default:
 		nfs_error(_("%s: %s"),
 			progname, strerror(error));
utils/mount/stropts.c +1 -0
index 76ecb3292860..df67facdd9d1 100644
@@ -298,6 +298,7 @@ static int nfs_verify_lock_option(struct mount_options *options)
 			    "required for remote locking."), progname);
 		nfs_error(_("%s: Either use '-o nolock' to keep "
 			    "locks local, or start statd."), progname);
+		errno = EALREADY; /* Don't print further error message */
 		return 0;
 	}