Re: [PATCH v2 7/8] ipvs: add support for sync threads

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

 



On Fri, Apr 20, 2012 at 12:49:58AM +0300, Julian Anastasov wrote:
> 	Allow master and backup servers to use many threads
> for sync traffic. Add sysctl var "sync_ports" to define the
> number of threads. Every thread will use single UDP port,
> thread 0 will use the default port 8848 while last thread
> will use port 8848+sync_ports-1.
> 
> 	The sync traffic for connections is scheduled to many
> master threads based on the cp address but one connection is
> always assigned to same thread to avoid reordering of the
> sync messages.
> 
> 	Remove ip_vs_sync_switch_mode because this check
> for sync mode change is still risky. Instead, check for mode
> change under sync_buff_lock.
> 
> 	Make sure the backup socks do not block on reading.
> 
> Special thanks to Aleksey Chudov for helping in all tests.

[snip]

> @@ -397,31 +392,10 @@ get_curr_sync_buff(struct netns_ipvs *ipvs, unsigned long time)
>  	return sb;
>  }
>  
> -/*
> - * Switch mode from sending version 0 or 1
> - *  - must handle sync_buf
> - */
> -void ip_vs_sync_switch_mode(struct net *net, int mode)
> +static inline int
> +select_master_thread_id(struct netns_ipvs *ipvs, struct ip_vs_conn *cp)
>  {
> -	struct netns_ipvs *ipvs = net_ipvs(net);
> -	struct ip_vs_sync_buff *sb;
> -
> -	spin_lock_bh(&ipvs->sync_buff_lock);
> -	if (!(ipvs->sync_state & IP_VS_STATE_MASTER))
> -		goto unlock;
> -	sb = ipvs->sync_buff;
> -	if (mode == sysctl_sync_ver(ipvs) || !sb)
> -		goto unlock;
> -
> -	/* Buffer empty ? then let buf_create do the job  */
> -	if (sb->mesg->size <= sizeof(struct ip_vs_sync_mesg)) {
> -		ip_vs_sync_buff_release(sb);
> -		ipvs->sync_buff = NULL;
> -	} else
> -		sb_queue_tail(ipvs);
> -
> -unlock:
> -	spin_unlock_bh(&ipvs->sync_buff_lock);
> +	return ((int) cp >> (1 + ilog2(sizeof(*cp)))) & ipvs->threads_mask;
>  }

Hi Julian,

My gcc running on x86_64 doesn't seem to like this cast.

# gcc --version
gcc (Debian 4.6.3-1) 4.6.3
# make
...
  CC      net/netfilter/ipvs/ip_vs_est.o
net/netfilter/ipvs/ip_vs_sync.c: In function ‘select_master_thread_id’:
net/netfilter/ipvs/ip_vs_sync.c:398:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

[snip]
--
To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Devel]     [Linux NFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]     [X.Org]

  Powered by Linux