This question is related to the 63-or-88 char limit on mount paths as it affects ZFS snapshots, this 11.1R part-resolution in r319096, this issue + this.
To recap as I understand it, up to 11.0R, file system actions that implicitly needed to mount ZFS snapshots were limited by statfs's fixed 63+88 byte limits, so
As 12R won't be here for a while, this issue is still relevant. I can't currently search files on my filesystem because I didn't know about this issue when I set it up. That's not a problem (rename+delete solves everything!) but I'm not clear what exactly constitutes the relevant "filesystem paths" which must be kept under 63-or-88 chars respectively, to avoid this issue until 12R, particularly for ZFS pools contains nested datasets.
A definitive "this is how to determine whether a zfs dataset or snapshot will trigger this issue when mounted by
Below is a concrete example showing the kind of issue I have:
Can someone who is clear about it, give me a definitive explanation of the criteria, and a few examples to make sure it's clear (perhaps based on my example filesystem above), and make clear what exact combination of path and name lengths must be kept short to make my file system searchable again
Thanks!
To recap as I understand it, up to 11.0R, file system actions that implicitly needed to mount ZFS snapshots were limited by statfs's fixed 63+88 byte limits, so
ls -1R
or find . -name
couldn't always be used as normal on a ZFS pool with snapshots in some cases (they errored out midway: fts_read returned "no such file or dir"). This was part-fixed by r319096 in 11.1R so that at least in some cases they wouldn't error out. The full fix is only present in ino64 which increases the limits to 1024 chars, but ino64 is only scheduled to land with 12R in 2019.As 12R won't be here for a while, this issue is still relevant. I can't currently search files on my filesystem because I didn't know about this issue when I set it up. That's not a problem (rename+delete solves everything!) but I'm not clear what exactly constitutes the relevant "filesystem paths" which must be kept under 63-or-88 chars respectively, to avoid this issue until 12R, particularly for ZFS pools contains nested datasets.
A definitive "this is how to determine whether a zfs dataset or snapshot will trigger this issue when mounted by
ls
or find
", would really help.Below is a concrete example showing the kind of issue I have:
- I have ZFS on 11.0R. The pool contains nested datasets and non-hidden snapshot dirs (to allow normal searching). Example: a pool might contain nested datasets tank/production_northwest/public_files/marketing/2017 - then only ordinary files+dirs below "2017". I have some snapshots set up on tank, and perhaps also some manual snapshots I've added on public_files or 2017.
- If I now use a command like
find /mnt/tank/production-northwest -name "somefile*.docx"
to find all copies of some file (including snapshot copies) then this command fails because of the above bug, because the file system hierarchy contains nested snap dirs such as.zfs/snapshot/manualsnap_20171030-130000
both on the root dataset and the lower level nested datasets. Whenfind
tries to traverse these, it first implicitly mounts them. The implicit mount fails, andfind
errors out. Effectively I can'tls -1tR
orfind
.
find
and ls
in 11.1R are the same as in 11.0R given the r319096 patch).Can someone who is clear about it, give me a definitive explanation of the criteria, and a few examples to make sure it's clear (perhaps based on my example filesystem above), and make clear what exact combination of path and name lengths must be kept short to make my file system searchable again
Thanks!