directly lock content?

This commit is contained in:
Joey Hess 2011-11-09 14:32:31 -04:00
parent 393b6b1bde
commit a243d6e6e9

View file

@ -19,6 +19,23 @@ deadlock, this must be a nonblocking lock. If it fails, the status of
the content is unknown, so inannex should fail. Note that this needs to be the content is unknown, so inannex should fail. Note that this needs to be
distinguishable from "not in annex". distinguishable from "not in annex".
> Thinking about these lock files, this would be a lot more files,
> and would possibly break some assumptions that everything in
> `.git/annex/objects` is a key's content. (Or would need lots more
> directories to put the lock files elsewhere.) There would be more
> overhead to manage these and have them on disk.
>
> What if it just locked the actual content file? The obvious limitation
> is only content that was already inannex could be locked, but that
> happens to be exactly what's needed here; if content is not present,
> it's not going to get dropped or moved.
>
> Of course, if some consumer of a file locked it, then it could prevent it
> from being dropped or moved. This could be considered a bug, or a feature. :)
>
> However, this would mean that such a hypothetical consumer could also
> make inannex checks fail.
--- ---
move --to can also be included in the cycle, since it can drop data. move --to can also be included in the cycle, since it can drop data.
@ -39,7 +56,7 @@ via inannex checks. Then both run git-annex-shell dropkey, removing both
copies. copies.
So move --from needs to take the content lock on start, so the inannex will So move --from needs to take the content lock on start, so the inannex will
fail. fail. NB: If the content is not locally present, don't take the lock.
--- ---