[SSI] openssi/kernel/include/cluster/ssi/ipc shm.h,1.14,1.15

Roger Tsang <[email protected]> Mon, 29 Mar 2010 06:17:02 +0000
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/include/cluster/ssi/ipc
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv16378/kernel/include/cluster/ssi/ipc

Modified Files:
      Tag: OPENSSI-FC
	shm.h 
Log Message:
IPC:
- Optimize away redundant initialization in newseg() and do_ssi_shm_noclients().
- Initialize shm_node inside newseg(). Optimize away shm_un/lock() dance.
- Test shm_sem_owned() shm_ids.sem semaphore in ssi_shm_noclients().
- Fix shmctl(IPC_RMID) was not setting SHM_DEST flag on other clients in the cluster.
- Fix IPC id 0 race. ipc_get_locks() / ipc_drop_locks() skipped id 0.

IPC (#ifdef IPC_SHM_RACE_FIX):
- Fix shm_svr_addid() array bounds violation when /proc/sys/kernel/shmmni is greater than 4096 (SHMNMI).
- Fix dereferencing invalid shm_kernel_svr structure after calling ssi_shm_noclients().
- Fix do_ssi_shm_noclients() remote clients did not wait for server to failover.

 cluster/ssi/ipc/ipcmsg_svr.c   |    4 
 cluster/ssi/ipc/ipcsem_svr.c   |    4 
 cluster/ssi/ipc/ipcshm_svr.c   |  114 +++++++------
 cluster/ssi/ipc/namesvr_func.c |    8 
 include/cluster/ssi/ipc/shm.h  |    3 
 ipc/shm.c                      |  281 ++++++++++++++++++---------------
 ipc/util.c                     |    9 -
 ipc/util.h                     |    2 
 8 files changed, 235 insertions(+), 190 deletions(-)


Index: shm.h
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/include/cluster/ssi/ipc/shm.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- shm.h	21 Mar 2010 05:33:50 -0000	1.14
+++ shm.h	29 Mar 2010 06:17:00 -0000	1.15
@@ -35,7 +35,7 @@
 extern int is_shm_mmap(struct dentry *, int);
 extern int is_shmem_inode(struct inode *);
 extern struct dentry * ssi_shm_setup(clusternode_t, long, int, key_t);
-extern int ssi_shm_noclients(struct shmid_kernel *, int, int, int);
+extern int ssi_shm_noclients(struct shmid_kernel *, int);
 extern int ssi_shm_cleanup(clusternode_t, int, clusternode_t);
 extern int shm_svr_create(struct shmid_kernel *, int, size_t, key_t, int);
 extern void shm_svr_unregister(int, clusternode_t);
@@ -57,6 +57,7 @@
 extern struct shmid_kernel_svr * shm_svr_lock(int);
 extern void shm_svr_unlock(struct shmid_kernel_svr *);
 #endif
+extern int shm_sem_owned(void);
 extern struct shmid_kernel_svr * shm_svr_get(int);
 extern struct shmid_kernel * shm_cli_get(int);
 extern int ipcname_failover_create(key_t, int, int, clusternode_t, int);


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