diff options
author | Alex Gorrod <alexg@wiredtiger.com> | 2014-06-19 15:03:21 +1000 |
---|---|---|
committer | Alex Gorrod <alexg@wiredtiger.com> | 2014-06-19 15:03:21 +1000 |
commit | f8ac98d387c0b73a1d419dfc6df94d0bd8b0cd5f (patch) | |
tree | b4352effc1f3a310c68510262a4be47ef5d1ac94 | |
parent | 372c5fa482ae9b793fe7a0e9010f67c402bde64f (diff) | |
parent | 4ccc71b548b392d99883042a052ff9d27d6d34da (diff) | |
download | mongo-f8ac98d387c0b73a1d419dfc6df94d0bd8b0cd5f.tar.gz |
Merge pull request #1077 from wiredtiger/lsm_lock_flag
LSM tree lock flag
-rw-r--r-- | src/lsm/lsm_cursor.c | 4 | ||||
-rw-r--r-- | src/lsm/lsm_tree.c | 16 |
2 files changed, 10 insertions, 10 deletions
diff --git a/src/lsm/lsm_cursor.c b/src/lsm/lsm_cursor.c index 32fb6153e56..6270d1e966c 100644 --- a/src/lsm/lsm_cursor.c +++ b/src/lsm/lsm_cursor.c @@ -430,7 +430,6 @@ __clsm_open_cursors( WT_ERR(__wt_lsm_tree_lock(session, lsm_tree, 0)); locked = 1; } - F_SET(session, WT_SESSION_NO_CACHE_CHECK); /* Merge cursors have already figured out how many chunks they need. */ retry: if (F_ISSET(clsm, WT_CLSM_MERGE)) { @@ -619,7 +618,8 @@ retry: if (F_ISSET(clsm, WT_CLSM_MERGE)) { } clsm->dsk_gen = lsm_tree->dsk_gen; -err: F_CLR(session, WT_SESSION_NO_CACHE_CHECK); + +err: #ifdef HAVE_DIAGNOSTIC /* Check that all cursors are open as expected. */ if (ret == 0 && F_ISSET(clsm, WT_CLSM_OPEN_READ)) { diff --git a/src/lsm/lsm_tree.c b/src/lsm/lsm_tree.c index 954e8d8dce9..14e179fbaeb 100644 --- a/src/lsm/lsm_tree.c +++ b/src/lsm/lsm_tree.c @@ -981,16 +981,17 @@ int __wt_lsm_tree_lock( WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree, int exclusive) { + if (exclusive) + WT_RET(__wt_writelock(session, lsm_tree->rwlock)); + else + WT_RET(__wt_readlock(session, lsm_tree->rwlock)); + /* * Diagnostic: avoid deadlocks with the schema lock: if we need it for * an operation, we should already have it. */ - F_SET(session, WT_SESSION_NO_SCHEMA_LOCK); - - if (exclusive) - return (__wt_writelock(session, lsm_tree->rwlock)); - else - return (__wt_readlock(session, lsm_tree->rwlock)); + F_SET(session, WT_SESSION_NO_CACHE_CHECK | WT_SESSION_NO_SCHEMA_LOCK); + return (0); } /* @@ -1001,8 +1002,7 @@ int __wt_lsm_tree_unlock( WT_SESSION_IMPL *session, WT_LSM_TREE *lsm_tree) { - F_CLR(session, WT_SESSION_NO_SCHEMA_LOCK); - + F_CLR(session, WT_SESSION_NO_CACHE_CHECK | WT_SESSION_NO_SCHEMA_LOCK); return (__wt_rwunlock(session, lsm_tree->rwlock)); } |