[SSI] openssi/kernel/cluster/ssi/util rmtfb.c,1.36,1.37

Roger Tsang <[email protected]> Tue, 25 Jan 2011 06:09:59 +0000
Newsgroups gmane.linux.cluster.ssic.cvs
Message-ID <[email protected]>
Update of /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/util
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv25563/cluster/ssi/util

Modified Files:
      Tag: OPENSSI-FC
	rmtfb.c 
Log Message:
- __rmtfb_getcli_id: add comment before function.
- __rmtfb_getcli_id: use newly defined states for rfb_state field in rmtfb_cli structure.
- rmtfb_newcli: use newly defined states for rfb_state field in rmtfb_cli structure.


Index: rmtfb.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/util/rmtfb.c,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- rmtfb.c	25 Jan 2011 05:52:26 -0000	1.36
+++ rmtfb.c	25 Jan 2011 06:09:57 -0000	1.37
@@ -964,6 +964,18 @@
 }
 
 #ifdef RMTFB_HASH_LOCKLESS
+/**
+ * __rmtfb_getcli_id	- lookup rmtfb_cli structure
+ * @id - rfb_id to lookup.
+ * @sem - (optional) semaphore held by caller to be released by us upon
+ * successful lookup and prior waiting for rmtfb_setcli_re/open().
+ *
+ * On success returns with reference held on rmtfb_cli structure and on
+ * file structure in rfb_file field in rmtfb_cli structure. Otherwise
+ * returns NULL or error pointer.
+ *
+ * NOTE! Semaphore (@sem) is released when return value is non-NULL.
+ */
 static struct rmtfb_cli *
 __rmtfb_getcli_id(unsigned long id, struct semaphore *sem)
 {
@@ -984,20 +996,19 @@
 		rmtfb_putcli(rfb);
 		return NULL;
 	}
-	/* Got a valid rmtfb_cli structure */
+	/*
+	 * Wait for rmtfb_setcli_re/open()
+	 */
 	if (sem)
 		up(sem);
-
 	if (!atomic_read(&rfb->rfb_state)) {
 		curtask = current;
 		ssi_block_signals(curtask, &oldmask);
-		/* Wait for rmtfb_setcli_re/open() */
 		wait_event_interruptible(rfb->rfb_wait,
 					 atomic_read(&rfb->rfb_state));
 		ssi_unblock_signals(curtask, &oldmask);
 	}
-	if (unlikely(atomic_read(&rfb->rfb_state) == 2)) {
-		/* rmtfb_setcli_re/open() failed */
+	if (unlikely(atomic_read(&rfb->rfb_state) == RFB_FAIL)) {
 		fput(rfb->common.rfb_file);
 		rmtfb_putcli(rfb);
 		return ERR_PTR(-EREMOTE);
@@ -1488,7 +1499,7 @@
 			error = rmtfb_setcli_open(rfb);
 		if (unlikely(error)) {
 			SSI_ASSERT(error != -EINVAL);
-			atomic_set(&rfb->rfb_state, 2); /* stale */
+			atomic_set(&rfb->rfb_state, RFB_FAIL);
 			wake_up(&rfb->rfb_wait);
 			rmtfb_putcli(rfb);
 			goto out_bad;
@@ -1501,7 +1512,7 @@
 	file->private_data = rfb;
 	rmtfb_get(rfb);
 
-	atomic_set(&rfb->rfb_state, 1); /* ready */
+	atomic_set(&rfb->rfb_state, RFB_READY);
 	wake_up(&rfb->rfb_wait);
 out:
 #ifdef RFBDEBUG


------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires 
February 28th, so secure your free ArcSight Logger TODAY! 
http://p.sf.net/sfu/arcsight-sfd2d