On Wed, 2012-03-21 at 14:36 -0400, Scott Lovenberg wrote:
> On 3/21/2012 2:33 PM, Sachin Prabhu wrote:
> > On Wed, 2012-03-21 at 13:38 -0400, Jeff Layton wrote:
> >> On Fri, 09 Mar 2012 15:33:17 +0000
> >> Sachin Prabhu<[email protected]>  wrote:
> >>
> >>> Use the standard token parser instead of the long if confidtion to parse
> >>> cifs mount options.
> >>>
> >>> This was first proposed by Scott Lovenberg
> >>> http://lists.samba.org/archive/linux-cifs-client/2010-May/006079.html
> >>>
> >>> Mount options have been grouped together in terms of their input types.
> >>> Aliases for username, password, domain and credentials have been added.
> >>> The password parser has been modified to make it easier to read.
> >>>
> >>> Signed-off-by: Sachin Prabhu<[email protected]>
> >>>
> >>
> >> In testing this today, I found a problem. I tried to mount up a share
> >> with sec=none as the options. With that, I got this error:
> >>
> >>      CIFS: Unknown mount option pass=
> >>
> >> The problem is that the mount.cifs helper will pass a blank "pass="
> >> option to the kernel. It seems like the standard option parser doesn't
> >> have a way to allow you to specify an optional argument. That may need
> >> to be added in order for this to work.
> >
> > We could use it in this manner.
> >
> > ----
> > Allow mount option pass to be a blank value.
> >
> > When using sec=none, the mount.cifs helper will pass a blank 'pass='
> > mount option. This should be handled by the parser.
> >
> > Signed-off-by: Sachin Prabhu<[email protected]>
> > ---
> >   fs/cifs/connect.c |    7 +++++++
> >   1 files changed, 7 insertions(+), 0 deletions(-)
> >
> > diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
> > index 8f83ea0..831f242 100644
> > --- a/fs/cifs/connect.c
> > +++ b/fs/cifs/connect.c
> > @@ -107,6 +107,9 @@ enum {
> >     /* Mount options to be ignored */
> >     Opt_ignore,
> >
> > +   /* Options which could be blank */
> > +   Opt_blank_pass,
> > +
> >     Opt_err
> >   };
> >
> > @@ -180,6 +183,7 @@ static const match_table_t cifs_mount_option_tokens = {
> >
> >     { Opt_user, "user=%s" },
> >     { Opt_user, "username=%s" },
> > +   { Opt_blank_pass, "pass=" },
> >     { Opt_pass, "pass=%s" },
> >     { Opt_pass, "password=%s" },
> >     { Opt_ip, "ip=%s" },
> > @@ -1546,6 +1550,9 @@ cifs_parse_mount_options(const char *mountdata, const 
> > char *devname,
> >                     }
> >                     vol->nullauth = 0;
> >                     break;
> > +           case Opt_blank_pass:
> > +                   vol->password = NULL;
> > +                   break;
> >             case Opt_pass:
> >                     /* passwords have to be handled differently
> >                      * to allow the character used for deliminator

> Are there any other options that are implicitly set?  Or, more 
> generally, will this solution scale?

For a one off case like this, a solution like this is acceptable. If
there are more number of such options where we can could pass a blank,
we could add some code to make parsing them easier. 

I don't see us facing much problems scaling here.

Sachin Prabhu

--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to