migrate: Avoid re-checksumming when migrating from hashE to hash backend.
This commit is contained in:
parent
564de5e508
commit
9d71903c2f
7 changed files with 34 additions and 12 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue