mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
migration: move rate limiting to QEMUFile
Rate limiting is now simply a byte counter; client call qemu_file_rate_limit() manually to determine if they have to exit. So it is possible and simple to move the functionality to QEMUFile. This makes the remaining functionality of s->file redundant; in the next patch we can remove it and write directly to s->migration_file. Reviewed-by: Orit Wasserman <owasserm@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
442773cef1
commit
1964a39706
4 changed files with 21 additions and 99 deletions
|
@ -51,26 +51,11 @@ typedef int (QEMUFileCloseFunc)(void *opaque);
|
|||
*/
|
||||
typedef int (QEMUFileGetFD)(void *opaque);
|
||||
|
||||
/* Called to determine if the file has exceeded its bandwidth allocation. The
|
||||
* bandwidth capping is a soft limit, not a hard limit.
|
||||
*/
|
||||
typedef int (QEMUFileRateLimit)(void *opaque);
|
||||
|
||||
/* Called to change the current bandwidth allocation. This function must return
|
||||
* the new actual bandwidth. It should be new_rate if everything goes ok, and
|
||||
* the old rate otherwise
|
||||
*/
|
||||
typedef int64_t (QEMUFileSetRateLimit)(void *opaque, int64_t new_rate);
|
||||
typedef int64_t (QEMUFileGetRateLimit)(void *opaque);
|
||||
|
||||
typedef struct QEMUFileOps {
|
||||
QEMUFilePutBufferFunc *put_buffer;
|
||||
QEMUFileGetBufferFunc *get_buffer;
|
||||
QEMUFileCloseFunc *close;
|
||||
QEMUFileGetFD *get_fd;
|
||||
QEMUFileRateLimit *rate_limit;
|
||||
QEMUFileSetRateLimit *set_rate_limit;
|
||||
QEMUFileGetRateLimit *get_rate_limit;
|
||||
} QEMUFileOps;
|
||||
|
||||
QEMUFile *qemu_fopen_ops(void *opaque, const QEMUFileOps *ops);
|
||||
|
@ -109,7 +94,8 @@ unsigned int qemu_get_be32(QEMUFile *f);
|
|||
uint64_t qemu_get_be64(QEMUFile *f);
|
||||
|
||||
int qemu_file_rate_limit(QEMUFile *f);
|
||||
int64_t qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate);
|
||||
void qemu_file_reset_rate_limit(QEMUFile *f);
|
||||
void qemu_file_set_rate_limit(QEMUFile *f, int64_t new_rate);
|
||||
int64_t qemu_file_get_rate_limit(QEMUFile *f);
|
||||
int qemu_file_get_error(QEMUFile *f);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue