} mntres_t;
extern int nfs_mount_data_version;
+extern char *progname;
extern int verbose;
extern int sloppy;
}
int
-nfsmount(const char *spec, const char *node, int *flags,
- char **extra_opts, char **mount_opts,
- int running_bg, int *need_statd)
+nfsmount(const char *spec, const char *node, int flags,
+ char **extra_opts, int running_bg, int fake)
{
static char *prev_bg_host;
char hostdir[1024];
#endif
data.version = nfs_mount_data_version;
- *mount_opts = (char *) &data;
- if (*flags & MS_REMOUNT)
+ if (flags & MS_REMOUNT)
goto out_ok;
/*
strcat(new_opts, cbuf);
*extra_opts = xstrdup(new_opts);
- *need_statd = ! (data.flags & NFS_MOUNT_NONLM);
+
+ if (!fake && !(data.flags & NFS_MOUNT_NONLM)) {
+ if (!start_statd()) {
+ nfs_error(_("%s: rpc.statd is not running but is "
+ "required for remote locking.\n"
+ " Either use '-o nolocks' to keep "
+ "locks local, or start statd."),
+ progname);
+ goto fail;
+ }
+ }
+
+ if (!fake) {
+ if (mount(spec, node, "nfs",
+ flags & ~(MS_USER|MS_USERS), &data)) {
+ mount_error(spec, node, errno);
+ goto fail;
+ }
+ }
+
return 0;
/* abort */