summaryrefslogtreecommitdiff
path: root/Assistant
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-04-06 16:01:39 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-04-06 16:07:25 -0400
commitf758f6d5cbef989bff75fcd140edb8e0b8899b84 (patch)
treec7832b9d65a1a0411662f4d3fb6a6f9f1868a065 /Assistant
parentd653a5842f8a070e7d53a6f8fcd7838106efeee7 (diff)
Bugfix: Direct mode no longer repeatedly checksums duplicated files.
Fixed by storing a list of cached inodes for a key, instead of just one. Backwards compatability note: An old git-annex version will fail to parse an inode cache file that has been written by a new version, and has multiple items. It will succees if just one. So old git-annexes will have even worse behavior when there are duplicated files, if that is possible. I don't think it will be a problem. (Famous last words.) Also, note that it doesn't expire old and unused inode caches for a key. It would be possible to add this if needed; just look through the associated files for a key and if there are more cached inodes, throw out any not corresponding to associated files. Unless a file is being copied repeatedly and the old copy deleted, this lack of expiry should not be a problem.
Diffstat (limited to 'Assistant')
-rw-r--r--Assistant/Threads/Committer.hs9
1 files changed, 3 insertions, 6 deletions
diff --git a/Assistant/Threads/Committer.hs b/Assistant/Threads/Committer.hs
index bee359d59..727b85840 100644
--- a/Assistant/Threads/Committer.hs
+++ b/Assistant/Threads/Committer.hs
@@ -297,13 +297,10 @@ handleAdds delayadd cs = returnWhen (null incomplete) $ do
removedKeysMap ct l = do
mks <- forM (filter isRmChange l) $ \c ->
catKeyFile $ changeFile c
- M.fromList . catMaybes <$> forM (catMaybes mks) mkpair
+ M.fromList . concat <$> mapM mkpairs (catMaybes mks)
where
- mkpair k = do
- mcache <- recordedInodeCache k
- case mcache of
- Just cache -> return $ Just (inodeCacheToKey ct cache, k)
- Nothing -> return Nothing
+ mkpairs k = map (\c -> (inodeCacheToKey ct c, k)) <$>
+ recordedInodeCache k
failedingest = do
liftAnnex showEndFail