Commit graph

40621 commits

Author SHA1 Message Date
Joey Hess
824b147286
followup 2021-09-28 14:00:10 -04:00
Joey Hess
b9aa2ce8d1
resume properly when copying a file to/from a local git remote is interrupted (take 2)
This method avoids breaking test_readonly. Just check if the dest file
exists, and avoid CoW probing when it does, so when CoW probing fails,
it can resume where the previous non-CoW copy left off.

If CoW has been probed already to work, delete the dest file
since a CoW copy will presumably work. It seems like it would be almost
as good to just skip CoW copying in this case too, but consider that the
dest file might have started to be copied from some other remote, not
using CoW, but CoW has been probed to work to copy from the current
place.

Sponsored-by: Dartmouth College's Datalad project
2021-09-27 16:03:01 -04:00
Joey Hess
7ccf642863
revert change that broke test_readonly
commit 63d508e885 broke test_readonly.
When a local git remote is readonly, tryCopyCoW run to copy a file
from it failed at withOtherTmp.

Sponsored-by: Dartmouth College's Datalad project
2021-09-27 16:02:41 -04:00
Joey Hess
a92427c0d3
comment 2021-09-27 14:14:52 -04:00
Joey Hess
69c1c02339
comment 2021-09-27 13:59:54 -04:00
Joey Hess
9566b4800a
comment 2021-09-27 12:54:43 -04:00
Joey Hess
0a951ac758
improve function name
onAddUnlocked suggested that it had to add the file locked, but it
doesn't, it only queues the add of the file, and it's up to the
committer what to do -- which is currently indeed to always add the file
locked.
2021-09-27 12:52:30 -04:00
Joey Hess
5bc83b52d8
comment 2021-09-27 12:35:15 -04:00
Joey Hess
0e2e7b143f
comment 2021-09-27 12:18:30 -04:00
Joey Hess
03963f8099
response 2021-09-27 12:14:25 -04:00
Joey Hess
a2222b5259
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-25 11:17:45 -04:00
jkniiv
d4627d91a1 Added a comment 2021-09-25 06:05:40 +00:00
jkniiv
c688d549d7 Added a comment 2021-09-25 05:47:16 +00:00
Joey Hess
91eb8a5df5
comment 2021-09-24 18:33:34 -04:00
bmx007@171b90624bc8f788a2a925a00b98aef5942e4787
177de6f8e5 Added a comment: comment 2 2021-09-24 20:08:22 +00:00
Joey Hess
c65a87c7d5
formatting 2021-09-24 14:21:55 -04:00
Joey Hess
ee16a8ea11
respond and close as not a bug 2021-09-24 14:20:40 -04:00
Joey Hess
a4a6fa1641
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-24 14:15:46 -04:00
Joey Hess
9ea8106bb0
sped up git-annex smudge --clean by 25%
Disabling git-annex branch update for this command is
ok, because it does not use any information from the branch,
but only logs the location when it adds a key.

Sponsored-by: Dartmouth College's Datalad project
2021-09-24 14:15:20 -04:00
Joey Hess
e47b4badb3
separate handles for cat-file and cat-file --batch-check
This avoids starting one process when only the other one is needed.
Eg in git-annex smudge --clean, this reduces the total number of
cat-file processes that are started from 4 to 2.

The only performance penalty is that when both are needed, it has to do
twice as much work to maintain the two Maps. But both are very small,
consisting of 1 or 2 items, so that work is negligible.

Sponsored-by: Dartmouth College's Datalad project
2021-09-24 13:16:13 -04:00
weinzwang
d712ed516a Added a comment 2021-09-23 21:40:51 +00:00
Joey Hess
e6c0bbd645
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-23 17:23:24 -04:00
Joey Hess
9c8f43ab69
comment 2021-09-23 17:23:06 -04:00
bmx007
6c3baa55ca 2021-09-23 19:18:49 +00:00
mih
300d7db57a Added a comment: v7 v v8 comparison 2021-09-23 06:29:30 +00:00
Joey Hess
6ac2642a24
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-22 19:29:47 -04:00
Joey Hess
64cac1a721
avoid potentially very long bwlimit delay at start
I first saw this getting with -J2 over ssh, but later saw it also
without the -J2. It was resuming, and the calulated unboundDelay was
many minutes. The first update of the meter jumped to some large value,
because of the resuming, and so it thought the BW was super fast.

Avoid by waiting until the second meter update.

Might be a good idea to also guard for the delay being many seconds
and avoid waiting. But how many? If BW is legitimately super fast, and a
remote happens to read more than a 32kb or so chunk at a time, it could
in theory download megabytes or gigabytes of data before the first meter
update. It would actually be appropriate then to delay for a long time,
if the desired BW was low. Could make up some numbers that are sane now,
but tech may improve.

