diff options
author | 2014-07-10 17:06:04 -0400 | |
---|---|---|
committer | 2014-07-10 17:06:04 -0400 | |
commit | b873f05ca7e86344a28d269d682b7ffd8a88baca (patch) | |
tree | 2e1191a0e0ded12d30d913937e7335230e5fde9d /Backend/Hash.hs | |
parent | 490f52bbab0d6757dbe4b41bab2e39508899efea (diff) |
migrate: Avoid re-checksumming when migrating from hashE to hash backend.
Diffstat (limited to 'Backend/Hash.hs')
-rw-r--r-- | Backend/Hash.hs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Backend/Hash.hs b/Backend/Hash.hs index 41368a5bb..3ff496271 100644 --- a/Backend/Hash.hs +++ b/Backend/Hash.hs @@ -44,6 +44,7 @@ genBackend hash = Just Backend , getKey = keyValue hash , fsckKey = Just $ checkKeyChecksum hash , canUpgradeKey = Just needsUpgrade + , fastMigrate = Just trivialMigrate } genBackendE :: Hash -> Maybe Backend @@ -129,6 +130,15 @@ needsUpgrade :: Key -> Bool needsUpgrade key = "\\" `isPrefixOf` keyHash key || any (not . validExtension) (takeExtensions $ keyName key) +{- Fast migration from hashE to hash backend. (Optimisation) -} +trivialMigrate :: Key -> Backend -> Maybe Key +trivialMigrate oldkey newbackend + | keyBackendName oldkey == name newbackend ++ "E" = Just $ oldkey + { keyName = keyHash oldkey + , keyBackendName = name newbackend + } + | otherwise = Nothing + hashFile :: Hash -> FilePath -> Integer -> Annex String hashFile hash file filesize = liftIO $ go hash where |