fsck: Detect and fix consistency errors in direct mode mapping files.

This commit is contained in:
Joey Hess 2013-01-19 14:11:23 -04:00
parent 4ca9b6bdcf
commit 672f8b5b83
2 changed files with 15 additions and 0 deletions

View file

@ -110,6 +110,7 @@ perform key file backend numcopies = check
-- order matters
[ fixLink key file
, verifyLocationLog key file
, verifyDirectMapping key file
, checkKeySize key
, checkBackend backend key
, checkKeyNumCopies key file numcopies
@ -258,6 +259,19 @@ verifyLocationLog' key desc present u bad = do
showNote "fixing location log"
bad s
{- Ensures the direct mode mapping file is consistent. Each file
- it lists for the key should exist, and the specified file should be
- included in it.
-}
verifyDirectMapping :: Key -> FilePath -> Annex Bool
verifyDirectMapping key file = do
whenM isDirect $ do
fs <- addAssociatedFile key file
forM_ fs $ \f ->
unlessM (liftIO $ doesFileExist f) $
void $ removeAssociatedFile key f
return True
{- The size of the data for a key is checked against the size encoded in
- the key's metadata, if available.
-

1
debian/changelog vendored
View file

@ -18,6 +18,7 @@ git-annex (3.20130115) UNRELEASED; urgency=low
* Fix direct mode mapping code to always store direct mode filenames
relative to the top of the repository, even when operating inside a
subdirectory.
* fsck: Detect and fix consistency errors in direct mode mapping files.
* Avoid filename encoding errors when writing direct mode mappings.
-- Joey Hess <joeyh@debian.org> Mon, 14 Jan 2013 18:35:01 -0400