Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Apr 2011 21:57:51 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Knob to turn off _POSIX_NO_TRUNC
Message-ID:  <20110405185751.GE78089@deviant.kiev.zoral.com.ua>
In-Reply-To: <201104051316.32704.jhb@freebsd.org>
References:  <20110405141631.GA78089@deviant.kiev.zoral.com.ua> <20110405154002.GD78089@deviant.kiev.zoral.com.ua> <20110405183104.2304d94e@ernst.jennejohn.org> <201104051316.32704.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--V5miJjP81WSXKLM2
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, Apr 05, 2011 at 01:16:32PM -0400, John Baldwin wrote:
> On Tuesday, April 05, 2011 12:31:04 pm Gary Jennejohn wrote:
> > On Tue, 5 Apr 2011 18:40:02 +0300
> > Kostik Belousov <kostikbel@gmail.com> wrote:
> >=20
> > > On Tue, Apr 05, 2011 at 05:27:46PM +0200, Gary Jennejohn wrote:
> > > > On Tue, 5 Apr 2011 17:16:31 +0300
> > > > Kostik Belousov <kostikbel@gmail.com> wrote:
> > > > > @@ -514,8 +519,14 @@ dirloop:
> > > > >  		continue;
> > > > >  	cnp->cn_namelen =3D cp - cnp->cn_nameptr;
> > > > >  	if (cnp->cn_namelen > NAME_MAX) {
> > > > > -		error =3D ENAMETOOLONG;
> > > > > -		goto bad;
> > > > > +		if (!lookup_trim) {
> > > >=20
> > > > I would intuitively expect trimming to be enabled when the sysctl i=
s set
> > > > to 1, but this is exactly the opposite of that.  I personally would
> > > > initialize it to 1.
> > > Trimming is indeed enabled when lookup_trim is set to 1.
> > > If lookup_trim is 0, you get ENAMETOOLONG.
> >=20
> > OK, but trimming to me as a native english speaker means returning ENAM=
ETOOLONG
> > rather than allowing names longer than NAME_MAX.  That is, after all, w=
hat trimming
> > means - cutting off.
>=20
> Err, it shortens the name by chopping off the part beyond
> NAME_MAX ("trimming") when enabled. You could perhaps call it
> 'truncate_long_pathnames' instead of 'lookup_trim' if you wanted it to
> be very descriptive.
>
> Personally, I find this a bit hackish. You could always "fix" the 3rd
> party software by using LD_PRELOAD() to implement a wrapper around
> open() that trimmed the name if open() fails with ENAMETOOLONG.
Ok, I am taking the patch aside then. Please note that the change
as is allowed any vfs syscall taking the path, to proceed. Also,
the arbitrary path element, not only the last one, was handled.
But this is only a question of amount of code in the preloaded
library.

--V5miJjP81WSXKLM2
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (FreeBSD)

iEYEARECAAYFAk2bZi8ACgkQC3+MBN1Mb4iYrACeO6dDwg+u3yZJb07NXgOi+9OJ
fv0AoMH11CKJ0RPUp6vmY5533M5MC9ax
=vnqU
-----END PGP SIGNATURE-----

--V5miJjP81WSXKLM2--



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