[PATCH] fix bug in read-cache.c which loses files when merging a tree
authorJames Bottomley <James.Bottomley@SteelEye.com>
Mon, 18 Apr 2005 18:44:31 +0000 (11:44 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Mon, 18 Apr 2005 18:44:31 +0000 (11:44 -0700)
I noticed this when I tried a non-trivial scsi merge and checked the
results against BK.  The problem is that remove_entry_at() actually
decrements active_nr, so decrementing it in add_cache_entry() before
calling remove_entry_at() is a double decrement (hence we lose cache
entries at the end).

read-cache.c

index 042b0c2..8571ba2 100644 (file)
@@ -402,7 +402,6 @@ int add_cache_entry(struct cache_entry *ce, int ok_to_add)
        if (pos < active_nr && ce_stage(ce) == 0) {
                while (same_name(active_cache[pos], ce)) {
                        ok_to_add = 1;
-                       active_nr--;
                        if (!remove_entry_at(pos))
                                break;
                }