Does v12 have support for 64 bit inodes, and for 1024 byte MNAMELEN / mount paths in statfs?

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
I've been waiting for a version of FreeNAS/TrueNAS based on FreeBSD 12 for a long time, because that's when 64 bit inodes landed, and with them, mount path support up from 63 or 88 or so characters, to 1024 chars.

From the header info of FreeBSD revision 318736:

"Commit the 64-bit inode project:"
"Extend the ino_t, dev_t, nlink_t types to 64-bit ints. Modify struct dirent layout to add d_off, increase the size of d_fileno to 64-bits, increase the size of d_namlen to 16-bits, and change the required alignment. Increase struct statfs f_mntfromname[] and f_mntonname[] array length MNAMELEN to 1024."

Why is this a big deal?

Well, ZFS has to covertly mount snapshots for file searches and so on. And historically, all of those mounts have had very short path lengths. The warnings about unsearchable snaps and snap names, are on about page 2 of every FreeNAS user guide up to 11.3.

With FreeBSD 12 those warnings should be a bygone era. Any reasonable dataset, nested dataset or snapshot name, and sensible mountpoint, should still have a path that fits within statfs / MNAMELEN with 64 bit inode landed. We should finally get that in TrueNAS 12... I get the impression.....

So, do we? can anyone more technical confirm it? :) Thanks!!
 
Last edited:

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
I have a test box, how long would you like to see the path in order to confirm?
 

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
I have a test box, how long would you like to see the path in order to confirm?
Thanks!!

Really, anything that shows the limits in 11.3 and earlier are well and truly ancient history, I guess. This is what the user guide for 11.3-U4 says about automatic mounting of snapshots and nested datasets (section 1.2):

Mounted Filesystem Paths88 bytesMounted filesystem path length (MNAMELEN). Longer paths can prevent a device from being mounted.
Device Filesystem Paths63 bytesdevfs(8) device path lengths (SPECNAMELEN). Longer paths can prevent a device from being created.

  • "If the mounted path length for a snapshot exceeds 88 bytes, the data in the snapshot is safe but inaccessible. "
  • "ZFS temporarily mounts a snapshot whenever a user attempts to view or search the files within the snapshot. The mountpoint used will be in the hidden directory .zfs/snapshot/name within the same ZFS dataset. For example, the snapshot mypool/dataset/snap1@snap2 is mounted at /mnt/mypool/dataset/.zfs/snapshot/snap2/. If the length of this path exceeds 88 bytes the snapshot will not be automatically mounted by ZFS and the snapshot contents will not be visible or searchable. This can be resolved by renaming the ZFS pool or dataset containing the snapshot to shorter names (mypool or dataset), or by shortening the second part of the snapshot name (snap2), so that the total mounted path length does not exceed 88 bytes. ZFS will automatically perform any necessary unmount or remount of the file system as part of the rename operation. After renaming, the snapshot data will be visible and searchable again."

If the statfs fields needed for mounting, can cope with 1024 bytes instead of the older much smaller limits, we should be able to create 3rd or 4th level nested datasets with > 88 byte names for each level's dataset, *and* create snapshots with longer names > 88 characters as well, (up to ZFS length limits), set snapdir=visible, so that we have paths like "/mnt/90_character_root_dataset_and_pool_name/90_character_1st_nested_dataset_name/90_character_2nd_nested_dataset_name/90_character_3rd_nested_dataset_name/.zfs/snapshot/90_character_various_snapshot_names/90_character_file_name" (all components too long for trouble-free automatic handling in 11.3, but should be fine given the described update to inodes/statfs in v12).

Unlike 11.3 and earlier, we should find that in v12-beta, running commands like "find /mnt/root_pool_name -iname testfile" will correctly automount, traverse, and descend into all child datasets and all their child snapshots, and find all of the current and snapshot versions of the files. This works for 11.3 but needs tiny dataset+snapshot names to do it.I'm hoping that 12 won't have the same problems as 11.3 did, with auto mounting either subdatasets or snaps, for search and traversal purposes.

If that's all thats involved, I could test it myself, but Im not 100% sure how to check for the maximum new limits if it works. Also I'Im not sure I trust that I know enough about statfs and FreeBSD mount limitations, to be sure what lengths of root dataset, subdatsets and snapshots, would be a proper test.

But thats what I'd like to know!
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
OK, so first thing, I was able to create a snapshot: /mnt/vol2/iocage/jails@incrediblylongsnapshotnamethatnobodywouldeveruseinrealityandneedstobesuperlongtoproveapoint-20200802-160230 and I can see that path and browse to it in the CLI with snapdir=visible

Find managed to see content within that snapshot path.

