[SSI] openssi/kernel/include/cluster/ssi/util rmtfb.h,1.9,1.10

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

Modified Files:
      Tag: OPENSSI-FC
	rmtfb.h 
Log Message:
* RMTFB:
- Allocate from slab rmtfb_cli / rmtfb_svr structs. (#ifdef RMTFB_KMEM_CACHE)
- rmtfb_remote_tty_ino() is no longer inlined. (#ifdef
  REOP_EXPORT_PATH_SVRNODE)
- Rename cluster/ssi/util/rmtfb.c:hash() to rfbhash(). Use Linux hashing
  routine.
- Split rmtfb_set_bit() into itself and rmtfb_clear_bit().

* RMTFB (#ifdef RMTFB_HASH_LOCKLESS):
- Implement lockless rfb_hash list traversal. Remove locks in various rmtfb_*
  code paths. Reduce latency in pipes, etc.
- Fix file struct leak on server when client lost race with another
  rmtfb_newcli().

* RMTFB (#ifdef RMTFB_REFCNT_FIX):
- Consolidate rfb_refcnt in rmtfb_cli / rmtfb_svr structs into rmtfb_cmn
  struct.

 cluster/ssi/util/rmtfb.c         |  629 +++++++++++++++++++++++++++----
 cluster/ssi/util/rmtsock.c       |    4 
 cluster/ssi/util/ssidev.c        |    2 
 cluster/ssi/vproc/dvp_pvpops.c   |    2 
 fs/fifo.c                        |   13 
 include/cluster/ssi/util/rmtfb.h |   31 -
 include/linux/config.h           |    7 
 7 files changed, 594 insertions(+), 94 deletions(-)


Index: rmtfb.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/cluster/ssi/util/rmtfb.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- rmtfb.h	17 Dec 2009 06:43:51 -0000	1.9
+++ rmtfb.h	5 Mar 2010 05:44:40 -0000	1.10
@@ -37,33 +37,38 @@
 
 #define ERFB_TRYAGAIN	750
 
-#if 0
-#define ulbits (sizeof(unsigned long))
-#define rfb_clients_len ((NSC_MAX_NODE_VALUE + ulbits - 1) / ulbits)
-#endif
-#define rfb_clients_len BITS_TO_LONGS(NSC_MAX_NODE_VALUE)
+#define rfb_clients_nbits NSC_MAX_NODE_VALUE
+#define rfb_clients_len BITS_TO_LONGS(rfb_clients_nbits)
 
 struct rmtfb_cmn {
 	struct list_head	rfb_hash;
+#ifdef RMTFB_HASH_LOCKLESS
+	spinlock_t		rfb_lock;
+#define rfb_rlock common.rfb_lock
+#endif
+#ifdef RMTFB_KMEM_CACHE
+	struct rcu_head		rfb_rcu;
+#define rfb_rhead common.rfb_rcu
+#endif
 	struct file		*rfb_file;	/* associated file block */
 	unsigned long		rfb_id;		/* clusterwide unique ID */
+#ifdef RMTFB_REFCNT_FIX
+	atomic_t		rfb_ref_cnt;	/* transient references */
+#define rfb_refcnt common.rfb_ref_cnt
+#endif
 };
 
 struct rmtfb_svr {
 	struct rmtfb_cmn	common;		/* must be first */
+#ifndef RMTFB_REFCNT_FIX
 	atomic_t		rfb_refcnt;	/* transient references */
-#if 0
-	unsigned long		rfb_clients[rfb_clients_len];
-						/* client node bitmap */
 #endif
-	DECLARE_BITMAP(rfb_clients, NSC_MAX_NODE_VALUE);
+	DECLARE_BITMAP(rfb_clients, rfb_clients_nbits);
+						/* client node bitmap */
 };
 
 struct rmtfb_cli {
 	struct rmtfb_cmn	common;		/* must be first */
-#ifdef RMTFB_REFCNT_FIX
-	atomic_t		rfb_refcnt;	/* transient references */
-#endif
 	u32			rfb_magic;	/* hocus pocus */
 	clusternode_t		rfb_server;	/* fb server node */
 };
@@ -77,8 +82,10 @@
 struct rmtfb_cli *ftocli(struct file *file);
 #endif
 
+#ifdef SSI_NOTUSED
 /* support for unique number server */
 void rmtfb_getids(struct list_head *ids, unsigned long min);
+#endif
 
 struct rmtfb_svr *rmtfb_getsvr_file(struct file *file);
 struct rmtfb_svr *rmtfb_getsvr_handle(struct rmtfb_svrhandle *svrhandle);


------------------------------------------------------------------------------
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