Message ID | 20231031135431.393137-1-f.ebner@proxmox.com (mailing list archive) |
---|---|
Headers | show |
Series | mirror: allow switching from background to active mode | expand |
Am 31.10.2023 um 14:54 hat Fiona Ebner geschrieben: > Changes in v4: > * add an iotest for the new functionality > * set actively_synced to false when setting dirty bitmap in > bdrv_mirror_top_do_write > * add comments describing requirements for accessing copy_mode and > actively_synced field > * add global state code annotation and comment about assumptions > in mirror_change method > * add comment that change callback can be called before the job > coroutine is running > * fix typo in QAPI description > > Changes in v3: > * unlock the job mutex when calling the new block job driver > 'query' handler > * squash patch adapting iotest output into patch that changes the > output > * turn accesses to copy_mode and actively_synced atomic > * slightly rework error handling in mirror_change > > Changes in v2: > * move bitmap to filter which allows to avoid draining when > changing the copy mode > * add patch to determine copy_to_target only once > * drop patches returning redundant information upon query > * update QEMU version in QAPI > * update indentation in QAPI > * update indentation in QAPI (like in a937b6aa73 ("qapi: Reformat > doc comments to conform to current conventions")) > * add patch to adapt iotest output > > Discussion of v3: > https://lists.nongnu.org/archive/html/qemu-devel/2023-10/msg04026.html > > Discussion of v2: > https://lists.nongnu.org/archive/html/qemu-devel/2023-10/msg02290.html > > Discussion of v1: > https://lists.nongnu.org/archive/html/qemu-devel/2023-02/msg07216.html > > With active mode, the guest write speed is limited by the synchronous > writes to the mirror target. For this reason, management applications > might want to start out in background mode and only switch to active > mode later, when certain conditions are met. This series adds a > block-job-change QMP command to achieve that, as well as > job-type-specific information when querying block jobs, which > can be used to decide when the switch should happen. > > For now, only the direction background -> active is supported. > > The information added upon querying is whether the target is actively > synced, the total data sent, and the remaining dirty bytes. > > Initially, I tried to go for a more general 'job-change' command, but > to avoid mutual inclusion of block-core.json and job.json, more > preparation would be required. More details described here: > https://lists.nongnu.org/archive/html/qemu-devel/2023-10/msg02993.html > > Fiona Ebner (10): > blockjob: introduce block-job-change QMP command > block/mirror: set actively_synced even after the job is ready > block/mirror: move dirty bitmap to filter > block/mirror: determine copy_to_target only once > mirror: implement mirror_change method > qapi/block-core: use JobType for BlockJobInfo's type > qapi/block-core: turn BlockJobInfo into a union > blockjob: query driver-specific info via a new 'query' driver method > mirror: return mirror-specific information upon query > iotests: add test for changing mirror's copy_mode Thanks, applied to the block branch. Kevin