bumping mount path lengths in struct statfs

Gleb Kurtsou gleb.kurtsou at gmail.com
Wed Jun 22 10:42:52 UTC 2011


On (21/06/2011 22:21), Kostik Belousov wrote:
> On Tue, Jun 21, 2011 at 09:16:18AM -0600, Will Andrews wrote:
> > Hi,
> > 
> > struct statfs contains the following:
> > 
> >  90         char      f_mntfromname[MNAMELEN];  /* mounted filesystem */
> >  91         char      f_mntonname[MNAMELEN];    /* directory on which mounted */
> > 
> > Where MNAMELEN is, currently, 88.  These limit the length of the path
> > that a filesystem can be mounted to.  This is enforced by
> > kern/vfs_mount.c:vfs_donmount().  This limit seems archaic, especially
> > given use cases like virtualization (large filesystem structures to
> > support underlying VMs), builds (which often make extensive use of
> > chroot with nullfs/NFS), ZFS, snapshots, etc.  Does anyone object to
> > bumping MNAMELEN to 1024 (PATH_MAX/MAXPATHLEN)?  Or some other
> > reasonably large value?
> 
> There is nothing inherently wrong with bumping the length. But the
> work required is probably more then you estimated. The cause is the
> ABI breakage. For sure, you will need to provide the shims for compat
> syscalls. Unfortunately, this is not enough.
> 
> Even quick look over our tree shows that struct statfs is used in API by
> several base libraries. Look e.g. at the getmntinfo(3). Libc would need
> shims too, at least.
> 
> You will need to do the ABI analisys of the whole system, provide the
> shims for the symbol-versioned libraries, and bump so version for
> unversioned.

I could do it as part of my 64-bit ino_t GSoC project. So should I
change MNAMELEN to 1024? What about MFSNAMELEN, it's now 16.
I think removing or increasing size of f_charspare field might also be a
good idea.

Thanks,
Gleb.


More information about the freebsd-fs mailing list