package qcow-types
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- 0.12.0 (2025-05-29)
- 0.11.0 (2020-06-05)
- 0.10.5 (2017-12-14):
- 0.10.4 (2017-12-07):
- 0.10.3 (2017-08-02):
- 0.10.2 (2017-06-18):
- 0.10.1 (2017-06-17):
- 0.10.0 (2017-05-13)
- 0.9.5 (2017-03-12)
- 0.9.4 (2017-03-07)
- 0.9.3 (2017-03-02)
- 0.9.2 (2017-02-26)
- 0.9.1 (2017-02-25)
- 0.9.0 (2017-02-21)
- 0.8.1 (2017-02-13)
- 0.8.0 (2017-02-13)
- 0.7.2 (2016-12-21)
- 0.7.1 (2016-12-15)
- 0.7.0 (2016-12-10)
- 0.6.0 (2016-12-04)
- 0.5.0 (2016-11-26)
- 0.4.2 (2016-09-21)
- 0.4.1 (2016-08-17)
- 0.4 (2016-08-03)
- 0.3 (2016-05-12)
- 0.2 (2016-01-15)
- 0.1 (2015-11-09)
Minimal set of dependencies for qcow-stream, shared with qcow
Install
dune-project
Dependency
Authors
Maintainers
Sources
qcow-0.12.1.tbz
sha256=c799f3c2eda00b345d37ccd759bcd7b8be8744216b77a38883ff4cd99727ae37
sha512=2160598f460240f9580991e7f7d69e3ef83a2e6ec62268b711840d359cd303d4e14a5d65d89ceb82a6f77b434d06a01af9daa7780808a885f3307909c11dcfd8
doc/CHANGES.html
0.12.1 (2025-06-02)
- Fix dune and opam metadata issues (@psafont #129)
0.12.0 (2025-05-29)
- Build fixes (@last-genius, #123)
- Further fixes: parsing, CLI, overallocation (@last-genius, #124)
- remove mirage-types, add mirage-sleep dependency (@hannesm, #125)
- Add x-maintenance-intent to opam files (@hannesm, #126)
- Add a Qcow_stream module (@last-genius, #127)
0.11.0 (2020-06-05)
- Update the build to use
dune(@emillon, #112) - Update to Mirage 4.0 interfaces (@djs55, #112)
- LICENSE.md: add title and copyright year range (@waldyrious, #109)
0.10.5 (2017-12-14):
- CLI: use the disk locking feature in mirage-block-unix >= 0.9.0
0.10.4 (2017-12-07):
- fix build on OCaml 4.06 (and -safe-string)
- update to new sha.1.10 signature
- document the prometheus support
0.10.3 (2017-08-02):
- avoid linking ppx tools into the library
0.10.2 (2017-06-18):
- remove false dependency on cmdliner
0.10.1 (2017-06-17):
- update to new io-page/ io-page-unix
- fix prometheus accounting error
0.10.0 (2017-05-13)
- fix a major performance problem with
compact - split into 2 packages: qcow and qcow-tool
- add
qcow-tool dehydrateandqcow-tool rehydratefor extracting metadata for debug/support - add prometheus metrics for I/O and GC operations
- restore the
qcow-tool compact --progressprogress bar - add
qcow-tool compact --progress-fdfor json-formatted progress - build via jbuilder
0.9.5 (2017-03-12)
- CLI:
checkandshawill nolonger resize the file as a side-effect (#84) - Allow the number of
cluster_bitsto be set increate
0.9.4 (2017-03-07)
- Strictly enforce the cluster move state machine
- Don't start moving new blocks while existing moves are in progress (fix bug where the same destination block could be reused)
- Hold a lock to exclude
flushwhile updating references to ensure reference updates hit the disk before the move is considered complete - Simplify allocator by always adding blocks to the Roots set before returning. The caller must transfer them somewhere else.
- Simplify the cluster moving API by combining
get_moveswithstart_moves, so it's not possible to block and affect the moves which can legally be started - When detecting a duplicate reference or hitting an I/O error, log analysis of the internal state
- Check for move cancellation before copying a block to avoid accidentally copying a block which is now outside the file
- Avoid adding a cluster to the Junk set twice during a reference update
- Add lots of assertions
0.9.3 (2017-03-02)
- Hold a read lock on the L1 during read/write
- Minimise locking while updating references
- When moving an L2 cluster, update the cluster map
0.9.2 (2017-02-26)
- Don't hold the global lock while updating references
- Log an error if a client I/O takes more than 30s
- Improve the performance of discard by writing each L2 cluster to disk only once
- Track clusters which are being erased and copied into, to prevent the file being shrunk, orphaning them (which typically manifests as a later double-allocation)
0.9.1 (2017-02-25)
- Add configuration
runtime_assertto check GC invariants at runtime - Use tail-recursive calls in the block recycler (which deals with large block lists)
- Wait for the compaction work list to stabilise before processing it (otherwise we move blocks which are then immediately discarded)
- Track the difference between blocks on the end of the file being full of zeroes due to ftruncate versus being full of junk due to discard
- On open, truncate the file to erase trailing junk
- Don't try to use free space between header structures for user data since we assume all blocks after the start of free space are movable and header blocks aren't (in this implementation)
- Make cluster locks recursive, hold relevant metadata read locks while reading or writing data clusters to ensure they aren't moved while we're using them.
- Add a debug testing mode and use it in a test case to verify that compact mid-write works as expected.
0.9.0 (2017-02-21)
- Add online coalescing mode and background cluster recycling thread
- Rename internal modules and types
- Ensure the interval tree remains balanced to improve performance
0.8.1 (2017-02-13)
- fix error in META file
0.8.0 (2017-02-13)
- update to Mirage 3 APIs
- now requires OCaml 4.03+
- ensure the interval tree is kept balanced
0.7.2 (2016-12-21)
- if
discardis not enabled, faildiscardcalls - if
discardis enabled, enable lazy-refcounts and zero refcount clusters to avoid breaking refcounts overdiscard,compact
0.7.1 (2016-12-15)
- speed up
checkandcompactup to 50x qcow-tool compactwork around files which aren't a whole number of sectors
0.7.0 (2016-12-10)
- now functorised over
TIME - allow background compact to be cancelled
- cancel background compact to allow regular I/O to go through
- don't trigger the background compact until 1s after the last
discard - on
connect, sanity-check the image
0.6.0 (2016-12-04)
- rename ocamlfind package from
qcow-formattoqcowfor uniformity - add support for runtime configuration arguments to
connectandcreate - add support for
discard(aka TRIM or UNMAP) and online compaction (through a stop-the-world GC) - switch the build from
oasistotopkg(thanks to @jgimenez)
0.5.0 (2016-11-26)
resizenow takes a new size in bytes (rather than sectors) and uses a labelled argumentqcow-tool infonow takes a--filter <expression>for exampleqcow-tool info ... --filter .sizeto view the virtual size
0.4.2 (2016-09-21)
- Don't break the build if
Block.connecthas optional arguments
0.4.1 (2016-08-17)
- Remove one necessary source of
flushcalls - CLI: add
mappedcommand to list the mapped regions of a file
0.4 (2016-08-03)
- For buffered block devices, call
flushto guarantee metadata correctness - In lazy_refcounts mode (the default), do not compute any refcounts
- CLI: the
repaircommand should recompute refcounts
0.3 (2016-05-12)
- Depend on ppx, require OCaml 4.02+
0.2 (2016-01-15)
- Use qcow version 3 by default, setting
lazy_refcount=on - Unit tests now verify that
qemu-img checkis happy and thatqemu-nbdsees the same data we wrote
0.1 (2015-11-09)
- initial
V1_LWT.BLOCKsupport - caches metadata for performance
- CLI tool for manipulating images
- supports the
seek_mappedseek_unmappedinterface for iterating over sparse regions
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
- 0.12.0 (2025-05-29)
- 0.11.0 (2020-06-05)
- 0.10.5 (2017-12-14):
- 0.10.4 (2017-12-07):
- 0.10.3 (2017-08-02):
- 0.10.2 (2017-06-18):
- 0.10.1 (2017-06-17):
- 0.10.0 (2017-05-13)
- 0.9.5 (2017-03-12)
- 0.9.4 (2017-03-07)
- 0.9.3 (2017-03-02)
- 0.9.2 (2017-02-26)
- 0.9.1 (2017-02-25)
- 0.9.0 (2017-02-21)
- 0.8.1 (2017-02-13)
- 0.8.0 (2017-02-13)
- 0.7.2 (2016-12-21)
- 0.7.1 (2016-12-15)
- 0.7.0 (2016-12-10)
- 0.6.0 (2016-12-04)
- 0.5.0 (2016-11-26)
- 0.4.2 (2016-09-21)
- 0.4.1 (2016-08-17)
- 0.4 (2016-08-03)
- 0.3 (2016-05-12)
- 0.2 (2016-01-15)
- 0.1 (2015-11-09)