[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_du
From: |
Wenchao Xia |
Subject: |
Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump() |
Date: |
Wed, 22 May 2013 10:09:19 +0800 |
User-agent: |
Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 |
于 2013-5-20 10:39, Wenchao Xia 写道:
> 于 2013-5-17 20:30, Luiz Capitulino 写道:
>> On Fri, 17 May 2013 11:30:31 +0800
>> Wenchao Xia <address@hidden> wrote:
>>
>>> 于 2013-5-16 20:17, Luiz Capitulino 写道:
>>>> On Thu, 16 May 2013 10:22:09 +0800
>>>> Wenchao Xia <address@hidden> wrote:
>>>>
>>>>> 于 2013-5-15 20:28, Luiz Capitulino 写道:
>>>>>> On Wed, 15 May 2013 10:10:37 +0800
>>>>>> Wenchao Xia <address@hidden> wrote:
>>>>>>
>>>>>>> 于 2013-5-6 21:22, Luiz Capitulino 写道:
>>>>>>>> On Mon, 06 May 2013 10:09:43 +0800
>>>>>>>> Wenchao Xia <address@hidden> wrote:
>>>>>>>>
>>>>>>>>> 于 2013-5-3 10:51, Wenchao Xia 写道:
>>>>>>>>>> 于 2013-5-2 20:02, Luiz Capitulino 写道:
>>>>>>>>>>> On Thu, 02 May 2013 10:05:08 +0800
>>>>>>>>>>> Wenchao Xia <address@hidden> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> 于 2013-4-30 3:05, Luiz Capitulino 写道:
>>>>>>>>>>>>> On Fri, 26 Apr 2013 16:46:57 +0200
>>>>>>>>>>>>> Stefan Hajnoczi <address@hidden> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Fri, Apr 26, 2013 at 05:31:15PM +0800, Wenchao Xia wrote:
>>>>>>>>>>>>>>> @@ -2586,10 +2585,12 @@ void do_info_snapshots(Monitor
>>>>>>>>>>>>>>> *mon, const
>>>>>>>>>>>>>>> QDict *qdict)
>>>>>>>>>>>>>>> }
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> if (total > 0) {
>>>>>>>>>>>>>>> - monitor_printf(mon, "%s\n", bdrv_snapshot_dump(buf,
>>>>>>>>>>>>>>> sizeof(buf), NULL));
>>>>>>>>>>>>>>> + bdrv_snapshot_dump(NULL);
>>>>>>>>>>>>>>> + monitor_printf(mon, "\n");
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Luiz: any issue with mixing monitor_printf(mon) and
>>>>>>>>>>>>>> monitor_vprintf(cur_mon) calls? I guess there was a
>>>>>>>>>>>>>> reason for
>>>>>>>>>>>>>> explicitly passing mon instead of relying on cur_mon.
>>>>>>>>>>>>>
>>>>>>>>>>>>> where are they being mixed?
>>>>>>>>>>>>>
>>>>>>>>>>>> bdrv_snapshot_dump() used a global variable
>>>>>>>>>>>> "cur_mon" inside,
>>>>>>>>>>>> instead
>>>>>>>>>>>> of let caller pass in a explicit montior* "mon", I guess
>>>>>>>>>>>> that is the
>>>>>>>>>>>> question.
>>>>>>>>>>>
>>>>>>>>>>> I'd have to see the code to tell, but yes, what Stefan
>>>>>>>>>>> described is the
>>>>>>>>>>> best practice for the Monitor.
>>>>>>>>>>>
>>>>>>>>>> I think this would not be a problem until qemu wants
>>>>>>>>>> more than one
>>>>>>>>>> human monitor console, and then we may require a data
>>>>>>>>>> structure to tell
>>>>>>>>>> where to output the string: stdout, *mon, or even stderr, and
>>>>>>>>>> error_printf() also need to be changed.
>>>>>>>>>>
>>>>>>>>> Luiz, what is your idea? I'd like to respin v2 if no
>>>>>>>>> issues for it.
>>>>>>>>
>>>>>>>> As I said before, I'd have to see the code to tell. But
>>>>>>>> answering your comment,
>>>>>>>> the code does support multiple monitors.
>>>>>>>>
>>>>>>> Hi Luiz,
>>>>>>> Sorry to ask again, do you think method above is OK now,
>>>>>>> waiting for
>>>>>>> your confirm.
>>>>>>
>>>>>> Can you point me to the code in question?
>>>>>>
>>>>> Sure, it is
>>>>>
>>>>> +
>>>>> +/*
>>>>> + * Print to current monitor if we have one, else to stdout. It is
>>>>> similar with
>>>>> + * error_printf().
>>>>> + * TODO just like error_vprintf()
>>>>> + */
>>>>> +void message_printf(const char *fmt, ...)
>>>>> +{
>>>>> + va_list ap;
>>>>> +
>>>>> + va_start(ap, fmt);
>>>>> + if (cur_mon) {
>>>>> + monitor_vprintf(cur_mon, fmt, ap);
>>>>> + } else {
>>>>> + vfprintf(stdout, fmt, ap);
>>>>> + }
>>>>> + va_end(ap);
>>>>> +}
>>>>>
>>>>> This function used global variable cur_mon instead of input
>>>>> parameter,
>>>>> similar to error_printf().
>>>>
>>>> Why do you need it? Why can't you you use error_printf() for example?
>>>>
>>> error_printf() will print out to stderr in qemu-img, but stdout is
>>> wanted for those dump info function.
>>
>> You can refactor the code so that you can pass a FILE *stream argument to
>> error_vprintf() and maybe add error_printf_stream()?
>>
> The name is a bit confusing, maybe qemu_printf()? Another problem is,
> monitor have a buf[] instead of a FILE*, I think it need a structure
> include those:
>
> typdef enum QemuOutputType {
> QEMU_OUTPUT_TYPE_STREAM,
> QEMU_OUTPUT_TYPE_MONITOR,
> } QemuOutputType;
>
> typedef struct QemuOutput {
> QemuOutputType type;
> union {
> FILE *file;
> Monitor *mon;
> };
> }
>
> It may brings some inconvienience to caller, but this is what I can
> think out now.
>
Luiz, I am going to respin V2 as above, can I have you confirm on it?
--
Best Regards
Wenchao Xia
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), (continued)
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/02
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/05
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Luiz Capitulino, 2013/05/06
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/14
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Luiz Capitulino, 2013/05/15
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/15
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Luiz Capitulino, 2013/05/16
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/16
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Luiz Capitulino, 2013/05/17
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Wenchao Xia, 2013/05/19
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(),
Wenchao Xia <=
- Re: [Qemu-devel] [PATCH 7/7] block: dump to monitor for bdrv_snapshot_dump() and bdrv_image_info_dump(), Luiz Capitulino, 2013/05/22