18 Sep, 2014

1 commit


19 Sep, 2013

1 commit

  • Schedulers such as lblc and lblcr require the weight to be as high as the
    maximum number of active connections. In commit b552f7e3a9524abcbcdf
    ("ipvs: unify the formula to estimate the overhead of processing
    connections"), the consideration of inactconns and activeconns was cleaned
    up to always count activeconns as 256 times more important than inactconns.
    In cases where 3000 or more connections are expected, a weight of 3000 *
    256 * 3000 connections overflows the 32-bit signed result used to determine
    if rescheduling is required.

    On amd64, this merely changes the multiply and comparison instructions to
    64-bit. On x86, a 64-bit result is already present from imull, so only
    a few more comparison instructions are emitted.

    Signed-off-by: Simon Kirby
    Acked-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Simon Kirby
     

26 Jun, 2013

1 commit

  • Before now the schedulers needed access only to IP
    addresses and it was easy to get them from skb by
    using ip_vs_fill_iph_addr_only.

    New changes for the SH scheduler will need the protocol
    and ports which is difficult to get from skb for the
    IPv6 case. As we have all the data in the iph structure,
    to avoid the same slow lookups provide the iph to schedulers.

    Signed-off-by: Julian Anastasov
    Acked-by: Hans Schillstrom
    Signed-off-by: Simon Horman

    Julian Anastasov
     

02 Apr, 2013

2 commits

  • This is the final step in RCU conversion.

    Things that are removed:

    - svc->usecnt: now svc is accessed under RCU read lock
    - svc->inc: and some unused code
    - ip_vs_bind_pe and ip_vs_unbind_pe: no ability to replace PE
    - __ip_vs_svc_lock: replaced with RCU
    - IP_VS_WAIT_WHILE: now readers lookup svcs and dests under
    RCU and work in parallel with configuration

    Other changes:

    - before now, a RCU read-side critical section included the
    calling of the schedule method, now it is extended to include
    service lookup
    - ip_vs_svc_table and ip_vs_svc_fwm_table are now using hlist
    - svc->pe and svc->scheduler remain to the end (of grace period),
    the schedulers are prepared for such RCU readers
    even after done_service is called but they need
    to use synchronize_rcu because last ip_vs_scheduler_put
    can happen while RCU read-side critical sections
    use an outdated svc->scheduler pointer
    - as planned, update_service is removed
    - empty services can be freed immediately after grace period.
    If dests were present, the services are freed from
    the dest trash code

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Julian Anastasov
     
  • The schedule method now needs _rcu list-traversal
    primitive for svc->destinations.

    Signed-off-by: Julian Anastasov
    Signed-off-by: Simon Horman

    Julian Anastasov
     

16 Feb, 2011

1 commit

  • 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: Patrick Schaaf
    Signed-off-by: Simon Horman

    Patrick Schaaf
     

03 Aug, 2009

1 commit


31 Jul, 2009

1 commit


30 Dec, 2008

1 commit


04 Nov, 2008

1 commit


07 Oct, 2008

1 commit

  • Since IPVS now has partial IPv6 support, this patch moves IPVS from
    net/ipv4/ipvs to net/netfilter/ipvs. It's a result of:

    $ git mv net/ipv4/ipvs net/netfilter

    and adapting the relevant Kconfigs/Makefiles to the new path.

    Signed-off-by: Julius Volz
    Signed-off-by: Simon Horman

    Julius Volz