mksnap_ffs(8) is not working while chrooted

Maxim Sobolev sobomax at
Tue Apr 11 17:41:00 UTC 2017

Hi Kirk et al,

I've stumbled upon problem that it is impossible to use mksnap_ffs(8) while
in the chrooted environment. Other utilities that manipulate fs'es (i.e.
mount(8) / umount(8)) work just fine. Quick glance through the code shows
that the problem stems from the fact that mksnap_ffs uses f_mntonname
returned by the statfs(2) system call to fill fspath parameter for the
nmount call. And the statfs() returns f_mntonname path outside chroot. As
far as I can see, there are two options to address this issue.

1. Adjust statfs(2) system call to substract chroot prefix while
returning f_mntonname. Similar to what prison_enforce_statfs() function
does for jails.

2. Enhance nmount(2) to allow taking FSID in place of mount path to do
resolution using existing flag MNT_BYFSID and adjust mksnap_ffs to use that
instead. This is what umount(8) does to work around the problem.

Which of two approaches would be preferred solution if any? The second one
seems a bit simpler to me. Please advise. Thanks!


More information about the freebsd-fs mailing list