[SSI] openssi/kernel/include/cluster/ssi unix.h,1.17,1.18

Roger Tsang <[email protected]> Fri, 05 Mar 2010 06:20:48 +0000
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/include/cluster/ssi
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv7491/kernel/include/cluster/ssi

Modified Files:
      Tag: OPENSSI-FC
	unix.h 
Log Message:
RMTUNIX (#ifdef IPC_STALE_RMTUNIX_CACHE_FIX):
- Optimize away rsk_spinlock in rmtunix_socket_info struct reference counting
  code. Use atomic_test_and_add().

RMTUNIX (#ifdef RMTUNIX_SOCK_INFO_CACHE):
- Regression:
  - rmtunixsvr_stream_connect_callback() error path calling kfree() on
    kmem_cache object.
  - ssi_unix_find_socket_byinode() error path calling kfree() on kmem_cache
    object.
  - ssi_unix_find_socket_byname() error path calling kfree() on kmem_cache
    object.

 cluster/ssi/ipc/rmtunix.c        |   19 +++++++--------
 include/cluster/ssi/ipc/unixnm.h |   39 +++++++------------------------
 include/cluster/ssi/unix.h       |   16 +++++++++++-
 3 files changed, 32 insertions(+), 42 deletions(-)


Index: unix.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/cluster/ssi/unix.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- unix.h	27 Oct 2009 03:18:30 -0000	1.17
+++ unix.h	5 Mar 2010 06:20:46 -0000	1.18
@@ -383,7 +383,11 @@
 	unixnm_put(sock);
 }
 
-static inline unix_socket *
+#ifdef RMTUNIX_SOCK_INFO_CACHE
+extern void rmtunix_free(struct rcu_head *);
+#endif
+
+static unix_socket *
 ssi_unix_find_socket_byinode(struct inode *i, int type, int *error)
 {
 	struct rmtunix_socket_info *info;
@@ -402,13 +406,17 @@
 	return (unix_socket *)info;
 
 free_fail:
+#ifdef RMTUNIX_SOCK_INFO_CACHE
+	rmtunix_free(&info->rhead);
+#else
 	kfree(info);
+#endif
 fail:
 	*error = err;
 	return NULL;
 }
 
-static inline unix_socket *
+static unix_socket *
 ssi_unix_find_socket_byname(struct sockaddr_un *sunname,
 			    int len, int type, unsigned hash,
 			    int *error)
@@ -430,7 +438,11 @@
 	return (unix_socket *)info;
 
 free_fail:
+#ifdef RMTUNIX_SOCK_INFO_CACHE
+	rmtunix_free(&info->rhead);
+#else
 	kfree(info);
+#endif
 fail:
 	*error = err;
 	return NULL;


------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev