[SSI] openssi/kernel/cluster/ssi/vproc dvp_vpops.c,1.45,1.46

Roger Tsang <[email protected]> Mon, 25 Oct 2010 05:04:30 +0000
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/vproc
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv2504/cluster/ssi/vproc

Modified Files:
      Tag: OPENSSI-FC
	dvp_vpops.c 
Log Message:
VPROC (#ifdef TASK_HOLD_VPROC):
- Optimize away extra is_loadlevelable() call in ssi_do_execve() path. Affects execve(2) and rexecve(2).
- In is_loadlevelable() optimize away vproc_is_loadlevelable() call where applicable.

VPROC (#ifdef VPROC_LOCKING_CONTEXT_FIX):
- Reduce FLAG LOCK critical section in vpop_setup_vproc_relations(). Elements inside FLAG LOCK are already protected by VPROC LOCK. This fix places vproc_is_loadlevelable() outside FLAG LOCK.

 cluster/ssi/util/load_level.c |   34 ++++++++++++++++++++++++----------
 cluster/ssi/vproc/dvp_vpops.c |   14 ++++++++++----
 fs/exec.c                     |   12 +++---------
 3 files changed, 37 insertions(+), 23 deletions(-)


Index: dvp_vpops.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/vproc/dvp_vpops.c,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -d -r1.45 -r1.46
--- dvp_vpops.c	21 Mar 2010 05:25:09 -0000	1.45
+++ dvp_vpops.c	25 Oct 2010 05:04:28 -0000	1.46
@@ -407,9 +407,6 @@
 	pvc->pvp_head_childl = NULL;	/* child has no children */
 #endif /* !VPROC_PVP_CHILD_LL */
 	VPROC_UNLOCK_ND_LIST_EXCL(pp, "vpop_fork");
-#ifdef VPROC_LOCKING_CONTEXT_FIX
-	VPROC_LOCK_FLAG(vc, "vpop_fork");
-#endif
 	pvc->pvp_ppid = pp->vp_pid;	/* set child's parent id */
 	pvc->pvp_pgid = pvp->pvp_pgid;	/* child's pgrp is parent's */
 	pvc->pvp_sid = pvp->pvp_sid;	/* child's session is parent's */
@@ -462,10 +459,19 @@
         pvc->pvp_pgrp_mem_seqno = parent_seqno; /* orig value from parent */
 	
 	/* Set if thread group leader */
-	if (!(local_flags & CLONE_THREAD))
+	if (!(local_flags & CLONE_THREAD)) {
+#ifdef VPROC_LOCKING_CONTEXT_FIX
+		VPROC_LOCK_FLAG(vc, "vpop_fork");
+#endif
 		pvc->pvp_flag |= PV_IS_TGID;
+#ifdef VPROC_LOCKING_CONTEXT_FIX
+		VPROC_UNLOCK_FLAG(vc, "vpop_fork");
+#endif
+	}
 
+#ifndef VPROC_LOCKING_CONTEXT_FIX
 	VPROC_UNLOCK_FLAG(vc, "vpop_fork");
+#endif
 
 	if (pvp->pvp_pgid != 0) {
 		/*


------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev