All of lore.kernel.org
 help / color / mirror / Atom feed
From: Wen Congyang <wency@cn.fujitsu.com>
To: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>, Alberto Garcia <berto@igalia.com>,
	qemu block <qemu-block@nongnu.org>,
	Jiang Yunhong <yunhong.jiang@intel.com>,
	Dong Eddie <eddie.dong@intel.com>,
	qemu devel <qemu-devel@nongnu.org>,
	Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Yang Hongyang <yanghy@cn.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH v5 0/4] qapi: child add/delete support
Date: Wed, 23 Sep 2015 09:08:55 +0800	[thread overview]
Message-ID: <5601FBA7.5080700@cn.fujitsu.com> (raw)
In-Reply-To: <20150922111554.GD3529@work-vm>

On 09/22/2015 07:15 PM, Dr. David Alan Gilbert wrote:
> * Wen Congyang (wency@cn.fujitsu.com) wrote:
>> If quorum's child is broken, we can use mirror job to replace it.
>> But sometimes, the user only need to remove the broken child, and
>> add it later when the problem is fixed.
>>
> 
> Hi,
>   Two questions:
>     1) Do you have an example of a pair of add/remove commands that work
>       together? (I'm not quite sure I understand where the ID for the remove
>       comes from).

The command line:
-drive if=virtio,id=disk1,driver=quorum,read-pattern=fifo,vote-threshold=1,children.0.file.filename=/data/images/kvm/suse/suse11_3.img,children.0.driver=raw

And the QMP monitor command:
{'execute':'blockdev-add', 'arguments':{'options':{'driver': 'raw', 'node-name': 'test1', 'file': {'driver': 'file', 'filename': '/dev/null'}, 'id': 'test11' }  } }
{'execute': 'human-monitor-command', 'arguments': {'command-line': 'drive_add buddy driver=nbd,host=192.168.3.1,port=8889,export=colo-disk1,node-name=test2,if=none'}}
{'execute':'x-blockdev-child-add', 'arguments':{'parent': 'disk1', 'child': 'test1' } }
{'execute':'x-blockdev-child-add', 'arguments':{'parent': 'disk1', 'child': 'test2' } }
{'execute': 'x-blockdev-child-del', 'arguments': {'parent': 'disk1', 'child': 'test1' } }
{'execute': 'x-blockdev-child-del', 'arguments': {'parent': 'disk1', 'child': 'test2' } }

Note: the qmp monitor command doesn't support nbd now, and I use the hmp command to add a BDS.

> 
>     2) If the child has failed and is not responding to block operations
>        at all (e.g a networking failure to an nbd device which may take minutes
>        to time out); how do you recover - flush or drain on the devices
>        hang at that point.

If the network fails, the kernel doesn't notify the application...

> 
> (I was trying to test recovery from a failed secondary using the July COLO
> release; but the primary gets stuck in bdrv_drain or bdrv_flush if I kill
> the secondary in the right way).

IIRC, if the qemu is killed, the connection is closed at the same time. bdrv_drain()
or bdrv_flush() should not get stuck.

Thanks
Wen Congyang

