-
-
Notifications
You must be signed in to change notification settings - Fork 747
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sparse map / file map support for fixed size chunker #5561
sparse map / file map support for fixed size chunker #5561
Conversation
Codecov Report
@@ Coverage Diff @@
## master #5561 +/- ##
==========================================
- Coverage 83.23% 82.98% -0.25%
==========================================
Files 38 38
Lines 10069 10070 +1
Branches 1671 1671
==========================================
- Hits 8381 8357 -24
- Misses 1191 1214 +23
- Partials 497 499 +2
Continue to review full report at Codecov.
|
69f5a1e
to
a21ea5d
Compare
39f30d2
to
af8dcb9
Compare
@enkore @infectormp @milkey-mouse would you like to review this? |
d271f08
to
c48d680
Compare
going to merge this soon, so if somebody wants to review, do it soon, please. |
The macOS ci is failing, looks like the filesystem used for tests there does not support sparse files. |
openindiana64 tmpfs has no sparse support. freebsd64 tmpfs has 32kiB blocksize(?) with sparse support. Also does not like to end a file with a sparse section, but inserts a data range at the end. darwin64 tmpfs and also /Users (on hfs) give errno 25 for seek hole/data. python 3.6.6 on openbsd:
seems like openbsd does not support this api? |
7c28c29
to
be27b06
Compare
…ckup#14 a file map can be: - created internally inside chunkify by calling sparsemap, which uses SEEK_DATA / SEEK_HOLE to determine data and hole ranges inside a seekable sparse file. Usage: borg create --sparse --chunker-params=fixed,BLOCKSIZE ... BLOCKSIZE is the chunker blocksize here, not the filesystem blocksize! - made by some other means and given to the chunkify function. this is not used yet, but in future this could be used to only read the changed parts and seek over the (known) unchanged parts of a file. sparsemap: the generate range sizes are multiples of the fs block size. the tests assume 4kiB fs block size.
also: do the os.SEEK_(HOLE|DATA) check only once
be27b06
to
cef7ac3
Compare
cef7ac3
to
37a7436
Compare
Fixes #5565.
chunkify
or give a ready-made map to chunkifyIDEAS: