On Thu, Aug 31, 2006 at 02:55:27PM +0100, Tim Foster wrote:
> On Thu, 2006-08-31 at 15:44 +0300, Niclas Sodergard wrote:
> > Is there an easy way to find out which files has changed between two
> > snapshots? Currently I'm  doing a
> 
> Nope, unfortunately not - you're interested in bug 
> http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6425091

See also:

6370738 zfs diffs filesystems

The idea is that SEEK_HOLE[*] could be used to find block-level diffs
for individual files that have changed.  [*] Or SEEK_DIFF, to avoid
aliasing holes and diffs.

Dealing with renames/links/unlinks is... harder.  The idea is that a
diffs filesystem would only show directories and files that have changed
or are part of a path where some directory/file has changed, and all
unchanged things would be hidden.  You'd still have to do a fair bit of
work at the app level to deal with renames/links/unlinks generally.

Partly what is difficult here is that ZFS tracks differences between
snapshots/filesystems at the block level, so you can find out that some
dnode changed, but mapping that dnode to its name(s) in the filesystem,
if it can have hardlinks (i.e., it's not a directory) is as hard as it's
ever been to map inode #s back to paths.

It'd be nice if there was a background dnode->paths indexer that could
asynchronously maintain such an index (synchronously at snapshot time,
so a snapshot could capture this index as it should be).  Asynchronous
so as not to slow down meta-data operations unnecessarily.  If that's
too hard, then make it synchronous but let running it be optional
per-filesystem.

Nico
-- 
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to