Bigger MAX_PATH (Was: Re: State of native encryption in ZFS)

Willem Jan Withagen wjw at digiware.nl
Mon May 16 13:18:30 UTC 2016


On 15-5-2016 12:45, Niall Douglas via freebsd-fs wrote:
> On 14 May 2016 at 16:09, K. Macy wrote:
> 
>>>> It’s not even clear how that encryption would be implemented or exposed.
>>>>  Per pool?  Per dataset?  Per folder?  Per file?  There have been
>>>> requests for all of the above at one time or another, and the key
>>>> management challenges for each are different.  They can also be
>>>> implemented at a layer above ZFS, given sufficient interest.
>>>
>>> If FreeBSD had a bigger PATH_MAX then stackable encryptions layers
>>> like ecryptfs (encfs?) would be viable choices. Because encrypted
>>> path components are so long, one runs very rapidly into the maximum
>>> path on the system when PATH_MAX is so low.
>>>
>>> I ended up actually installing ZFS on Linux with ecryptfs on top to
>>> solve this. Every 15 minutes it ZFS snapshot syncs with the FreeBSD
>>> edition. This works very well, apart from the poor performance of ZFS
>>> on Linux.
>>>
>>> ZFS handles long paths with ease. FreeBSD currently does not :(
>>
>> AFAICT that's a 1 line patch. Have you tried patching that and
>> rebuilding kernel, world, and any vulnerable ports?
> 
> The problem is apparently kernel structure bloat and that they want 
> to remove fixed maximum paths altogether so it would be boot 
> modifiable.
> 
> http://freebsd.1045724.n5.nabble.com/misc-184340-PATH-MAX-not-interope
> rable-with-Linux-td5864469.html
> 
> As laudable as the latter goal is, unfortunately OS X and Linux hard 
> code theirs, and much POSIX software will use whatever PATH_MAX is 
> set to. I'm therefore not sure the implementation cost is worth it.
> 
> In any case, a 1024 byte path limit is just 256 unicode characters 
> potentially. That's worse than Windows 95 :(

I'm pretty sure that just about everybody that runs a somewhat bigger
ZFS installation runs into this a one point or another.
The weekly locate database build nags (after every fresh install) me for
about 4 years already that it needs a larger path than 1024. And then I
just dig into the source to up the value. the locate.db does not really
care.

I think I go a reply from Jilles around that time, that changing the
defines might cause unwanted compatibility fallout.
That was an answer sure enough to keep my hands from just doing the
1-line patch.

Trying to port Ceph is also running into the limit in:
/usr/include/sys/syslimits.h:
#define NAME_MAX        255  /* max bytes in a file name */

but I also found:
/usr/include/stdio.h:
#define FILENAME_MAX    1024 /* must be <= PATH_MAX <sys/syslimits.h> */

So take a pick??

--WjW



More information about the freebsd-fs mailing list