On 11/03/2015 09:07 PM, zhanghailiang wrote: > Hi, > > On 2015/11/3 20:41, Yang Hongyang wrote: >> Can you explain why this is needed? Seems that this api hasn't >> been used in this series. >> > > We will call it in colo_init_filter_buffers() which is introduced in > patch 37, > We should remove the timers of filter-buffers which are configured by > users. > Or there will be two places to release packets when we enable colo ft, > one in timer callback, > the other one in COLO when we do checkpoint. > > > Thanks, > zhanghailiang
Hi: Then you'd better explain this in commit log. Thanks > >> On 2015年11月03日 19:56, zhanghailiang wrote: >>> Signed-off-by: zhanghailiang <zhang.zhanghaili...@huawei.com> >>> Cc: Jason Wang <jasow...@redhat.com> >>> --- >>> v10: new patch >>> --- >>> include/net/filter.h | 1 + >>> net/filter-buffer.c | 17 +++++++++++++++++ >>> 2 files changed, 18 insertions(+) >>> >>> diff --git a/include/net/filter.h b/include/net/filter.h >>> index 5a09607..4499d60 100644 >>> --- a/include/net/filter.h >>> +++ b/include/net/filter.h >>> @@ -74,5 +74,6 @@ ssize_t qemu_netfilter_pass_to_next(NetClientState >>> *sender, >>> int iovcnt, >>> void *opaque); >>> void filter_buffer_release_all(void); >>> +void filter_buffer_del_all_timers(void); >>> >>> #endif /* QEMU_NET_FILTER_H */ >>> diff --git a/net/filter-buffer.c b/net/filter-buffer.c >>> index b344901..5f0ea70 100644 >>> --- a/net/filter-buffer.c >>> +++ b/net/filter-buffer.c >>> @@ -178,6 +178,23 @@ void filter_buffer_release_all(void) >>> qemu_foreach_netfilter(filter_buffer_release_packets, NULL, >>> NULL); >>> } >>> >>> +static void filter_buffer_del_timer(NetFilterState *nf, void *opaque, >>> + Error **errp) >>> +{ >>> + if (!strcmp(object_get_typename(OBJECT(nf)), >>> TYPE_FILTER_BUFFER)) { >>> + FilterBufferState *s = FILTER_BUFFER(nf); >>> + >>> + if (s->interval) { >>> + timer_del(&s->release_timer); >>> + } >>> + } >>> +} >>> + >>> +void filter_buffer_del_all_timers(void) >>> +{ >>> + qemu_foreach_netfilter(filter_buffer_del_timer, NULL, NULL); >>> +} >>> + >>> static void filter_buffer_init(Object *obj) >>> { >>> object_property_add(obj, "interval", "int", >>> >> > >