add: Fix rollback when disk is completely full.

Noticed that it was possible for add to move a file to .git/annex/objects
and not make the link if the disk was full. This happened because the
location log update failed, and so addLink never got a chance to run.
Running addLink first fixes it; on error it will unwind by moving the file
back to where it was originally.
This commit is contained in:
Joey Hess 2014-01-05 14:09:57 -04:00
parent 964f5d080e
commit 0cc1bd7e53
2 changed files with 3 additions and 2 deletions

View file

@ -250,12 +250,12 @@ addLink file key mcache = ifM (coreSymlinks <$> Annex.getGitConfig)
cleanup :: FilePath -> Key -> Maybe InodeCache -> Bool -> CommandCleanup
cleanup file key mcache hascontent = do
when hascontent $
logStatus key InfoPresent
ifM (isDirect <&&> pure hascontent)
( do
l <- inRepo $ gitAnnexLink file key
stageSymlink file =<< hashSymlink l
, addLink file key mcache
)
when hascontent $
logStatus key InfoPresent
return True

1
debian/changelog vendored
View file

@ -17,6 +17,7 @@ git-annex (5.20131231) UNRELEASED; urgency=medium
ssh refuse to use them, if it allows another user to write to them.
* addurl, importfeed: Honor annex.diskreserve as long as the size of the
url can be checked.
* add: Fix rollback when disk is completely full.
-- Joey Hess <joeyh@debian.org> Tue, 31 Dec 2013 13:41:18 -0400