Now on my real dev system, I'll test a pool creation and child datasets to crazy lengths...
So this is how far I got...
cannot create 'crazylongpoolnamethatwouldnotworkinfreenas11duetothemassivelengthofthepoolnamebeingsolongasitis/crazylongdatasetnamethatwouldnotworkinfreenas11duetothemassivelengthofthedatasetnamebeingsolongasitis/crazylongchilddatasetnamethatwouldnotworkinfreenas11duetothemassivelengthofthedatasetnamebeingsolongasitis': name is too long

But this far did work just fine:
crazylongpoolnamethatwouldnotworkinfreenas11duetothemassivelengthofthepoolnamebeingsolongasitis/crazylongdatasetnamethatwouldnotworkinfreenas11duetothemassivelengthofthedatasetnamebeingsolongasitis
 

sretalla

Powered by Neutrality
Moderator
Joined
Jan 1, 2016
Messages
9,703
Since OpenZFS is now (under TrueNAS 12) the used implementation, you may find some of the test scripts in that project already cover the topic of path length:

I see that the tests for pool_name only check that it accepts valid UTF-8 characters, not the length... https://github.com/illumos/illumos-gate/tree/master/usr/src/test/zfs-tests/tests/functional


I did manage to get this to create, but I guess it's only 250 characters in total, so I'm not sure it's really a test of the CLI interpreter or the filesystem:
crazylongpoolnamethatwouldnotworkinfreenas11duetothemassivelengthofthepoolnamebeingsolongasitis/crazylongdatasetnamethatwouldnotworkinfreenas11duetothemassivelengthofthedatasetnamebeingsolongasitis/crazylongchilddatasetnamethatwouldnotworkinfreenas11
 
Last edited:

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
My new pool was quicker to buld than I thought, so I experimented. The limits have changed, although not all the way to 1024 bytes. But at least around 255 (which is a lot more than 63 or 88), and search and traversal automounting also does work for these new long names.

Here is some output to play with, after I created some datasets, some files and dirs in the (and nested files in the dirs) in them, and some snapshots of all these.

The outputs show dataset and snapshot names I was able to get to work. I'm assuming directory and file names are less of an issue, but I nested one or 2 "in case". Maybe this will help someone to figure the new limits?


# zfs list -r -o name,mountpoint
(Individual dataset names up to 126 bytes, total dataset name length tested to 243 bytes, mountpoint tested to 248 bytes)

Code:
 # zfs list -r -o name,mountpoint Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
NAME                                                                                                                                                                                                                                                 MOUNTPOINT
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890                                                                                                                                   /mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890                         /mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890         /mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw  /mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw


# zfs list -r -o name -t snap
(Snapshots hit a total length limit, just over 250 bytes)

Code:
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
NAME
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@test_snap_001
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@test_snap_002
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@test_snap_001
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890@test_snap_002
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890@test_snap_001
Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890@test_snap_002
 

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
# cd "/mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
# ls -1RF
(Automount/traversal works in "ls", including traversal of snapdirs if visible)

Code:
testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      .zfs/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      testY1234567890/
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      .zfs/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890:
      testZw/
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      .zfs/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw:
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      .zfs/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/.zfs:
      snapshot/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/.zfs/snapshot:

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs:
      snapshot/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot:
      test_snap_001/
      test_snap_002/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001:
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      testZw/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/testZw:

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002:
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      testZw/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/testZw:

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs:
      snapshot/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot:
      test_snap_002/
      test_snap_001/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002:
      testY1234567890/
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/testY1234567890:

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001:
      MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
      MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
      testY1234567890123456789012/

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
      MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi

./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/testY1234567890123456789012:

./.zfs:
      snapshot/

./.zfs/snapshot:
      test_snap_001/
      test_snap_002/

./.zfs/snapshot/test_snap_001:
      testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/

./.zfs/snapshot/test_snap_001/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:

./.zfs/snapshot/test_snap_002:
      testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/

./.zfs/snapshot/test_snap_002/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890:
 

Stilez

Guru
Joined
Apr 8, 2016
Messages
529
# cd "/mnt/Main_pool/test1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
# find -s .
(Automount/traversal works in "find", including traversal and finding copies within any snapshots, if snapshot dirs are visible)

Code:
.
./.zfs
./.zfs/snapshot
./.zfs/snapshot/test_snap_001
./.zfs/snapshot/test_snap_001/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./.zfs/snapshot/test_snap_002
./.zfs/snapshot/test_snap_002/testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_001/testY1234567890123456789012
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/.zfs/snapshot/test_snap_002/testY1234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_001/testZw
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/.zfs/snapshot/test_snap_002/testZw
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/.zfs
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/.zfs/snapshot
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/MY_LONG_DIR_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/MY_LONG_NESTED_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v99.avi
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890_v2.txt
./testX1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/testY1234567890/testZw/MY_LONG_FILE_1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.txt
 
Top