1. 09 5月, 2012 1 次提交
    • P
      ipvs: wakeup master thread · 1c003b15
      Pablo Neira Ayuso 提交于
      	High rate of sync messages in master can lead to
      overflowing the socket buffer and dropping the messages.
      Fixed sleep of 1 second without wakeup events is not suitable
      for loaded masters,
      
      	Use delayed_work to schedule sending for queued messages
      and limit the delay to IPVS_SYNC_SEND_DELAY (20ms). This will
      reduce the rate of wakeups but to avoid sending long bursts we
      wakeup the master thread after IPVS_SYNC_WAKEUP_RATE (8) messages.
      
      	Add hard limit for the queued messages before sending
      by using "sync_qlen_max" sysctl var. It defaults to 1/32 of
      the memory pages but actually represents number of messages.
      It will protect us from allocating large parts of memory
      when the sending rate is lower than the queuing rate.
      
      	As suggested by Pablo, add new sysctl var
      "sync_sock_size" to configure the SNDBUF (master) or
      RCVBUF (slave) socket limit. Default value is 0 (preserve
      system defaults).
      
      	Change the master thread to detect and block on
      SNDBUF overflow, so that we do not drop messages when
      the socket limit is low but the sync_qlen_max limit is
      not reached. On ENOBUFS or other errors just drop the
      messages.
      
      	Change master thread to enter TASK_INTERRUPTIBLE
      state early, so that we do not miss wakeups due to messages or
      kthread_should_stop event.
      
      Thanks to Pablo Neira Ayuso for his valuable feedback!
      Signed-off-by: NJulian Anastasov <ja@ssi.bg>
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      1c003b15
  2. 30 4月, 2012 2 次提交
  3. 21 4月, 2012 1 次提交
  4. 16 4月, 2012 1 次提交
  5. 05 3月, 2012 1 次提交
    • P
      BUG: headers with BUG/BUG_ON etc. need linux/bug.h · 187f1882
      Paul Gortmaker 提交于
      If a header file is making use of BUG, BUG_ON, BUILD_BUG_ON, or any
      other BUG variant in a static inline (i.e. not in a #define) then
      that header really should be including <linux/bug.h> and not just
      expecting it to be implicitly present.
      
      We can make this change risk-free, since if the files using these
      headers didn't have exposure to linux/bug.h already, they would have
      been causing compile failures/warnings.
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      187f1882
  6. 31 12月, 2011 1 次提交
  7. 23 11月, 2011 1 次提交
  8. 01 11月, 2011 4 次提交
  9. 13 10月, 2011 1 次提交
  10. 27 7月, 2011 1 次提交
  11. 14 6月, 2011 1 次提交
  12. 13 6月, 2011 2 次提交
  13. 27 5月, 2011 1 次提交
  14. 13 5月, 2011 1 次提交
    • J
      ipvs: Remove all remaining references to rt->rt_{src,dst} · c92f5ca2
      Julian Anastasov 提交于
      Remove all remaining references to rt->rt_{src,dst}
      by using dest->dst_saddr to cache saddr (used for TUN mode).
      For ICMP in FORWARD hook just restrict the rt_mode for NAT
      to disable LOCALNODE. All other modes do not allow
      IP_VS_RT_MODE_RDR, so we should be safe with the ICMP
      forwarding. Using cp->daddr as replacement for rt_dst
      is safe for all modes except BYPASS, even when cp->dest is
      NULL because it is cp->daddr that is used to assign cp->dest
      for sync-ed connections.
      Signed-off-by: NJulian Anastasov <ja@ssi.bg>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      c92f5ca2
  15. 10 5月, 2011 1 次提交
    • H
      IPVS: init and cleanup restructuring · 7a4f0761
      Hans Schillstrom 提交于
      DESCRIPTION
      This patch tries to restore the initial init and cleanup
      sequences that was before namspace patch.
      Netns also requires action when net devices unregister
      which has never been implemented. I.e this patch also
      covers when a device moves into a network namespace,
      and has to be released.
      
      IMPLEMENTATION
      The number of calls to register_pernet_device have been
      reduced to one for the ip_vs.ko
      Schedulers still have their own calls.
      
      This patch adds a function __ip_vs_service_cleanup()
      and an enable flag for the netfilter hooks.
      
      The nf hooks will be enabled when the first service is loaded
      and never disabled again, except when a namespace exit starts.
      Signed-off-by: NHans Schillstrom <hans@schillstrom.com>
      Acked-by: NJulian Anastasov <ja@ssi.bg>
      [horms@verge.net.au: minor edit to changelog]
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      7a4f0761
  16. 09 5月, 2011 1 次提交
    • H
      IPVS: init and cleanup restructuring · 74973f6f
      Hans Schillstrom 提交于
      DESCRIPTION
      This patch tries to restore the initial init and cleanup
      sequences that was before namspace patch.
      Netns also requires action when net devices unregister
      which has never been implemented. I.e this patch also
      covers when a device moves into a network namespace,
      and has to be released.
      
      IMPLEMENTATION
      The number of calls to register_pernet_device have been
      reduced to one for the ip_vs.ko
      Schedulers still have their own calls.
      
      This patch adds a function __ip_vs_service_cleanup()
      and an enable flag for the netfilter hooks.
      
      The nf hooks will be enabled when the first service is loaded
      and never disabled again, except when a namespace exit starts.
      Signed-off-by: NHans Schillstrom <hans@schillstrom.com>
      Acked-by: NJulian Anastasov <ja@ssi.bg>
      [horms@verge.net.au: minor edit to changelog]
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      74973f6f
  17. 25 4月, 2011 1 次提交
  18. 04 4月, 2011 1 次提交
  19. 31 3月, 2011 1 次提交
  20. 22 3月, 2011 1 次提交
    • S
      IPVS: Use global mutex in ip_vs_app.c · 736561a0
      Simon Horman 提交于
      As part of the work to make IPVS network namespace aware
      __ip_vs_app_mutex was replaced by a per-namespace lock,
      ipvs->app_mutex. ipvs->app_key is also supplied for debugging purposes.
      
      Unfortunately this implementation results in ipvs->app_key residing
      in non-static storage which at the very least causes a lockdep warning.
      
      This patch takes the rather heavy-handed approach of reinstating
      __ip_vs_app_mutex which will cover access to the ipvs->list_head
      of all network namespaces.
      
      [   12.610000] IPVS: Creating netns size=2456 id=0
      [   12.630000] IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
      [   12.640000] BUG: key ffff880003bbf1a0 not in .data!
      [   12.640000] ------------[ cut here ]------------
      [   12.640000] WARNING: at kernel/lockdep.c:2701 lockdep_init_map+0x37b/0x570()
      [   12.640000] Hardware name: Bochs
      [   12.640000] Pid: 1, comm: swapper Tainted: G        W 2.6.38-kexec-06330-g69b7efe-dirty #122
      [   12.650000] Call Trace:
      [   12.650000]  [<ffffffff8102e685>] warn_slowpath_common+0x75/0xb0
      [   12.650000]  [<ffffffff8102e6d5>] warn_slowpath_null+0x15/0x20
      [   12.650000]  [<ffffffff8105967b>] lockdep_init_map+0x37b/0x570
      [   12.650000]  [<ffffffff8105829d>] ? trace_hardirqs_on+0xd/0x10
      [   12.650000]  [<ffffffff81055ad8>] debug_mutex_init+0x38/0x50
      [   12.650000]  [<ffffffff8104bc4c>] __mutex_init+0x5c/0x70
      [   12.650000]  [<ffffffff81685ee7>] __ip_vs_app_init+0x64/0x86
      [   12.660000]  [<ffffffff81685a3b>] ? ip_vs_init+0x0/0xff
      [   12.660000]  [<ffffffff811b1c33>] T.620+0x43/0x170
      [   12.660000]  [<ffffffff811b1e9a>] ? register_pernet_subsys+0x1a/0x40
      [   12.660000]  [<ffffffff81685a3b>] ? ip_vs_init+0x0/0xff
      [   12.660000]  [<ffffffff81685a3b>] ? ip_vs_init+0x0/0xff
      [   12.660000]  [<ffffffff811b1db7>] register_pernet_operations+0x57/0xb0
      [   12.660000]  [<ffffffff81685a3b>] ? ip_vs_init+0x0/0xff
      [   12.670000]  [<ffffffff811b1ea9>] register_pernet_subsys+0x29/0x40
      [   12.670000]  [<ffffffff81685f19>] ip_vs_app_init+0x10/0x12
      [   12.670000]  [<ffffffff81685a87>] ip_vs_init+0x4c/0xff
      [   12.670000]  [<ffffffff8166562c>] do_one_initcall+0x7a/0x12e
      [   12.670000]  [<ffffffff8166583e>] kernel_init+0x13e/0x1c2
      [   12.670000]  [<ffffffff8128c134>] kernel_thread_helper+0x4/0x10
      [   12.670000]  [<ffffffff8128ad40>] ? restore_args+0x0/0x30
      [   12.680000]  [<ffffffff81665700>] ? kernel_init+0x0/0x1c2
      [   12.680000]  [<ffffffff8128c130>] ? kernel_thread_helper+0x0/0x1global0
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Cc: Julian Anastasov <ja@ssi.bg>
      Cc: Hans Schillstrom <hans@schillstrom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      736561a0
  21. 15 3月, 2011 12 次提交
  22. 25 2月, 2011 1 次提交
  23. 22 2月, 2011 1 次提交
  24. 16 2月, 2011 1 次提交
    • P
      ipvs: make "no destination available" message more informative · 41ac51ee
      Patrick Schaaf 提交于
      When IP_VS schedulers do not find a destination, they output a terse
      "WLC: no destination available" message through kernel syslog, which I
      can not only make sense of because syslog puts them in a logfile
      together with keepalived checker results.
      
      This patch makes the output a bit more informative, by telling you which
      virtual service failed to find a destination.
      
      Example output:
      
      kernel: [1539214.552233] IPVS: wlc: TCP 192.168.8.30:22 - no destination available
      kernel: [1539299.674418] IPVS: wlc: FWM 22 0x00000016 - no destination available
      
      I have tested the code for IPv4 and FWM services, as you can see from
      the example; I do not have an IPv6 setup to test the third code path
      with.
      
      To avoid code duplication, I put a new function ip_vs_scheduler_err()
      into ip_vs_sched.c, and use that from the schedulers instead of calling
      IP_VS_ERR_RL directly.
      Signed-off-by: NPatrick Schaaf <netdev@bof.de>
      Signed-off-by: NSimon Horman <horms@verge.net.au>
      41ac51ee