 + * @fs: 
 + * @jid: 
 + * 
-+ * actually may only need to set first byte to zero
-+ * 
-+ * Returns: int
-+ */
-+int
-+release_JID (gulm_fs_t * fs, uint32_t jid, int nop)
++ * This is called when a node replays someone else's journal.
++ * 
++ */
++void
++release_JID (gulm_fs_t * fs, uint32_t jid)
 +{
 +	uint8_t key[GIO_KEY_SIZE], lvb[64];
 +	uint16_t keylen = GIO_KEY_SIZE;
 +
 +	/* there is no such, so this becomes a nop. */
 +	if (jid >= fs->JIDcount)
-+		goto exit;
++		return;
 +
 +	jid_get_lock_name (fs->fs_name, jid, key, &keylen);
++	jid_get_lock_state_inr (key, keylen, lg_lock_state_Exclusive,
++				lg_lock_flag_IgnoreExp, lvb, 64);
++	if (lvb[0] == 1 ) {
++		/* if byte0 is 2, then that node is alive.  They're waiting
++		 * for us to finish, but once we're done, it would be mean
++		 * to mark their jid as free.  So we leave the byte alone.
++		 *
++		 * Actually, If the byte isn't 1 (which means we are
++		 * replaying the journal) don't change it.
++		 *
++		 * Remind: 0 = free, 1 = replaying, 2 = owned.
++		 */
++		lvb[0] = 0;
++		jid_sync_lvb (key, keylen, lvb, strlen (&lvb[1]) + 2);
++	}
++	jid_get_lock_state (key, keylen, lg_lock_state_Unlock);
++
++}
++
++/**
++ * put_journalID - 
++ * @fs: 
++ * 
++ * This is called when this node unmounts.
++ * 
++ */
++void
++put_journalID (gulm_fs_t * fs)
++{
++	uint8_t key[GIO_KEY_SIZE], lvb[64];
++	uint16_t keylen = GIO_KEY_SIZE;
++
++	/* there is no such, so this becomes a nop. */
++	if (fs->fsJID >= fs->JIDcount)
++		return;
++
++	jid_get_lock_name (fs->fs_name, fs->fsJID, key, &keylen);
 +	jid_get_lock_state_inr (key, keylen, lg_lock_state_Exclusive,
 +				lg_lock_flag_IgnoreExp, lvb, 64);
 +	lvb[0] = 0;
 +	jid_sync_lvb (key, keylen, lvb, strlen (&lvb[1]) + 2);
 +	jid_get_lock_state (key, keylen, lg_lock_state_Unlock);
-+
-+      exit:
-+	return 0;
-+}
-+
-+void
-+put_journalID (gulm_fs_t * fs)
-+{
-+	release_JID (fs, fs->fsJID, TRUE);
 +}
 +
 +/**

+/* vim: set ai cin noet sw=8 ts=8 : */
diff -urN linux-orig/fs/gfs_locking/lock_gulm/gulm_jid.c linux-patched/fs/gfs_locking/lock_gulm/gulm_jid.c
--- linux-orig/fs/gfs_locking/lock_gulm/gulm_jid.c	1969-12-31 18:00:00.000000000 -0600
+++ linux-patched/fs/gfs_locking/lock_gulm/gulm_jid.c	2004-10-22 11:54:55.000000000 -0500
@@ -0,0 +1,739 @@
+/******************************************************************************
+*******************************************************************************
+**

+/* vim: set ai cin noet sw=8 ts=8 : */
diff -urN linux-orig/fs/gfs_locking/lock_gulm/gulm_log_msg_bits.h linux-patched/fs/gfs_locking/lock_gulm/gulm_log_msg_bits.h
--- linux-orig/fs/gfs_locking/lock_gulm/gulm_log_msg_bits.h	1969-12-31 18:00:00.000000000 -0600
+++ linux-patched/fs/gfs_locking/lock_gulm/gulm_log_msg_bits.h	2004-11-02 11:00:54.000000000 -0600
@@ -0,0 +1,40 @@
+/******************************************************************************
+*******************************************************************************
