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