On Wed, Nov 2, 2011 at 7:32 PM, Kevin Wolf <kw...@redhat.com> wrote:
> Am 02.11.2011 07:01, schrieb Zhi Yong Wu:
>> Signed-off-by: Zhi Yong Wu <wu...@linux.vnet.ibm.com>
>> Signed-off-by: Stefan Hajnoczi <stefa...@linux.vnet.ibm.com>
>> ---
>>  block.c         |   40 ++++++++++++++++++++++++++++++++++++++++
>>  block.h         |    4 ++++
>>  block_int.h     |   29 +++++++++++++++++++++++++++++
>>  blockdev.c      |   44 ++++++++++++++++++++++++++++++++++++++++++++
>>  qemu-config.c   |   24 ++++++++++++++++++++++++
>>  qemu-options.hx |    1 +
>>  6 files changed, 142 insertions(+), 0 deletions(-)
>>
>> diff --git a/block.c b/block.c
>> index 9bb236c..c70f86d 100644
>> --- a/block.c
>> +++ b/block.c
>> @@ -30,6 +30,7 @@
>>  #include "qjson.h"
>>  #include "qemu-coroutine.h"
>>  #include "qmp-commands.h"
>> +#include "qemu-timer.h"
>>
>>  #ifdef CONFIG_BSD
>>  #include <sys/types.h>
>> @@ -105,6 +106,37 @@ int is_windows_drive(const char *filename)
>>  }
>>  #endif
>>
>> +/* throttling disk I/O limits */
>> +static void bdrv_block_timer(void *opaque)
>> +{
>> +    BlockDriverState *bs = opaque;
>> +
>> +    qemu_co_queue_next(&bs->throttled_reqs);
>> +}
>
> This runs only one request, whereas in previous versions all queued
> requests were resubmitted. Is this change intentional?
Yeah, This timer function is only the trigger for the head request
from throttled_req to be reactivated. If the head request is allowed
to be serviced, the next request which follows it will be reactivated
too.

>
>> diff --git a/block_int.h b/block_int.h
>> index f4547f6..0abe843 100644
>> --- a/block_int.h
>> +++ b/block_int.h
>> @@ -34,6 +34,12 @@
>>  #define BLOCK_FLAG_ENCRYPT   1
>>  #define BLOCK_FLAG_COMPAT6   4
>>
>> +#define BLOCK_IO_LIMIT_READ     0
>> +#define BLOCK_IO_LIMIT_WRITE    1
>> +#define BLOCK_IO_LIMIT_TOTAL    2
>> +
>> +#define BLOCK_IO_SLICE_TIME     100000000
>> +
>>  #define BLOCK_OPT_SIZE          "size"
>>  #define BLOCK_OPT_ENCRYPT       "encryption"
>>  #define BLOCK_OPT_COMPAT6       "compat6"
>> @@ -50,6 +56,16 @@ typedef struct AIOPool {
>>      BlockDriverAIOCB *free_aiocb;
>>  } AIOPool;
>>
>> +typedef struct BlockIOLimit {
>> +    int64_t bps[3];
>> +    int64_t iops[3];
>> +} BlockIOLimit;
>> +
>> +typedef struct BlockIODisp {
>> +    uint64_t bytes[2];
>> +    uint64_t ios[2];
>> +} BlockIODisp;
>
> I would prefer a different name. Something like BlockIOBaseValue maybe
> (no, I don't really like this either, I'm open for suggestions)
OK.

>
> Kevin
>



-- 
Regards,

Zhi Yong Wu

Reply via email to