(BTW, pleased to see bwlimit does work with -J. I had worried that
it might not, if the meter update happened in a different thread than
the downloading, but it's done in the same thread.)

Sponsored-by: Brett Eisenberg on Patreon
2021-09-22 19:23:30 -04:00
mike@2d6d71f56ce2a992244350475251df87c26fe351
3751fc0af4 Added a comment 2021-09-22 21:18:10 +00:00
Joey Hess
94a9116175
comment 2021-09-22 16:28:06 -04:00
Joey Hess
db2f364359
followup 2021-09-22 15:31:04 -04:00
Joey Hess
e35a94687f
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-22 15:29:52 -04:00
Joey Hess
1033a81d63
mention tiny wart 2021-09-22 15:29:07 -04:00
Joey Hess
fc9abca231
Merge branch 'bwlimit' 2021-09-22 15:27:28 -04:00
Joey Hess
e8496d62e4
improved bwrate limiting implementation
New method is much better. Avoids unrestrained transfer at the beginning
(except for the first block. Keeps right at or a few kb/s below the
configured limit, with very little varation in the actual reported bandwidth.

Removed the /s part of the config as it's not needed.

Ready to merge.

Sponsored-by: Luke Shumaker on Patreon
2021-09-22 15:27:16 -04:00
mih
0f38387d60 Added a comment: Performance stats on crippled Debian NTFS-mount 2021-09-22 18:37:10 +00:00
Joey Hess
00c452f0db
Merge branch 'master' of ssh://git-annex.branchable.com 2021-09-22 11:15:51 -04:00
Joey Hess
44d3d50785
note 2021-09-22 11:10:55 -04:00
Joey Hess
798b33ba3d
simplify annex.bwlimit handling
RemoteGitConfig parsing looks for annex.bwlimit when a remote
does not have a per-remote config for it, so no need for a separate
gobal config.

Sponsored-by: Svenne Krap on Patreon
2021-09-22 10:52:01 -04:00
Joey Hess
05a097cde8
Merge branch 'master' into bwlimit 2021-09-22 10:48:27 -04:00
Joey Hess
4fef94d764
simplify annex.stalldetection handling
RemoteGitConfig parsing looks for annex.stalldetection when a remote
does not have a per-remote config for it, so no need for a separate
gobal config.

Sponsored-by: Noam Kremen on Patreon
2021-09-22 10:46:10 -04:00
Joey Hess
55b405a965
fix remote git config vs global git config order
Bug fix: Git configs such as annex.verify were incorrectly overriding
per-remote git configs such as remote.name.annex-verify.

This dates all the way back to 2013,
commit 8a5b397ac4,
where hlint apparently somehow confused me into parsing in the wrong
order. Before that it was correct.

Amazing noone has noticed until now.

Sponsored-by: Kevin Mueller on Patreon
2021-09-22 10:41:56 -04:00
Atemu
f71cffa401 Added a comment 2021-09-22 14:17:59 +00:00
Joey Hess
b76a4453cb
bwlimit branch 2021-09-22 09:54:14 -04:00
Joey Hess
63d508e885
resume properly when copying a file to/from a local git remote is interrupted
Probably this fixes a reversion, but I don't know what version broke it.

This does use withOtherTmp for a temp file that could be quite large.
Though albeit a reflink copy that will not actually take up any space
as long as the file it was copied from still exists. So if the copy cow
succeeds but git-annex is interrupted just before that temp file gets
renamed into the usual .git/annex/tmp/ location, there is a risk that
the other temp directory ends up cluttered with a larger temp file than
later. It will eventually be cleaned up, and the changes of this being
a problem are small, so this seems like an acceptable thing to do.

Sponsored-by: Shae Erisson on Patreon
2021-09-21 17:43:35 -04:00
Joey Hess
18e00500ce
bwlimit
Added annex.bwlimit and remote.name.annex-bwlimit config that works for git
remotes and many but not all special remotes.

This nearly works, at least for a git remote on the same disk. With it set
to 100kb/1s, the meter displays an actual bandwidth of 128 kb/s, with
occasional spikes to 160 kb/s. So it needs to delay just a bit longer...
I'm unsure why.

However, at the beginning a lot of data flows before it determines the
right bandwidth limit. A granularity of less than 1s would probably improve
that.

And, I don't know yet if it makes sense to have it be 100ks/1s rather than
100kb/s. Is there a situation where the user would want a larger
granularity? Does granulatity need to be configurable at all? I only used that
format for the config really in order to reuse an existing parser.

This can't support for external special remotes, or for ones that
themselves shell out to an external command. (Well, it could, but it
would involve pausing and resuming the child process tree, which seems
very hard to implement and very strange besides.) There could also be some
built-in special remotes that it still doesn't work for, due to them not
having a progress meter whose displays blocks the bandwidth using thread.
But I don't think there are actually any that run a separate thread for
downloads than the thread that displays the progress meter.

Sponsored-by: Graham Spencer on Patreon
2021-09-21 16:58:10 -04:00
Joey Hess
c9dd63d67d
comment 2021-09-21 13:45:16 -04:00
Joey Hess
d7374f0629
close as dup 2021-09-21 13:31:42 -04:00
Joey Hess
97439f4233
comment
and reword possibly slightly confusing part of walkthrough
2021-09-21 13:23:57 -04:00
Joey Hess
ffb8af132e
improve docs for refspec format
It was especially unclear that "reflog" did not need a leading "+".
2021-09-21 13:19:57 -04:00
Joey Hess
e17c7bf0cc
response 2021-09-21 11:51:47 -04:00