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);
next prev parent 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.