This may be a simple question, or it may be hugely complex.  If it is hugely
complex, please don't hold back, shorten, or simplify your answer for my
benefit.  ;-)

I understand, when you right-click and go to "Previous Versions" it's
generating the list of previous versions based on snapshots.  What I am
wondering about is ... There are many different possible techniques to
translate from snapshots to previous versions.  I am wondering which
technique(s) is/are being used to generate that translation.

For example, one simple technique is to blindly assume the name and location
of an object has not changed.  If a user looks for previous versions of
"/tank/foo/bar.txt" then the system would identify
"/tank/.zfs/snapshot/snapname/foo/bar.txt" because it has precisely the same
name and path as the live filesystem.

There are some situations where that would be suboptimal.  If path names
have been renamed, or moved, then the system wouldn't be able to find
previous versions of that object.

Another technique would be to identify the inode in the present filesystem,
and then reverse-resolve that inode to pathname in all the snapshots, thus
locating all the previous versions of that object, even if it's been renamed
or relocated.  My understanding is that this reverse inode-to-pathname
technique is not currently possible for files, because files have no
reference to their parent directory(ies), but every directory has a '..'
entry which references its parent.  So this reverse-lookup from inode to
pathname is at least theoretically possible for directories in the present
version of ZFS.  Or nearly any filesystem, including non-ZFS systems.  

So, my question is, precisely how the "previous versions" list gets
generated from snapshots.

Thank you...

cifs-discuss mailing list

Reply via email to