From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48870) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKjPw-0004gB-Rc for qemu-devel@nongnu.org; Thu, 30 Jul 2015 04:42:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZKjPt-0007k6-CR for qemu-devel@nongnu.org; Thu, 30 Jul 2015 04:42:20 -0400 Received: from mx1.redhat.com ([209.132.183.28]:56422) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZKjPt-0007k0-4m for qemu-devel@nongnu.org; Thu, 30 Jul 2015 04:42:17 -0400 Message-ID: <55B9E362.1020304@redhat.com> Date: Thu, 30 Jul 2015 16:42:10 +0800 From: Jason Wang MIME-Version: 1.0 References: <1438167116-29270-1-git-send-email-yanghy@cn.fujitsu.com> <1438167116-29270-11-git-send-email-yanghy@cn.fujitsu.com> <55B9B53B.8070603@redhat.com> <55B9BB13.1010601@cn.fujitsu.com> In-Reply-To: <55B9BB13.1010601@cn.fujitsu.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 10/12] netbuffer: add a public api filter_buffer_release_all List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Yang Hongyang , qemu-devel@nongnu.org Cc: thuth@redhat.com, stefanha@redhat.com, zhang.zhanghailiang@huawei.com, mrhines@linux.vnet.ibm.com On 07/30/2015 01:50 PM, Yang Hongyang wrote: > On 07/30/2015 01:25 PM, Jason Wang wrote: >> >> >> On 07/29/2015 06:51 PM, Yang Hongyang wrote: >>> add a public api filter_buffer_release_all to release all >>> buffered packets. >>> also introduce qemu_find_netfilters_by_model to find all buffer >>> filters. >>> >>> Signed-off-by: Yang Hongyang >>> --- >>> include/net/filter.h | 5 +++++ >>> net/filter-buffer.c | 41 +++++++++++++++++++++++++++++++++++++++++ >>> net/filter.c | 18 ++++++++++++++++++ >>> 3 files changed, 64 insertions(+) >>> >>> diff --git a/include/net/filter.h b/include/net/filter.h >>> index 5292563..798b5b2 100644 >>> --- a/include/net/filter.h >>> +++ b/include/net/filter.h >>> @@ -50,5 +50,10 @@ NetFilterState *qemu_new_net_filter(NetFilterInfo >>> *info, >>> const char *name); >>> void netfilter_add(QemuOpts *opts, Error **errp); >>> void qmp_netfilter_add(QDict *qdict, QObject **ret, Error **errp); >>> +int qemu_find_netfilters_by_model(const char *model, NetFilterState >>> **nfs, >>> + int max); >>> + >>> +/* netbuffer filter */ >>> +void filter_buffer_release_all(void); >>> >>> #endif /* QEMU_NET_FILTER_H */ >>> diff --git a/net/filter-buffer.c b/net/filter-buffer.c >>> index 628e66f..8bac73b 100644 >>> --- a/net/filter-buffer.c >>> +++ b/net/filter-buffer.c >>> @@ -11,12 +11,14 @@ >>> #include "filters.h" >>> #include "qemu-common.h" >>> #include "qemu/error-report.h" >>> +#include "qemu/main-loop.h" >>> >>> typedef struct FILTERBUFFERState { >>> NetFilterState nf; >>> NetClientState dummy; /* used to send buffered packets */ >>> NetQueue *incoming_queue; >>> NetQueue *inflight_queue; >>> + QEMUBH *flush_bh; >> >> bh should be stopped and restarted during vm stop and continue. > > Sorry, could you explain more about this? do you mean to check > the vm state before bh_schedule? > how to stop&restart a bh? bh_delete bh_new bh_schedule? > >> >>> } FILTERBUFFERState; >>> >>> static void packet_send_completed(NetClientState *nc, ssize_t len) >>> @@ -56,6 +58,27 @@ static void filter_buffer_flush(NetFilterState *nf) >>> } >>> } >>> >>> +static void filter_buffer_flush_bh(void *opaque) >>> +{ >>> + FILTERBUFFERState *s = opaque; > [...] >>> + >>> +/* public APIs */ >>> +void filter_buffer_release_all(void) >>> +{ >>> + NetFilterState *nfs[MAX_QUEUE_NUM]; >>> + int queues, i; >>> + >>> + queues = qemu_find_netfilters_by_model("buffer", nfs, >>> MAX_QUEUE_NUM); >>> + >>> + for (i = 0; i < queues; i++) { >>> + filter_buffer_release_one(nfs[i]); >>> + } >>> +} >> >> Looks like the function was never used by following patches? > > Right, it's not used in this series. But it can be used by MC to > release packets > at checkpoint, Should I mark this unused, or drop this API? Please drop this and re-introduce them which it has users.