[Ocfs2-commits] mfasheh commits r918 - in trunk/src: . inc

svn-commits at oss.oracle.com svn-commits at oss.oracle.com
Mon May 17 17:15:18 CDT 2004


Author: mfasheh
Date: 2004-05-17 16:15:17 -0500 (Mon, 17 May 2004)
New Revision: 918

Modified:
   trunk/src/alloc.c
   trunk/src/inc/ocfs.h
   trunk/src/osb.c
Log:
* add a local_alloc_sem to protect the local alloc fields. Right now
  it's pretty much hidden behind trans_lock, but when that goes, we'll
  need a way to protect that information.



Modified: trunk/src/alloc.c
===================================================================
--- trunk/src/alloc.c	2004-05-17 19:28:12 UTC (rev 917)
+++ trunk/src/alloc.c	2004-05-17 21:15:17 UTC (rev 918)
@@ -3878,9 +3878,11 @@
 		use_global = 0;
 
 	if (!use_global) {
+		down(&osb->local_alloc_sem);
 		status = ocfs_find_space_from_local(osb, bitswanted, 
 						    cluster_off, cluster_count,
 						    handle);
+		up(&osb->local_alloc_sem);
 		/* If we've run out of space for our local alloc, lets
 		 * try the global one just in case... */
 		if (status == -ENOSPC)
@@ -3987,7 +3989,7 @@
 		       in_recovery ? "true" : "false");
 
 
-	if (!osb->have_local_alloc)
+	if (!osb->have_local_alloc && (!in_recovery))
 		return;
 
 	if (local_alloc_bh)

Modified: trunk/src/inc/ocfs.h
===================================================================
--- trunk/src/inc/ocfs.h	2004-05-17 19:28:12 UTC (rev 917)
+++ trunk/src/inc/ocfs.h	2004-05-17 21:15:17 UTC (rev 918)
@@ -1856,8 +1856,9 @@
 	struct list_head lock_recovery_lists[OCFS_MAXIMUM_NODES];
 	__u64 last_publ_seq_num[OCFS_MAXIMUM_NODES];
 	int have_local_alloc;
-	/* Protected by the trans_lock. */
 	struct buffer_head *local_alloc_bh;
+	/* Protects local alloc */
+	struct semaphore local_alloc_sem;
 	ocfs_inode_hash inode_hash;
 	struct semaphore extend_sem;
 	__u8 check_mounted; /* tell nm to check mounted flag, protected by publish_lock*/

Modified: trunk/src/osb.c
===================================================================
--- trunk/src/osb.c	2004-05-17 19:28:12 UTC (rev 917)
+++ trunk/src/osb.c	2004-05-17 21:15:17 UTC (rev 918)
@@ -75,6 +75,7 @@
 	init_MUTEX (&(osb->vote_sem));
 	init_MUTEX (&(osb->node_alloc_sem));
 	init_MUTEX (&(osb->vol_alloc_sem));
+	init_MUTEX (&(osb->local_alloc_sem));
 
 	spin_lock_init(&osb->recovery_map_lock);
 	osb->recovery_map = 0;



More information about the Ocfs2-commits mailing list