From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45966) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1auwnF-0005RS-6p for qemu-devel@nongnu.org; Tue, 26 Apr 2016 02:48:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1auwnB-0007CK-VJ for qemu-devel@nongnu.org; Tue, 26 Apr 2016 02:48:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39621) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1auwnB-0007Bu-NU for qemu-devel@nongnu.org; Tue, 26 Apr 2016 02:48:17 -0400 References: <1460096797-14916-1-git-send-email-zhang.zhanghailiang@huawei.com> <1460096797-14916-33-git-send-email-zhang.zhanghailiang@huawei.com> From: Jason Wang Message-ID: <571F0F26.808@redhat.com> Date: Tue, 26 Apr 2016 14:48:06 +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 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: zhanghailiang , qemu-devel@nongnu.org Cc: xiecl.fnst@cn.fujitsu.com, lizhijian@cn.fujitsu.com, quintela@redhat.com, armbru@redhat.com, yunhong.jiang@intel.com, eddie.dong@intel.com, peter.huangpeng@huawei.com, dgilbert@redhat.com, arei.gonglei@huawei.com, stefanha@redhat.com, amit.shah@redhat.com, zhangchen.fnst@cn.fujitsu.com, hongyang.yang@easystack.cn On 04/08/2016 02:26 PM, 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); > +} Nitpick, like other notifier, we'd better have 'register' in the name of this function, (e.g something like netdev_register_init_notifier()). > > 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; > } >