[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
- [bug-diffutils] bug#21715: bug#21715: feat req: an option to skip directory inode comparison,
Jim Meyering <=