[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