-
-
Notifications
You must be signed in to change notification settings - Fork 819
sparse map / file map support for fixed size chunker #5561
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
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.
chunkifyor give a ready-made map to chunkifyIDEAS: