From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43369) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1at2WD-00049R-RT for qemu-devel@nongnu.org; Wed, 20 Apr 2016 20:30:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1at2W8-0001B6-7P for qemu-devel@nongnu.org; Wed, 20 Apr 2016 20:30:53 -0400 Received: from szxga02-in.huawei.com ([119.145.14.65]:46655) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1at2W4-00018f-Rg for qemu-devel@nongnu.org; Wed, 20 Apr 2016 20:30:48 -0400 References: <1460096797-14916-1-git-send-email-zhang.zhanghailiang@huawei.com> <1460096797-14916-33-git-send-email-zhang.zhanghailiang@huawei.com> From: Hailiang Zhang Message-ID: <57181F09.4090902@huawei.com> Date: Thu, 21 Apr 2016 08:30:01 +0800 MIME-Version: 1.0 In-Reply-To: <1460096797-14916-33-git-send-email-zhang.zhanghailiang@huawei.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH COLO-Frame v16 32/35] net: Add notifier/callback for netdev init List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, Jason Wang Cc: peter.huangpeng@huawei.com, amit.shah@redhat.com, quintela@redhat.com, dgilbert@redhat.com, eblake@redhat.com, eddie.dong@intel.com, yunhong.jiang@intel.com, wency@cn.fujitsu.com, lizhijian@cn.fujitsu.com, arei.gonglei@huawei.com, stefanha@redhat.com, hongyang.yang@easystack.cn, zhangchen.fnst@cn.fujitsu.com, xiecl.fnst@cn.fujitsu.com, armbru@redhat.com ping ... ? Hi Jason, Any comments on the net parts ? Thanks, Hailiang On 2016/4/8 14:26, zhanghailiang wrote: > We can register some callback for this notifier, > this will be used by COLO to register a callback which > will add each netdev a buffer filter. > > Signed-off-by: zhanghailiang > Cc: Jason Wang > Cc: Yang Hongyang > --- > v16: > - Simplify the codes by using some helpers in QEMU > v14: > - New patch > --- > include/net/net.h | 3 +++ > net/net.c | 12 ++++++++++++ > 2 files changed, 15 insertions(+) > > diff --git a/include/net/net.h b/include/net/net.h > index 73e4c46..d8abe7a 100644 > --- a/include/net/net.h > +++ b/include/net/net.h > @@ -8,6 +8,7 @@ > #include "net/queue.h" > #include "migration/vmstate.h" > #include "qapi-types.h" > +#include "qemu/notify.h" > > #define MAX_QUEUE_NUM 1024 > > @@ -176,6 +177,8 @@ struct NICInfo { > int nvectors; > }; > > +void netdev_init_add_notifier(Notifier *notify); > + > extern int nb_nics; > extern NICInfo nd_table[MAX_NICS]; > extern int default_net; > diff --git a/net/net.c b/net/net.c > index 0ad6217..6d846f4 100644 > --- a/net/net.c > +++ b/net/net.c > @@ -56,6 +56,9 @@ > static VMChangeStateEntry *net_change_state_entry; > static QTAILQ_HEAD(, NetClientState) net_clients; > > +static NotifierList netdev_init_notifiers = > + NOTIFIER_LIST_INITIALIZER(netdev_init_notifiers); > + > const char *host_net_devices[] = { > "tap", > "socket", > @@ -931,6 +934,10 @@ static int net_init_nic(const NetClientOptions *opts, const char *name, > return idx; > } > > +void netdev_init_add_notifier(Notifier *notify) > +{ > + notifier_list_add(&netdev_init_notifiers, notify); > +} > > static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND__MAX])( > const NetClientOptions *opts, > @@ -1017,6 +1024,11 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp) > } > return -1; > } > + if (is_netdev) { > + const Netdev *netdev = object; > + > + notifier_list_notify(&netdev_init_notifiers, netdev->id); > + } > return 0; > } > >