Message ID | 20230224144825.466375-1-f.ebner@proxmox.com |
---|---|
Headers | show |
Series | mirror: allow switching from background to active mode | expand |
On 24.02.23 17:48, Fiona Ebner wrote: > 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 acheive 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 > I couldn't figure out a way to avoid mutual inclusion between > block-core.json and job.json. Hmm, what do you mean? As I understand job-* API is "new" and block-job-* is "old", so we'd better add job-change command
Am 01.03.23 um 15:34 schrieb Vladimir Sementsov-Ogievskiy: > On 24.02.23 17:48, Fiona Ebner wrote: >> 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 acheive 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 >> I couldn't figure out a way to avoid mutual inclusion between >> block-core.json and job.json. > > Hmm, what do you mean? As I understand job-* API is "new" and > block-job-* is "old", so we'd better add job-change command > My issue is that when I go for that with a JobChangeOptions union in job.json and declare JobChangeOptionsMirror in block-core.json (it needs to know about MirrorCopyMode and all other mirror-related declarations are there so it's the natural place), then I need to include block-core.json in job.json so that the JobChangeOptions union can reference JobChangeOptionsMirror. But that is a mutual inclusion. I guess it would be possible to move MirrorCopyMode to job.json and declare JobChangeOptionsMirror in job.json, but that didn't feel right and would mean moving more and more to job.json whenever extending job-change requires it. But maybe I'm missing something obvious? Haven't worked much with the QAPI yet.