Please describe the problem.

After all the work I did here, I discvovered that I have a Git Annex-encrypted special remote that has some corrupted data on it. I can run git annex fsck --from=remotename and have Git Annex complain about all the files that have failed to fsck. But Git Annex is not updating the location log. It still thinks the data is in the special remote, after fscking it and not getting the right data out.

This makes sense if the failure was from a download corrupted in transit, but I think the files are actually corrupted in the remote. How do I make git annex fsck update the location log to say that files aren't there when they fail to fsck? Alternately, how do I get a nice list of all the filenames that failed to fsck, so I can have a script drop them from the offending remote?

What steps will reproduce the problem?

  1. Make a Git Annex encrypted special remote.

  2. Put some data in it.

  3. Modify the encrypted data, to corrupt it.

  4. Use git annex fsck on the file you broke.

  5. See that git annex whereis still thinks the file is in the special remote.

What version of git-annex are you using? On what operating system?

This is Git Annex 6.20170408+gitg804f06baa-1~ndall+1 on Ubuntu 14.04.

Please provide any additional information below.

# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log


$ git annex whereis info.txt
whereis info.txt (6 copies) 
    ...
        ...
    21a0c4ba-7255-4a9e-9baa-c638f7df68e5 -- gdrive [amazon]
    ...
    ...
    ...
ok
$ git annex fsck --from=amazon info.txt
...
gpg: decryption failed: bad key
2017/06/13 20:14:54 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for checks to finish
2017/06/13 20:14:54 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for transfers to finish
2017/06/13 20:14:54 Attempt 1/3 failed with 0 errors and: directory not found
2017/06/13 20:14:54 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for checks to finish
2017/06/13 20:14:54 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for transfers to finish
2017/06/13 20:14:54 Attempt 2/3 failed with 0 errors and: directory not found
2017/06/13 20:14:55 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for checks to finish
2017/06/13 20:14:55 Local file system at /tmp/tmp.Cu2Dsk0jY3: Waiting for transfers to finish
  failed to download file from remote
2017/06/13 20:14:55 Attempt 3/3 failed with 0 errors and: directory not found
2017/06/13 20:14:55 Failed to copy: directory not found
git-annex: fsck: 1 failed
$ git annex whereis info.txt
whereis info.txt (6 copies) 
    ...
    ...
    21a0c4ba-7255-4a9e-9baa-c638f7df68e5 -- gdrive [amazon]
    ...
    ...
    ...
ok


# End of transcript or log.

Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)

Yeah, it works great! If not for it I would not have noticed this data corruption until it was too late.