bug-diffutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug-diffutils] bug#21715: bug#21715: feat req: an option to skip direct


From: Jim Meyering
Subject: [bug-diffutils] bug#21715: bug#21715: feat req: an option to skip directory inode comparison
Date: Sun, 15 May 2016 21:22:42 -0700

On Mon, Oct 19, 2015 at 7:27 PM, Aaron Davies <address@hidden> wrote:
> i have a situation where diff -r of two directories fails to report 
> differences that diff of two files in those directories shows
>
> i haven't dug into the code yet, but the directories involved are on an NFS 
> mount of a netapp filer, one is the copy-on-write snapshot counterpart of the 
> other, they show up as the same filesystem, and are the same inode
>
> so my guess is that there's something in the recursive traversal that says 
> that any two directories that are on the same fs and are the same inode must 
> have identical descendent contents and can be skipped completely
>
> this fs probably violates POSIX by doing this, but there's no easy way around 
> it[1], so it would be very useful if diff had a command-line option to turn 
> that optimization off
>
> i've heard anecdotal reports of other filesystems that cause the same problem
>
> here's a sample session:
>
> $ mkdir foo
> $ echo baz >foo/bar
> $ # wait until the next snapshot is created
> $ echo quux >foo/bar
> $ diff -r .snapshot/nightly.0/foo foo
> $ diff .snapshot/nightly.0/foo/bar foo/bar
> 1c1
> < baz
> ---
>> quux
> $ stat -c %i .snapshot/nightly.0/foo foo
> 69403847
> 69403847
> $
> --
> Aaron Davies
> address@hidden
>
> [1] when i ran into this, i ended up using something like diff <(find 
> .snapshot/nightly.0/foo -type f|sort|xargs cat) <(find foo -type f|sort|xargs 
> cat) to do the comparison -- sufficient for my needs at the time, but 
> cleaning it up for general purpose use would essentially be rewriting the -r 
> part of diff from scratch

Hi Aaron,
Thanks for the suggestion, but what NetApp software are you using?
I've just tried to reproduce that on a NetApp-backed nfs-mounted directory,
and see different inode numbers for the directories:

  $ stat --format %i foo .snapshot/hourly.2016-05-15_*/foo
  97582543
  97557711





reply via email to

[Prev in Thread] Current Thread [Next in Thread]