From: Scott Mayhew <smayhew@redhat.com>
To: linux-nfs@vger.kernel.org
Subject: [nfs-utils PATCH 2/4] mount.nfs: avoid sending conflicting mount options
Date: Tue, 13 Aug 2013 15:20:27 -0400 [thread overview]
Message-ID: <1376421629-21382-3-git-send-email-smayhew@redhat.com> (raw)
In-Reply-To: <1376421629-21382-1-git-send-email-smayhew@redhat.com>
conf_parse_mntopts() calls lookup_entry() in an attempt to avoid
"overwriting" of mount options (actually it tries to avoid appending
conflicting options to the string passed to mount(2)). Currently this doesn't
do much of anything. For example, if you have Timeo=600 in the global
section, Timeo=300 in the server-specific section, and Timeo=150 in the
mountpoint-specific section, then the string that is passed to the mount
syscall will contain "timeo=600,timeo=300,timeo=150".
Note that the ordering of the conflicting options ensures that the
correct option will ultimately be applied, but we should still avoid sending
the conflicting options in the first place if possible.
This patch fixes all but the MNT_NOARG type options (fg, bg, and sloppy).
Signed-off-by: Scott Mayhew <smayhew@redhat.com>
---
utils/mount/configfile.c | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/utils/mount/configfile.c b/utils/mount/configfile.c
index 1f1b6e7..221436f 100644
--- a/utils/mount/configfile.c
+++ b/utils/mount/configfile.c
@@ -170,10 +170,16 @@ char *lookup_entry(char *opt)
{
struct entry *entry;
- SLIST_FOREACH(entry, &head, entries) {
- if (strcasecmp(entry->opt, opt) == 0)
- return opt;
- }
+ if (strlen(opt) > 0 && opt[strlen(opt) - 1] == '=')
+ SLIST_FOREACH(entry, &head, entries) {
+ if (strncasecmp(entry->opt, opt, strlen(opt)) == 0)
+ return opt;
+ }
+ else
+ SLIST_FOREACH(entry, &head, entries) {
+ if (strcasecmp(entry->opt, opt) == 0)
+ return opt;
+ }
return NULL;
}
/*
@@ -300,13 +306,21 @@ conf_parse_mntopts(char *section, char *arg, char *opts)
if (opts && check_vers(opts, node->field))
continue;
- if (lookup_entry(node->field) != NULL)
+ if (lookup_entry(buf) != NULL)
continue;
buf[0] = '\0';
value = conf_get_section(section, arg, node->field);
if (value == NULL)
continue;
field = mountopts_alias(node->field, &argtype);
+ if (lookup_entry(field) != NULL)
+ continue;
+ if (argtype != MNT_NOARG) {
+ snprintf(buf, BUFSIZ, "no%s", field);
+ if (lookup_entry(buf) != NULL)
+ continue;
+ buf[0] = '\0';
+ }
if (strcasecmp(value, "false") == 0) {
if (argtype != MNT_NOARG)
snprintf(buf, BUFSIZ, "no%s", field);
--
1.7.11.7
next prev parent reply other threads:[~2013-08-13 19:20 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-13 19:20 [nfs-utils PATCH 0/4] Improve nfsmount.conf configuration parsing Scott Mayhew
2013-08-13 19:20 ` [nfs-utils PATCH 1/4] mount.nfs: avoid unnecessary duplication of options passed to mount(2) Scott Mayhew
2013-08-13 19:30 ` Chuck Lever
2013-08-13 22:39 ` Scott Mayhew
2013-08-14 1:29 ` Chuck Lever
2013-08-14 14:24 ` Scott Mayhew
2013-08-13 19:20 ` Scott Mayhew [this message]
2013-08-13 19:20 ` [nfs-utils PATCH 3/4] mount.nfs: improve handling of MNT_NOARG type options Scott Mayhew
2013-08-13 19:32 ` Chuck Lever
2013-08-13 22:45 ` Scott Mayhew
2013-08-14 1:46 ` Chuck Lever
2013-08-13 19:20 ` [nfs-utils PATCH 4/4] mount.nfs: clean up conf_parse_mntopts() Scott Mayhew
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=1376421629-21382-3-git-send-email-smayhew@redhat.com \
--to=smayhew@redhat.com \
--cc=linux-nfs@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).