All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Dickson <SteveD@redhat.com>
To: NeilBrown <neilb@suse.com>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH] nfs-server-generator: handle 'noauto' mounts correctly.
Date: Thu, 16 Feb 2017 05:23:18 -0500	[thread overview]
Message-ID: <6bd4a1b9-1094-6b85-ce84-2f80880fa9cd@RedHat.com> (raw)
In-Reply-To: <87poitv3p4.fsf@notabene.neil.brown.name>



On 02/07/2017 09:03 PM, NeilBrown wrote:
> When this code was written, the systemd documentation stated
> that "RequiresMountsFor" ignored mountpoints marked as "noauto".
> Unfortunately this is incorrect.  Consquently a filesystem marked
> as noauto that is also NFS exported will currently be mounted when
> the NFS server is started. This is not what people expect.
>
> So add a check for the noauto flag.  If any ancestor of a given
> export point has the noauto flag, no RequiresMountsFor will be
> generated for that point.
>
> Also skip RequiresMountsFor for exports marked 'mountpoint', as their
> absence is, theoretically, already handled by mountd.
>
> URL: https://github.com/systemd/systemd/issues/5249
> Signed-off-by: NeilBrown <neilb@suse.com>
Committed...

steved.
> ---
>  systemd/nfs-server-generator.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/systemd/nfs-server-generator.c b/systemd/nfs-server-generator.c
> index cc99969e9922..4aa65094ca07 100644
> --- a/systemd/nfs-server-generator.c
> +++ b/systemd/nfs-server-generator.c
> @@ -84,6 +84,28 @@ static void systemd_escape(FILE *f, char *path)
>  	}
>  }
>  
> +static int has_noauto_flag(char *path)
> +{
> +	FILE		*fstab;
> +	struct mntent	*mnt;
> +
> +	fstab = setmntent("/etc/fstab", "r");
> +	if (!fstab)
> +		return 0;
> +
> +	while ((mnt = getmntent(fstab)) != NULL) {
> +		int l = strlen(mnt->mnt_dir);
> +		if (strncmp(mnt->mnt_dir, path, l) != 0)
> +			continue;
> +		if (path[l] && path[l] != '/')
> +			continue;
> +		if (hasmntopt(mnt, "noauto"))
> +			break;
> +	}
> +	fclose(fstab);
> +	return mnt != NULL;
> +}
> +
>  int main(int argc, char *argv[])
>  {
>  	char		*path;
> @@ -124,6 +146,10 @@ int main(int argc, char *argv[])
>  		for (exp = exportlist[i].p_head; exp; exp = exp->m_next) {
>  			if (!is_unique(&list, exp->m_export.e_path))
>  				continue;
> +			if (exp->m_export.e_mountpoint)
> +				continue;
> +			if (has_noauto_flag(exp->m_export.e_path))
> +				continue;
>  			if (strchr(exp->m_export.e_path, ' '))
>  				fprintf(f, "RequiresMountsFor=\"%s\"\n",
>  					exp->m_export.e_path);


  reply	other threads:[~2017-02-16 10:23 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-08  2:03 NeilBrown
2017-02-16 10:23 ` Steve Dickson [this message]
2017-04-04 10:26 ` ChunYu Wang
2017-04-04 21:57   ` NeilBrown

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=6bd4a1b9-1094-6b85-ce84-2f80880fa9cd@RedHat.com \
    --to=steved@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.com \
    --subject='Re: [PATCH] nfs-server-generator: handle '\''noauto'\'' mounts correctly.' \
    /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

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.