Message ID | 20220407132726.85114-1-vsementsov@openvz.org |
---|---|
Headers | show |
Series | copy-before-write: on-cbw-error and cbw-timeout | expand |
On 4/7/22 16:27, Vladimir Sementsov-Ogievskiy wrote: > Hi all! > > v4: Now based on master > 01: add assertion and r-b > 02: s/7.0/7.1/ and r-b > 03: switch to QEMUMachine, touch-up pylintrc, drop r-b > 04,05,06: add r-b > 07: switch to QEMUMachine > > > Here are two new options for copy-before-write filter: > > on-cbw-error allows to alter the behavior on copy-before-write operation > failure: not break guest write but break the snapshot (and therefore > backup process) > > cbw-timeout allows to limit cbw operation by some timeout. > > So, for example, using cbw-timeout=60 and on-cbw-error=break-snapshot > you can be sure that guest write will not stuck for more than 60 > seconds and will never fail due to backup problems. > > Vladimir Sementsov-Ogievskiy (7): > block/copy-before-write: refactor option parsing > block/copy-before-write: add on-cbw-error open parameter > iotests: add copy-before-write: on-cbw-error tests > util: add qemu-co-timeout > block/block-copy: block_copy(): add timeout_ns parameter > block/copy-before-write: implement cbw-timeout option > iotests: copy-before-write: add cases for cbw-timeout option > > qapi/block-core.json | 31 ++- > include/block/block-copy.h | 4 +- > include/qemu/coroutine.h | 13 ++ > block/block-copy.c | 33 ++- > block/copy-before-write.c | 111 ++++++--- > util/qemu-co-timeout.c | 89 ++++++++ > tests/qemu-iotests/pylintrc | 5 + > tests/qemu-iotests/tests/copy-before-write | 213 ++++++++++++++++++ > .../qemu-iotests/tests/copy-before-write.out | 5 + > util/meson.build | 1 + > 10 files changed, 466 insertions(+), 39 deletions(-) > create mode 100644 util/qemu-co-timeout.c > create mode 100755 tests/qemu-iotests/tests/copy-before-write > create mode 100644 tests/qemu-iotests/tests/copy-before-write.out > Thanks for review, applied to my new block branch at https://gitlab.com/vsementsov/qemu.git
On 5/26/22 19:46, Vladimir Sementsov-Ogievskiy wrote: > On 4/7/22 16:27, Vladimir Sementsov-Ogievskiy wrote: >> Hi all! >> >> v4: Now based on master >> 01: add assertion and r-b >> 02: s/7.0/7.1/ and r-b >> 03: switch to QEMUMachine, touch-up pylintrc, drop r-b >> 04,05,06: add r-b >> 07: switch to QEMUMachine >> >> >> Here are two new options for copy-before-write filter: >> >> on-cbw-error allows to alter the behavior on copy-before-write operation >> failure: not break guest write but break the snapshot (and therefore >> backup process) >> >> cbw-timeout allows to limit cbw operation by some timeout. >> >> So, for example, using cbw-timeout=60 and on-cbw-error=break-snapshot >> you can be sure that guest write will not stuck for more than 60 >> seconds and will never fail due to backup problems. >> >> Vladimir Sementsov-Ogievskiy (7): >> block/copy-before-write: refactor option parsing >> block/copy-before-write: add on-cbw-error open parameter >> iotests: add copy-before-write: on-cbw-error tests >> util: add qemu-co-timeout >> block/block-copy: block_copy(): add timeout_ns parameter >> block/copy-before-write: implement cbw-timeout option >> iotests: copy-before-write: add cases for cbw-timeout option >> >> qapi/block-core.json | 31 ++- >> include/block/block-copy.h | 4 +- >> include/qemu/coroutine.h | 13 ++ >> block/block-copy.c | 33 ++- >> block/copy-before-write.c | 111 ++++++--- >> util/qemu-co-timeout.c | 89 ++++++++ >> tests/qemu-iotests/pylintrc | 5 + >> tests/qemu-iotests/tests/copy-before-write | 213 ++++++++++++++++++ >> .../qemu-iotests/tests/copy-before-write.out | 5 + >> util/meson.build | 1 + >> 10 files changed, 466 insertions(+), 39 deletions(-) >> create mode 100644 util/qemu-co-timeout.c >> create mode 100755 tests/qemu-iotests/tests/copy-before-write >> create mode 100644 tests/qemu-iotests/tests/copy-before-write.out >> > > Thanks for review, applied to my new block branch at https://gitlab.com/vsementsov/qemu.git > Or not. I still need an acc for QAPI interface (Eric or Markus could you please look?). Also, may be I should rename qemu-co-timeout.c to qemu-coroutine-timeout.c, to match "F: util/*coroutine*" in MAINTAINERS.. Stefan, Kevin, could you please look at it?
On 5/26/22 21:51, Vladimir Sementsov-Ogievskiy wrote: > On 5/26/22 19:46, Vladimir Sementsov-Ogievskiy wrote: >> On 4/7/22 16:27, Vladimir Sementsov-Ogievskiy wrote: >>> Hi all! >>> >>> v4: Now based on master >>> 01: add assertion and r-b >>> 02: s/7.0/7.1/ and r-b >>> 03: switch to QEMUMachine, touch-up pylintrc, drop r-b >>> 04,05,06: add r-b >>> 07: switch to QEMUMachine >>> >>> >>> Here are two new options for copy-before-write filter: >>> >>> on-cbw-error allows to alter the behavior on copy-before-write operation >>> failure: not break guest write but break the snapshot (and therefore >>> backup process) >>> >>> cbw-timeout allows to limit cbw operation by some timeout. >>> >>> So, for example, using cbw-timeout=60 and on-cbw-error=break-snapshot >>> you can be sure that guest write will not stuck for more than 60 >>> seconds and will never fail due to backup problems. >>> >>> Vladimir Sementsov-Ogievskiy (7): >>> block/copy-before-write: refactor option parsing >>> block/copy-before-write: add on-cbw-error open parameter >>> iotests: add copy-before-write: on-cbw-error tests >>> util: add qemu-co-timeout >>> block/block-copy: block_copy(): add timeout_ns parameter >>> block/copy-before-write: implement cbw-timeout option >>> iotests: copy-before-write: add cases for cbw-timeout option >>> >>> qapi/block-core.json | 31 ++- >>> include/block/block-copy.h | 4 +- >>> include/qemu/coroutine.h | 13 ++ >>> block/block-copy.c | 33 ++- >>> block/copy-before-write.c | 111 ++++++--- >>> util/qemu-co-timeout.c | 89 ++++++++ >>> tests/qemu-iotests/pylintrc | 5 + >>> tests/qemu-iotests/tests/copy-before-write | 213 ++++++++++++++++++ >>> .../qemu-iotests/tests/copy-before-write.out | 5 + >>> util/meson.build | 1 + >>> 10 files changed, 466 insertions(+), 39 deletions(-) >>> create mode 100644 util/qemu-co-timeout.c >>> create mode 100755 tests/qemu-iotests/tests/copy-before-write >>> create mode 100644 tests/qemu-iotests/tests/copy-before-write.out >>> >> >> Thanks for review, applied to my new block branch at https://gitlab.com/vsementsov/qemu.git >> > > Or not. I still need an acc for QAPI interface (Eric or Markus could you please look?). > > Also, may be I should rename qemu-co-timeout.c to qemu-coroutine-timeout.c, to match "F: util/*coroutine*" in MAINTAINERS.. Stefan, Kevin, could you please look at it? > > OK, I think, I can stage it, if no more comments. API changes are quite usual and new qemu_co_timeout is isolated. Applied to my block branch https://gitlab.com/vsementsov/qemu/-/commits/block I think, I'll prepare a pull request on Monday, and include also my "[PATCH] MAINTAINERS: update Vladimir's address and repositories" if Stefan don't send it earlier.