The commit is pushed to "branch-rh7-3.10.0-327.10.1.vz7.12.x-ovz" and will 
appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-327.10.1.vz7.12.3
------>
commit a8a54004b07a4930ebf03dda33a0ec1188ed2376
Author: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>
Date:   Thu Mar 24 19:53:44 2016 +0400

    vzprivnet: rt cache drop on vzprivnet update
    
    changes:
    1) fix rt_cache_flush arguments
    Below commit removes arg delay from rt_cache_flush:
    commit bafa6d9d8907 ("ipv4/route: arg delay is useless in
    rt_cache_flush()")
    
    Port diff-vzprivnet-rt-cache-drop-on-vzprivnet-update
      rt cache drop on vzprivnet update
    
      Vzprivnet update does not flushes rt cache inside containers. If entry
      was cached before update, vzprivnet changes can have no effect during
      quite long time.
    
      This patch flushes rt cache inside all containers after privnet changes.
      It guarantees that all newly created entries will have correct
      privnet_mark.
    
      https://jira.sw.ru/browse/PSBM-28881
    
      Signed-off-by: Vasily Averin <v...@parallels.com>
    
    Signed-off-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>
---
 net/ipv4/netfilter/ip_vzprivnet.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/net/ipv4/netfilter/ip_vzprivnet.c 
b/net/ipv4/netfilter/ip_vzprivnet.c
index efe0d95..258d12c 100644
--- a/net/ipv4/netfilter/ip_vzprivnet.c
+++ b/net/ipv4/netfilter/ip_vzprivnet.c
@@ -480,6 +480,7 @@ static int parse_param(const char *param, int *add, u32 
*net,
 static ssize_t vzpriv_write(struct file * file, const char __user *buf,
                            size_t count, loff_t *ppos)
 {
+       struct net *net;
        char *s, *page;
        int err;
        int offset;
@@ -495,8 +496,6 @@ static ssize_t vzpriv_write(struct file * file, const char 
__user *buf,
        if (err)
                goto err;
 
-       rt_cache_flush(&init_net);
-
        s = page;
        s[count] = 0;
 
@@ -520,6 +519,11 @@ static ssize_t vzpriv_write(struct file * file, const char 
__user *buf,
                s = nextline(s);
        }
 out:
+       rtnl_lock();
+       for_each_net(net)
+               rt_cache_flush(net);
+       rtnl_unlock();
+
        offset = s - page;
        if (offset > 0)
                err = offset;
@@ -815,6 +819,7 @@ static int parse_sparse(const char *param, int *add,
 static ssize_t sparse_write(struct file * file, const char __user *buf,
                            size_t count, loff_t *ppos)
 {
+       struct net *net;
        char *s, *page;
        int err;
        int offset;
@@ -830,8 +835,6 @@ static ssize_t sparse_write(struct file * file, const char 
__user *buf,
        if (err)
                goto err;
 
-       rt_cache_flush(&init_net);
-
        s = page;
        s[count] = 0;
 
@@ -856,6 +859,11 @@ static ssize_t sparse_write(struct file * file, const char 
__user *buf,
                s = nextline(s);
        }
 out:
+       rtnl_lock();
+       for_each_net(net)
+               rt_cache_flush(net);
+       rtnl_unlock();
+
        offset = s - page;
        if (offset > 0)
                err = offset;
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to