summaryrefslogtreecommitdiff
path: root/Backend
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2011-03-23 17:57:10 -0400
committerGravatar Joey Hess <joey@kitenet.net>2011-03-23 17:57:10 -0400
commit6246b807f7df32877a87d906cfbe1ae26c51dd8e (patch)
tree00c38d74c2b4591ab0a68a807bb70c6044cde3f4 /Backend
parentad08273ac5118f1faac539b53f1fa63908dc5656 (diff)
migrate: Support migrating v1 SHA keys to v2 SHA keys with size information that can be used for free space checking.
Diffstat (limited to 'Backend')
-rw-r--r--Backend/File.hs10
-rw-r--r--Backend/URL.hs4
2 files changed, 12 insertions, 2 deletions
diff --git a/Backend/File.hs b/Backend/File.hs
index a6d42eabd..fb8a05255 100644
--- a/Backend/File.hs
+++ b/Backend/File.hs
@@ -29,6 +29,7 @@ import Types
import UUID
import Messages
import Trust
+import Key
backend :: Backend Annex
backend = Backend {
@@ -38,7 +39,8 @@ backend = Backend {
retrieveKeyFile = copyKeyFile,
removeKey = checkRemoveKey,
hasKey = inAnnex,
- fsckKey = checkKeyOnly
+ fsckKey = checkKeyOnly,
+ upgradableKey = checkUpgradableKey
}
mustProvide :: a
@@ -159,6 +161,12 @@ getNumCopies Nothing = do
where
config = "annex.numcopies"
+{- Ideally, all keys have file size metadata. Old keys may not. -}
+checkUpgradableKey :: Key -> Annex Bool
+checkUpgradableKey key
+ | keySize key == Nothing = return True
+ | otherwise = return False
+
{- This is used to check that numcopies is satisfied for the key on fsck.
- This trusts data in the the location log, and so can check all keys, even
- those with data not present in the current annex.
diff --git a/Backend/URL.hs b/Backend/URL.hs
index 210c7c5b4..3068c3027 100644
--- a/Backend/URL.hs
+++ b/Backend/URL.hs
@@ -30,7 +30,9 @@ backend = Backend {
-- similarly, keys are always assumed to be out there on the web
hasKey = dummyOk,
-- and nothing needed to fsck
- fsckKey = dummyFsck
+ fsckKey = dummyFsck,
+ -- and key upgrade not needed
+ upgradableKey = \_ -> return False
}
-- cannot generate url from filename