Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Apr 2012 20:58:49 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        Mark Saad <nonesuch@longcount.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: mount_nfs does not like exports longer then 88 chars
Message-ID:  <182169197.3115940.1334883529079.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <CAMXt9NaEXKUDKA53Tf7iHCBHgKcHcgV%2BphXUzHZUT78=5-PTYg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Mark Saad wrote:
> On Thu, Apr 19, 2012 at 3:51 PM, Andrew Duane <aduane@juniper.net>
> wrote:
> > MNAMELEN is used to bound the Mount NAMe LENgth, and is used in many
> > many places. It may seem to work fine, but there are lots of
> > utilities and such that will almost certainly fail managing it.
> > Search the source code for MNAMELEN.....
>=20
> I see that this is used in a number of Mount and fs bits. Do you know
> why mount_nfs would care how long the exported path and hostname are ?
>=20
Well, it's copied to f_mntfromname in "struct statfs". If one longer
than MNAMELEN is allowed, it gets truncated when copied. I have no idea
which userland apps. will get upset with a truncated value in
f_mntfromname. (To change the size of f_mntfromname would require a new
revision of the statfs syscall, I think?)

Does this answer what you were asking? rick

> >
> > =C2=A0...................................
> > Andrew Duane
> > Juniper Networks
> > +1 978-589-0551 (o)
> > +1 603-770-7088 (m)
> > aduane@juniper.net
> >
> >
> >
> >
> >> -----Original Message-----
> >> From: owner-freebsd-hackers@freebsd.org [mailto:owner-freebsd-
> >> hackers@freebsd.org] On Behalf Of Mark Saad
> >> Sent: Thursday, April 19, 2012 3:46 PM
> >> To: freebsd-hackers@freebsd.org
> >> Subject: mount_nfs does not like exports longer then 88 chars
> >>
> >> Hello Hackers
> >> =C2=A0 I was wondering if anyone has come across this issue. This exis=
ts
> >> =C2=A0 in
> >> FreeBSD 6, 7, and 9 , and probably in 8 but I am not using it at
> >> this time.
> >> When a nfs export path and host name total to more then 88
> >> characters
> >> mount_nfs bombs out with the following error when it attempts to
> >> mount it.
> >>
> >> mount_nfs:
> >> nyisilon2-13.grp2:/ifs/clients/www/csar884520456/files_cms-
> >> stage-BK/imagefield_default_images:
> >> File name too long
> >>
> >> I traced this down to a check in mount_nfs.c . This is about line
> >> 560
> >> in the 7-STABLE version and 734 in the 9-STABLE version
> >>
> >>
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* If there has been a trailing slash=
 at mounttime it seems
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* that some mountd implementations f=
ail to remove the
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0mount
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* entries from their mountlist while=
 unmounting.
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*/
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 for (speclen =3D strlen(spec);
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 speclen > 1 &&=
 spec[speclen - 1] =3D=3D '/';
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 speclen--)
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 spec[speclen -=
 1] =3D '\0';
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (strlen(hostp) + strlen(spec) + 1 > MNA=
MELEN) {
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 warnx("%s:%s: =
%s", hostp, spec,
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 strerror(ENAME=
TOOLONG));
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (0);
> >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 }
> >>
> >> Does any one know why the check for hostp + spec +1 to be less then
> >> MNAMELEN is there for ?
> >>
> >> =C2=A0I removed the check on my 9-STABLE box and it mounts the long
> >> =C2=A0mounts fine
> >>
> >> I submitted a pr for this its kern/167105
> >> http://www.freebsd.org/cgi/query-pr.cgi?pr=3D167105 as there is no
> >> mention of this in the man page and I cant find any reason for the
> >> check at all.
> >>
> >>
> >> --
> >> mark saad | nonesuch@longcount.org
> >> _______________________________________________
> >> freebsd-hackers@freebsd.org mailing list
> >> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> >> To unsubscribe, send any mail to "freebsd-hackers-
> >> unsubscribe@freebsd.org"
>=20
>=20
>=20
> --
> mark saad | nonesuch@longcount.org
> _______________________________________________
> freebsd-hackers@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to
> "freebsd-hackers-unsubscribe@freebsd.org"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?182169197.3115940.1334883529079.JavaMail.root>