On Wed, Apr 10, 2013 at 04:11:47PM +0800, Dong Xu Wang wrote: > It will introduce a new file format: add-cow. > > The add-cow file format makes it possible to perform copy-on-write on top of > a raw disk image. When we know that no backing file clusters remain visible > (e.g. we have streamed the entire image and copied all data from the backing > file), then it is possible to discard the add-cow file and use the raw image > file directly. > > This feature adds the copy-on-write feature to raw files (which cannot support > it natively) while allowing us to get full performance again later when we no > longer need copy-on-write. > > add-cow can benefit from other available functions, such as path_has_protocol > and qed_read_string, so we will make them public. > > snapshot_blkdev are not supported now for add-cow. Will add it in futher > patches. > > These patches are using QemuOpts parser, former patches could be found here: > http://patchwork.ozlabs.org/patch/235300/ > > > v17 -> v18: > 1) remove version field. > 2) header size is maximum value and cluster size value. > 3) fix type. > 4) move struct to source file. > 5) cluster_size->table_size. > 6) use error_report, not fprintf. > 7) remove version field from header. > 8) header_size is MAX(cluster_size, 4096). > 9) introduce s->cluster_sectors. > 10) use BLKDBG_L2_LOAD/UPDATE. > 11) add 037 and 038 tests.
Left a few comments but the series is close. The biggest practical issue is serialized allocating writes. Installation or multi-threaded write workloads may be quite slow since only one read request is processed at a time. This can be solved later. Stefan