> 
> Dave
> 
> 
>> It is based on the following patch:
>> http://lists.nongnu.org/archive/html/qemu-devel/2015-09/msg04579.html
>>
>> ChangLog:
>> v5:
>> 1. Address Eric Blake's comments
>> v4:
>> 1. drop nbd driver's implementation. We can use human-monitor-command
>>    to do it.
>> 2. Rename the command name.
>> v3:
>> 1. Don't open BDS in bdrv_add_child(). Use the existing BDS which is
>>    created by the QMP command blockdev-add.
>> 2. The driver NBD can support filename, path, host:port now.
>> v2:
>> 1. Use bdrv_get_device_or_node_name() instead of new function
>>    bdrv_get_id_or_node_name()
>> 2. Update the error message
>> 3. Update the documents in block-core.json
>>
>> Wen Congyang (4):
>>   Add new block driver interface to add/delete a BDS's child
>>   quorum: implement bdrv_add_child() and bdrv_del_child()
>>   qmp: add monitor command to add/remove a child
>>   hmp: add monitor command to add/remove a child
>>
>>  block.c                   | 56 ++++++++++++++++++++++++++++++++++--
>>  block/quorum.c            | 72 +++++++++++++++++++++++++++++++++++++++++++++--
>>  blockdev.c                | 48 +++++++++++++++++++++++++++++++
>>  hmp-commands.hx           | 28 ++++++++++++++++++
>>  hmp.c                     | 20 +++++++++++++
>>  hmp.h                     |  2 ++
>>  include/block/block.h     |  8 ++++++
>>  include/block/block_int.h |  5 ++++
>>  qapi/block-core.json      | 34 ++++++++++++++++++++++
>>  qmp-commands.hx           | 61 +++++++++++++++++++++++++++++++++++++++
>>  10 files changed, 329 insertions(+), 5 deletions(-)
>>
>> -- 
>> 2.4.3
>>
> --
> Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
> .
> 

  reply	other threads:[~2015-09-23  1:09 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-22  7:44 [Qemu-devel] [PATCH v5 0/4] qapi: child add/delete support Wen Congyang
2015-09-22  7:44 ` [Qemu-devel] [PATCH v5 1/4] Add new block driver interface to add/delete a BDS's child Wen Congyang
2015-10-07 13:35   ` Alberto Garcia
2015-10-08  2:05     ` Wen Congyang
2015-10-07 18:33   ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-10-08  2:06     ` Wen Congyang
2015-10-07 19:00   ` [Qemu-devel] " Dr. David Alan Gilbert
2015-10-08  2:03     ` Wen Congyang
2015-10-08 18:44       ` Dr. David Alan Gilbert
2015-09-22  7:44 ` [Qemu-devel] [PATCH v5 2/4] quorum: implement bdrv_add_child() and bdrv_del_child() Wen Congyang
2015-10-07 14:12   ` Alberto Garcia
2015-10-08  2:10     ` Wen Congyang
2015-10-07 18:51   ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-10-08  8:12     ` Alberto Garcia
2015-10-09 15:51       ` Max Reitz
2015-10-12 11:56         ` Alberto Garcia
2015-09-22  7:44 ` [Qemu-devel] [PATCH v5 3/4] qmp: add monitor command to add/remove a child Wen Congyang
2015-10-07 14:33   ` Alberto Garcia
2015-10-07 19:42   ` [Qemu-devel] [Qemu-block] " Max Reitz
2015-10-08  6:15     ` Markus Armbruster
2015-10-08  8:29       ` Alberto Garcia
2015-10-08 10:03         ` Kevin Wolf
2015-10-08 10:13           ` Alberto Garcia
2015-10-09 16:14         ` Max Reitz
2015-10-08 11:02       ` [Qemu-devel] Dynamic reconfiguration (was: qmp: add monitor command to add/remove a child) Kevin Wolf
2015-10-08 11:10         ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2015-10-21  8:27           ` [Qemu-devel] [Qemu-block] Dynamic reconfiguration Markus Armbruster
2015-10-26  2:04             ` Wen Congyang
2015-10-26  7:24               ` Markus Armbruster
2015-10-26  7:25                 ` Wen Congyang
2015-10-09 16:13       ` [Qemu-devel] [Qemu-block] [PATCH v5 3/4] qmp: add monitor command to add/remove a child Max Reitz
2015-10-09 16:42         ` Dr. David Alan Gilbert
2015-10-09 18:24           ` Max Reitz
2015-10-12  8:07             ` Dr. David Alan Gilbert
2015-10-12  8:18             ` Kevin Wolf
2015-10-12  7:58           ` Markus Armbruster
2015-10-12  7:56         ` Markus Armbruster
2015-10-12 16:27     ` Max Reitz
2015-09-22  7:44 ` [Qemu-devel] [PATCH v5 4/4] hmp: " Wen Congyang
2015-10-07 14:38   ` Alberto Garcia
2015-09-22 11:15 ` [Qemu-devel] [PATCH v5 0/4] qapi: child add/delete support Dr. David Alan Gilbert
2015-09-23  1:08   ` Wen Congyang [this message]
2015-09-23  9:21     ` Dr. David Alan Gilbert
2015-09-23  9:30       ` Wen Congyang
2015-10-07  6:40 ` Wen Congyang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5601FBA7.5080700@cn.fujitsu.com \
    --to=wency@cn.fujitsu.com \
    --cc=armbru@redhat.com \
    --cc=berto@igalia.com \
    --cc=dgilbert@redhat.com \
    --cc=eddie.dong@intel.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=yanghy@cn.fujitsu.com \
    --cc=yunhong.jiang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.