qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH COLO-Frame v10 33/38] netfilter: Introduce an AP


From: zhanghailiang
Subject: Re: [Qemu-devel] [PATCH COLO-Frame v10 33/38] netfilter: Introduce an API to delete the timer of all buffer-filters
Date: Tue, 3 Nov 2015 21:07:45 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0

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

On 2015年11月03日 19:56, zhanghailiang wrote:
Signed-off-by: zhanghailiang <address@hidden>
Cc: Jason Wang <address@hidden>
---
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",







reply via email to

[Prev in Thread] Current Thread [Next in Thread]