Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
4c643e0e
Commit
4c643e0e
authored
Jan 18, 2007
by
marko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge r1239 from
branches/zip: Make mutex_own() work with UNIV_DEBUG, without UNIV_SYNC_DEBUG.
parent
a4b7a332
Changes
42
Hide whitespace changes
Inline
Side-by-side
Showing
42 changed files
with
87 additions
and
580 deletions
+87
-580
buf/buf0buf.c
buf/buf0buf.c
+1
-6
buf/buf0flu.c
buf/buf0flu.c
+0
-9
buf/buf0lru.c
buf/buf0lru.c
+3
-14
dict/dict0boot.c
dict/dict0boot.c
+0
-2
dict/dict0crea.c
dict/dict0crea.c
+0
-20
dict/dict0dict.c
dict/dict0dict.c
+1
-40
dict/dict0load.c
dict/dict0load.c
+0
-22
fil/fil0fil.c
fil/fil0fil.c
+1
-16
fsp/fsp0fsp.c
fsp/fsp0fsp.c
+5
-16
ha/ha0ha.c
ha/ha0ha.c
+3
-8
ibuf/ibuf0ibuf.c
ibuf/ibuf0ibuf.c
+1
-14
include/buf0buf.ic
include/buf0buf.ic
+2
-9
include/buf0flu.ic
include/buf0flu.ic
+1
-1
include/dict0dict.ic
include/dict0dict.ic
+0
-6
include/ha0ha.ic
include/ha0ha.ic
+0
-8
include/lock0lock.ic
include/lock0lock.ic
+0
-2
include/log0log.ic
include/log0log.ic
+0
-4
include/sync0rw.ic
include/sync0rw.ic
+1
-2
include/sync0sync.h
include/sync0sync.h
+14
-14
include/sync0sync.ic
include/sync0sync.ic
+7
-6
include/trx0sys.ic
include/trx0sys.ic
+0
-20
lock/lock0lock.c
lock/lock0lock.c
+3
-88
log/log0log.c
log/log0log.c
+1
-53
log/log0recv.c
log/log0recv.c
+3
-8
mem/mem0pool.c
mem/mem0pool.c
+0
-2
pars/pars0pars.c
pars/pars0pars.c
+1
-2
que/que0que.c
que/que0que.c
+0
-15
read/read0read.c
read/read0read.c
+4
-6
row/row0mysql.c
row/row0mysql.c
+5
-7
row/row0vers.c
row/row0vers.c
+1
-1
srv/srv0que.c
srv/srv0que.c
+0
-3
srv/srv0srv.c
srv/srv0srv.c
+0
-10
sync/sync0rw.c
sync/sync0rw.c
+1
-2
sync/sync0sync.c
sync/sync0sync.c
+20
-27
thr/thr0loc.c
thr/thr0loc.c
+0
-2
trx/trx0purge.c
trx/trx0purge.c
+1
-18
trx/trx0roll.c
trx/trx0roll.c
+0
-14
trx/trx0rseg.c
trx/trx0rseg.c
+0
-4
trx/trx0sys.c
trx/trx0sys.c
+0
-6
trx/trx0trx.c
trx/trx0trx.c
+0
-38
trx/trx0undo.c
trx/trx0undo.c
+5
-29
usr/usr0sess.c
usr/usr0sess.c
+2
-6
No files found.
buf/buf0buf.c
View file @
4c643e0e
...
...
@@ -802,9 +802,7 @@ buf_awe_map_page_to_frame(
{
buf_block_t
*
bck
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
block
);
if
(
block
->
frame
)
{
...
...
@@ -900,9 +898,7 @@ buf_block_make_young(
/*=================*/
buf_block_t
*
block
)
/* in: block to make younger */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
/* Note that we read freed_page_clock's without holding any mutex:
this is allowed since the result is used only in heuristics */
...
...
@@ -1635,10 +1631,9 @@ buf_page_init(
in units of a page */
buf_block_t
*
block
)
/* in: block to init */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
(
block
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
!=
BUF_BLOCK_FILE_PAGE
);
/* Set the state of the block */
...
...
buf/buf0flu.c
View file @
4c643e0e
...
...
@@ -48,10 +48,7 @@ buf_flush_insert_into_flush_list(
/*=============================*/
buf_block_t
*
block
)
/* in: block which is modified */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
ut_ad
((
UT_LIST_GET_FIRST
(
buf_pool
->
flush_list
)
==
NULL
)
...
...
@@ -77,9 +74,7 @@ buf_flush_insert_sorted_into_flush_list(
buf_block_t
*
prev_b
;
buf_block_t
*
b
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
prev_b
=
NULL
;
b
=
UT_LIST_GET_FIRST
(
buf_pool
->
flush_list
);
...
...
@@ -111,10 +106,8 @@ buf_flush_ready_for_replace(
buf_block_t
*
block
)
/* in: buffer control block, must be in state
BUF_BLOCK_FILE_PAGE and in the LRU list */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
block
->
mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
block
->
state
!=
BUF_BLOCK_FILE_PAGE
)
{
ut_print_timestamp
(
stderr
);
fprintf
(
stderr
,
...
...
@@ -147,10 +140,8 @@ buf_flush_ready_for_flush(
BUF_BLOCK_FILE_PAGE */
ulint
flush_type
)
/* in: BUF_FLUSH_LRU or BUF_FLUSH_LIST */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
(
block
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
if
((
ut_dulint_cmp
(
block
->
oldest_modification
,
ut_dulint_zero
)
>
0
)
...
...
buf/buf0lru.c
View file @
4c643e0e
...
...
@@ -549,9 +549,7 @@ buf_LRU_old_adjust_len(void)
ulint
new_len
;
ut_a
(
buf_pool
->
LRU_old
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
3
*
(
BUF_LRU_OLD_MIN_LEN
/
8
)
>
BUF_LRU_OLD_TOLERANCE
+
5
);
for
(;;)
{
...
...
@@ -593,6 +591,7 @@ buf_LRU_old_init(void)
{
buf_block_t
*
block
;
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_a
(
UT_LIST_GET_LEN
(
buf_pool
->
LRU
)
==
BUF_LRU_OLD_MIN_LEN
);
/* We first initialize all blocks in the LRU list as old and then use
...
...
@@ -624,9 +623,7 @@ buf_LRU_remove_block(
{
ut_ad
(
buf_pool
);
ut_ad
(
block
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
ut_a
(
block
->
in_LRU_list
);
...
...
@@ -690,9 +687,7 @@ buf_LRU_add_block_to_end_low(
ut_ad
(
buf_pool
);
ut_ad
(
block
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
...
...
@@ -755,9 +750,7 @@ buf_LRU_add_block_low(
ut_ad
(
buf_pool
);
ut_ad
(
block
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
ut_a
(
!
block
->
in_LRU_list
);
...
...
@@ -858,10 +851,9 @@ buf_LRU_block_free_non_file_page(
/*=============================*/
buf_block_t
*
block
)
/* in: block, must not contain a file page */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
block
->
mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
block
);
ut_a
((
block
->
state
==
BUF_BLOCK_MEMORY
)
...
...
@@ -898,10 +890,8 @@ buf_LRU_block_remove_hashed_page(
be in a state where it can be freed; there
may or may not be a hash index to the page */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
block
->
mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
block
);
ut_a
(
block
->
state
==
BUF_BLOCK_FILE_PAGE
);
...
...
@@ -961,10 +951,9 @@ buf_LRU_block_free_hashed_page(
buf_block_t
*
block
)
/* in: block, must contain a file page and
be in a state where it can be freed */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
buf_pool
->
mutex
)));
ut_ad
(
mutex_own
(
&
block
->
mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
block
->
state
==
BUF_BLOCK_REMOVE_HASH
);
block
->
state
=
BUF_BLOCK_MEMORY
;
...
...
dict/dict0boot.c
View file @
4c643e0e
...
...
@@ -86,9 +86,7 @@ dict_hdr_flush_row_id(void)
dulint
id
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
id
=
dict_sys
->
row_id
;
...
...
dict/dict0crea.c
View file @
4c643e0e
...
...
@@ -212,9 +212,7 @@ dict_build_table_def_step(
ulint
i
;
ulint
row_len
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
table
=
node
->
table
;
...
...
@@ -312,9 +310,7 @@ dict_create_sys_indexes_tuple(
dfield_t
*
dfield
;
byte
*
ptr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
index
&&
heap
);
sys_indexes
=
dict_sys
->
sys_indexes
;
...
...
@@ -512,9 +508,7 @@ dict_build_index_def_step(
dtuple_t
*
row
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
thr_get_trx
(
thr
);
...
...
@@ -585,9 +579,7 @@ dict_create_index_tree_step(
btr_pcur_t
pcur
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
index
=
node
->
index
;
table
=
node
->
table
;
...
...
@@ -642,10 +634,7 @@ dict_drop_index_tree(
byte
*
ptr
;
ulint
len
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
!
dict_table_is_comp
(
dict_sys
->
sys_indexes
));
ptr
=
rec_get_nth_field_old
(
rec
,
DICT_SYS_INDEXES_PAGE_NO_FIELD
,
&
len
);
...
...
@@ -718,10 +707,7 @@ dict_truncate_index_tree(
ulint
comp
;
dict_index_t
*
index
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
!
dict_table_is_comp
(
dict_sys
->
sys_indexes
));
rec
=
btr_pcur_get_rec
(
pcur
);
ptr
=
rec_get_nth_field_old
(
rec
,
DICT_SYS_INDEXES_PAGE_NO_FIELD
,
&
len
);
...
...
@@ -907,9 +893,7 @@ dict_create_table_step(
trx_t
*
trx
;
ut_ad
(
thr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
thr_get_trx
(
thr
);
...
...
@@ -1016,9 +1000,7 @@ dict_create_index_step(
trx_t
*
trx
;
ut_ad
(
thr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
thr_get_trx
(
thr
);
...
...
@@ -1440,9 +1422,7 @@ dict_create_add_foreigns_to_dictionary(
ulint
number
=
start_id
+
1
;
ulint
error
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
NULL
==
dict_table_get_low
(
"SYS_FOREIGN"
))
{
fprintf
(
stderr
,
...
...
dict/dict0dict.c
View file @
4c643e0e
...
...
@@ -689,9 +689,7 @@ dict_table_get_on_id(
if we are doing a rollback to handle an error in TABLE
CREATE, for example, we already have the mutex! */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
return
(
dict_table_get_on_id_low
(
table_id
));
}
...
...
@@ -854,9 +852,7 @@ dict_table_add_to_cache(
ulint
row_len
;
ut_ad
(
table
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
table
->
n_def
==
table
->
n_cols
-
DATA_N_SYS_COLS
);
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
ut_ad
(
table
->
cached
==
FALSE
);
...
...
@@ -1003,9 +999,7 @@ dict_table_rename_in_cache(
ibool
success
;
ut_ad
(
table
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
old_size
=
mem_heap_get_size
(
table
->
heap
);
...
...
@@ -1209,9 +1203,7 @@ dict_table_change_id_in_cache(
dulint
new_id
)
/* in: new id to set */
{
ut_ad
(
table
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
/* Remove the table from the hash table of id's */
...
...
@@ -1238,9 +1230,7 @@ dict_table_remove_from_cache(
ulint
size
;
ut_ad
(
table
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
#if 0
...
...
@@ -1354,9 +1344,7 @@ dict_index_add_to_cache(
ulint
i
;
ut_ad
(
index
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
index
->
n_def
==
index
->
n_fields
);
ut_ad
(
index
->
magic_n
==
DICT_INDEX_MAGIC_N
);
...
...
@@ -1452,9 +1440,7 @@ dict_index_remove_from_cache(
ut_ad
(
table
&&
index
);
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
ut_ad
(
index
->
magic_n
==
DICT_INDEX_MAGIC_N
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
rw_lock_free
(
&
index
->
lock
);
...
...
@@ -1484,9 +1470,7 @@ dict_index_find_cols(
ut_ad
(
table
&&
index
);
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
for
(
i
=
0
;
i
<
index
->
n_fields
;
i
++
)
{
ulint
j
;
...
...
@@ -1648,9 +1632,7 @@ dict_index_build_internal_clust(
ut_ad
(
table
&&
index
);
ut_ad
(
index
->
type
&
DICT_CLUSTERED
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
/* Create a new index object with certainly enough fields */
...
...
@@ -1803,9 +1785,7 @@ dict_index_build_internal_non_clust(
ut_ad
(
table
&&
index
);
ut_ad
(
0
==
(
index
->
type
&
DICT_CLUSTERED
));
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
table
->
magic_n
==
DICT_TABLE_MAGIC_N
);
/* The clustered index should be the first in the list of indexes */
...
...
@@ -1918,9 +1898,7 @@ dict_foreign_remove_from_cache(
/*===========================*/
dict_foreign_t
*
foreign
)
/* in, own: foreign constraint */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
foreign
);
if
(
foreign
->
referenced_table
)
{
...
...
@@ -1951,9 +1929,7 @@ dict_foreign_find(
{
dict_foreign_t
*
foreign
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
foreign
=
UT_LIST_GET_FIRST
(
table
->
foreign_list
);
...
...
@@ -2113,9 +2089,7 @@ dict_foreign_add_to_cache(
ibool
added_to_referenced_list
=
FALSE
;
FILE
*
ef
=
dict_foreign_err_file
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
for_table
=
dict_table_check_if_in_cache_low
(
foreign
->
foreign_table_name
);
...
...
@@ -2794,9 +2768,7 @@ dict_create_foreign_constraints_low(
const
char
*
column_names
[
500
];
const
char
*
referenced_table_name
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
table
=
dict_table_get_low
(
name
);
...
...
@@ -3425,9 +3397,7 @@ dict_foreign_parse_drop_constraints(
str
=
dict_strip_comments
(
*
(
trx
->
mysql_query_str
));
ptr
=
str
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
loop:
ptr
=
dict_scan_to
(
ptr
,
"DROP"
);
...
...
@@ -3864,9 +3834,7 @@ dict_foreign_print_low(
{
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
fprintf
(
stderr
,
" FOREIGN KEY CONSTRAINT %s: %s ("
,
foreign
->
id
,
foreign
->
foreign_table_name
);
...
...
@@ -3931,9 +3899,7 @@ dict_table_print_low(
dict_foreign_t
*
foreign
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
dict_update_statistics_low
(
table
,
TRUE
);
...
...
@@ -3989,9 +3955,7 @@ dict_col_print_low(
{
dtype_t
type
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
dict_col_copy_type
(
col
,
&
type
);
fprintf
(
stderr
,
"%s: "
,
dict_table_get_col_name
(
table
,
...
...
@@ -4011,9 +3975,7 @@ dict_index_print_low(
ib_longlong
n_vals
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
index
->
n_user_defined_cols
>
0
)
{
n_vals
=
index
->
stat_n_diff_key_vals
[
...
...
@@ -4061,9 +4023,8 @@ dict_field_print_low(
/*=================*/
dict_field_t
*
field
)
/* in: field */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
fprintf
(
stderr
,
" %s"
,
field
->
name
);
if
(
field
->
prefix_len
!=
0
)
{
...
...
dict/dict0load.c
View file @
4c643e0e
...
...
@@ -67,9 +67,7 @@ dict_get_first_table_name_in_db(
ulint
len
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
heap
=
mem_heap_create
(
1000
);
...
...
@@ -353,9 +351,7 @@ dict_load_columns(
ulint
i
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
...
...
@@ -478,11 +474,7 @@ dict_load_fields(
ulint
i
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
UT_NOT_USED
(
table
);
mtr_start
(
&
mtr
);
...
...
@@ -586,9 +578,7 @@ dict_load_indexes(
dulint
id
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
((
ut_dulint_get_high
(
table
->
id
)
==
0
)
&&
(
ut_dulint_get_low
(
table
->
id
)
<
DICT_HDR_FIRST_ID
))
{
...
...
@@ -754,9 +744,7 @@ dict_load_table(
ulint
err
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
heap
=
mem_heap_create
(
1000
);
...
...
@@ -920,9 +908,7 @@ dict_load_table_on_id(
dict_table_t
*
table
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
/* NOTE that the operation of this function is protected by
the dictionary mutex, and therefore no deadlocks can occur
...
...
@@ -1003,9 +989,7 @@ dict_load_sys_table(
{
mem_heap_t
*
heap
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
heap
=
mem_heap_create
(
1000
);
...
...
@@ -1035,9 +1019,7 @@ dict_load_foreign_cols(
ulint
i
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
foreign
->
foreign_col_names
=
mem_heap_alloc
(
foreign
->
heap
,
foreign
->
n_fields
*
sizeof
(
void
*
));
...
...
@@ -1113,9 +1095,7 @@ dict_load_foreign(
ulint
n_fields_and_type
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
heap2
=
mem_heap_create
(
1000
);
...
...
@@ -1243,9 +1223,7 @@ dict_load_foreigns(
ulint
err
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
sys_foreign
=
dict_table_get_low
(
"SYS_FOREIGN"
);
...
...
fil/fil0fil.c
View file @
4c643e0e
...
...
@@ -409,9 +409,7 @@ fil_space_is_flushed(
{
fil_node_t
*
node
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
fil_system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
node
=
UT_LIST_GET_FIRST
(
space
->
chain
);
...
...
@@ -514,9 +512,7 @@ fil_node_open_file(
ulint
space_id
;
#endif
/* !UNIV_HOTBACKUP */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
node
->
n_pending
==
0
);
ut_a
(
node
->
open
==
FALSE
);
...
...
@@ -660,9 +656,7 @@ fil_node_close_file(
ibool
ret
;
ut_ad
(
node
&&
system
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
node
->
open
);
ut_a
(
node
->
n_pending
==
0
);
ut_a
(
node
->
n_pending_flushes
==
0
);
...
...
@@ -705,9 +699,8 @@ fil_try_to_close_file_in_LRU(
fil_system_t
*
system
=
fil_system
;
fil_node_t
*
node
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
node
=
UT_LIST_GET_LAST
(
system
->
LRU
);
if
(
print_info
)
{
...
...
@@ -765,9 +758,7 @@ fil_mutex_enter_and_prepare_for_io(
ulint
count
=
0
;
ulint
count2
=
0
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
retry:
mutex_enter
(
&
(
system
->
mutex
));
...
...
@@ -881,9 +872,7 @@ fil_node_free(
fil_space_t
*
space
)
/* in: space where the file node is chained */
{
ut_ad
(
node
&&
system
&&
space
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
node
->
magic_n
==
FIL_NODE_MAGIC_N
);
ut_a
(
node
->
n_pending
==
0
);
...
...
@@ -3870,9 +3859,7 @@ fil_node_prepare_for_io(
fil_space_t
*
space
)
/* in: space */
{
ut_ad
(
node
&&
system
&&
space
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
system
->
n_open
>
system
->
max_n_open
+
5
)
{
ut_print_timestamp
(
stderr
);
...
...
@@ -3917,9 +3904,7 @@ fil_node_complete_io(
{
ut_ad
(
node
);
ut_ad
(
system
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
system
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
node
->
n_pending
>
0
);
...
...
fsp/fsp0fsp.c
View file @
4c643e0e
...
...
@@ -2045,11 +2045,9 @@ fseg_create_general(
mtr
);
}
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
latch
=
fil_space_get_latch
(
space
);
mtr_x_lock
(
latch
,
mtr
);
...
...
@@ -2205,11 +2203,10 @@ fseg_n_reserved_pages(
space
=
buf_frame_get_space_id
(
header
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_x_lock
(
fil_space_get_latch
(
space
),
mtr
);
inode
=
fseg_inode_get
(
header
,
mtr
);
...
...
@@ -2601,11 +2598,9 @@ fseg_alloc_free_page_general(
space
=
buf_frame_get_space_id
(
seg_header
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
latch
=
fil_space_get_latch
(
space
);
mtr_x_lock
(
latch
,
mtr
);
...
...
@@ -2751,11 +2746,9 @@ fsp_reserve_free_extents(
ulint
n_pages_added
;
ut_ad
(
mtr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
*
n_reserved
=
n_ext
;
latch
=
fil_space_get_latch
(
space
);
...
...
@@ -2853,9 +2846,8 @@ fsp_get_available_space_in_free_extents(
rw_lock_t
*
latch
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
latch
=
fil_space_get_latch
(
space
);
...
...
@@ -3113,11 +3105,10 @@ fseg_free_page(
{
fseg_inode_t
*
seg_inode
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_x_lock
(
fil_space_get_latch
(
space
),
mtr
);
seg_inode
=
fseg_inode_get
(
seg_header
,
mtr
);
...
...
@@ -3222,11 +3213,10 @@ fseg_free_step(
space
=
buf_frame_get_space_id
(
header
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_x_lock
(
fil_space_get_latch
(
space
),
mtr
);
descr
=
xdes_get_descriptor
(
space
,
buf_frame_get_page_no
(
header
),
mtr
);
...
...
@@ -3297,11 +3287,10 @@ fseg_free_step_not_header(
space
=
buf_frame_get_space_id
(
header
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
)
||
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_x_lock
(
fil_space_get_latch
(
space
),
mtr
);
inode
=
fseg_inode_get
(
header
,
mtr
);
...
...
ha/ha0ha.c
View file @
4c643e0e
...
...
@@ -96,9 +96,8 @@ ha_insert_for_fold(
ulint
hash
;
ut_ad
(
table
&&
data
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
table
->
mutexes
||
mutex_own
(
hash_get_mutex
(
table
,
fold
)));
#endif
/* UNIV_SYNC_DEBUG */
hash
=
hash_calc_hash
(
fold
,
table
);
cell
=
hash_get_nth_cell
(
table
,
hash
);
...
...
@@ -194,9 +193,8 @@ ha_delete(
{
ha_node_t
*
node
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
table
->
mutexes
||
mutex_own
(
hash_get_mutex
(
table
,
fold
)));
#endif
/* UNIV_SYNC_DEBUG */
node
=
ha_search_with_data
(
table
,
fold
,
data
);
ut_a
(
node
);
...
...
@@ -218,9 +216,7 @@ ha_search_and_update_if_found(
{
ha_node_t
*
node
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
table
->
mutexes
||
mutex_own
(
hash_get_mutex
(
table
,
fold
)));
#endif
/* UNIV_SYNC_DEBUG */
node
=
ha_search_with_data
(
table
,
fold
,
data
);
...
...
@@ -248,9 +244,8 @@ ha_remove_all_nodes_to_page(
{
ha_node_t
*
node
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
table
->
mutexes
||
mutex_own
(
hash_get_mutex
(
table
,
fold
)));
#endif
/* UNIV_SYNC_DEBUG */
node
=
ha_chain_get_first
(
table
,
fold
);
while
(
node
)
{
...
...
ibuf/ibuf0ibuf.c
View file @
4c643e0e
...
...
@@ -417,9 +417,7 @@ ibuf_data_sizes_update(
{
ulint
old_size
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
ibuf_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
old_size
=
data
->
size
;
...
...
@@ -1576,9 +1574,7 @@ ibuf_data_enough_free_for_insert(
/* out: TRUE if enough free pages in list */
ibuf_data_t
*
data
)
/* in: ibuf data for the space */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
ibuf_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* We want a big margin of free pages, because a B-tree can sometimes
grow in size also if records are deleted from it, as the node pointers
...
...
@@ -1604,16 +1600,9 @@ ibuf_data_too_much_free(
/* out: TRUE if enough free pages in list */
ibuf_data_t
*
data
)
/* in: ibuf data for the space */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
ibuf_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
data
->
free_list_len
>=
3
+
data
->
size
/
2
+
3
*
data
->
height
)
{
return
(
TRUE
);
}
return
(
FALSE
);
return
(
data
->
free_list_len
>=
3
+
data
->
size
/
2
+
3
*
data
->
height
);
}
/*************************************************************************
...
...
@@ -3451,9 +3440,7 @@ ibuf_validate_low(void)
ibuf_data_t
*
data
;
ulint
sum_sizes
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
ibuf_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sum_sizes
=
0
;
...
...
include/buf0buf.ic
View file @
4c643e0e
...
...
@@ -128,9 +128,7 @@ buf_pool_clock_tic(void)
/*====================*/
/* out: new clock value */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(buf_pool->mutex)));
#endif /* UNIV_SYNC_DEBUG */
buf_pool->ulint_clock++;
...
...
@@ -456,7 +454,7 @@ buf_frame_modify_clock_inc(
#ifdef UNIV_SYNC_DEBUG
ut_ad((mutex_own(&(buf_pool->mutex)) && (block->buf_fix_count == 0))
|| rw_lock_own(&(block->lock), RW_LOCK_EXCLUSIVE));
#endif /*UNIV_SYNC_DEBUG */
#endif /*
UNIV_SYNC_DEBUG */
UT_DULINT_INC(block->modify_clock);
...
...
@@ -513,14 +511,12 @@ buf_block_buf_fix_inc_debug(
const char* file __attribute__ ((unused)), /* in: file name */
ulint line __attribute__ ((unused))) /* in: line */
{
#ifdef UNIV_SYNC_DEBUG
ibool ret;
ret = rw_lock_s_lock_func_nowait(&(block->debug_latch), file, line);
ut_ad(ret == TRUE);
ut_ad(mutex_own(&block->mutex));
#endif
block->buf_fix_count++;
}
#else /* UNIV_SYNC_DEBUG */
...
...
@@ -532,9 +528,8 @@ buf_block_buf_fix_inc(
/*==================*/
buf_block_t* block) /* in: block to bufferfix */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&block->mutex));
#endif
block->buf_fix_count++;
}
#endif /* UNIV_SYNC_DEBUG */
...
...
@@ -552,9 +547,7 @@ buf_page_hash_get(
ulint fold;
ut_ad(buf_pool);
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(buf_pool->mutex)));
#endif /* UNIV_SYNC_DEBUG */
/* Look for the page in the hash table */
...
...
include/buf0flu.ic
View file @
4c643e0e
...
...
@@ -42,8 +42,8 @@ buf_flush_note_modification(
ut_ad(block->buf_fix_count > 0);
#ifdef UNIV_SYNC_DEBUG
ut_ad(rw_lock_own(&(block->lock), RW_LOCK_EX));
ut_ad(mutex_own(&(buf_pool->mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(mutex_own(&(buf_pool->mutex)));
ut_ad(ut_dulint_cmp(mtr->start_lsn, ut_dulint_zero) != 0);
ut_ad(mtr->modifications);
...
...
include/dict0dict.ic
View file @
4c643e0e
...
...
@@ -551,9 +551,7 @@ dict_table_check_if_in_cache_low(
ulint table_fold;
ut_ad(table_name);
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(dict_sys->mutex)));
#endif /* UNIV_SYNC_DEBUG */
/* Look for the table name in the hash table */
table_fold = ut_fold_string(table_name);
...
...
@@ -576,9 +574,7 @@ dict_table_get_low(
dict_table_t* table;
ut_ad(table_name);
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(dict_sys->mutex)));
#endif /* UNIV_SYNC_DEBUG */
table = dict_table_check_if_in_cache_low(table_name);
...
...
@@ -601,9 +597,7 @@ dict_table_get_on_id_low(
dict_table_t* table;
ulint fold;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(dict_sys->mutex)));
#endif /* UNIV_SYNC_DEBUG */
/* Look for the table name in the hash table */
fold = ut_fold_dulint(table_id);
...
...
include/ha0ha.ic
View file @
4c643e0e
...
...
@@ -81,9 +81,7 @@ ha_search(
{
ha_node_t* node;
#ifdef UNIV_SYNC_DEBUG
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
#endif /* UNIV_SYNC_DEBUG */
node = ha_chain_get_first(table, fold);
...
...
@@ -113,9 +111,7 @@ ha_search_and_get_data(
{
ha_node_t* node;
#ifdef UNIV_SYNC_DEBUG
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
#endif /* UNIV_SYNC_DEBUG */
node = ha_chain_get_first(table, fold);
...
...
@@ -145,9 +141,7 @@ ha_search_with_data(
{
ha_node_t* node;
#ifdef UNIV_SYNC_DEBUG
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
#endif /* UNIV_SYNC_DEBUG */
node = ha_chain_get_first(table, fold);
...
...
@@ -177,9 +171,7 @@ ha_search_and_delete_if_found(
{
ha_node_t* node;
#ifdef UNIV_SYNC_DEBUG
ut_ad(!table->mutexes || mutex_own(hash_get_mutex(table, fold)));
#endif /* UNIV_SYNC_DEBUG */
node = ha_search_with_data(table, fold, data);
...
...
include/lock0lock.ic
View file @
4c643e0e
...
...
@@ -65,9 +65,7 @@ lock_clust_rec_some_has_impl(
{
dulint trx_id;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(index->type & DICT_CLUSTERED);
ut_ad(page_rec_is_user_rec(rec));
...
...
include/log0log.ic
View file @
4c643e0e
...
...
@@ -255,9 +255,7 @@ log_block_init(
{
ulint no;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(log_sys->mutex)));
#endif /* UNIV_SYNC_DEBUG */
no = log_block_convert_lsn_to_no(lsn);
...
...
@@ -279,9 +277,7 @@ log_block_init_in_old_format(
{
ulint no;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(log_sys->mutex)));
#endif /* UNIV_SYNC_DEBUG */
no = log_block_convert_lsn_to_no(lsn);
...
...
include/sync0rw.ic
View file @
4c643e0e
...
...
@@ -133,9 +133,8 @@ rw_lock_s_lock_low(
const char* file_name, /* in: file name where lock requested */
ulint line) /* in: line where requested */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(rw_lock_get_mutex(lock)));
#endif /* UNIV_SYNC_DEBUG */
/* Check if the writer field is free */
if (UNIV_LIKELY(lock->writer == RW_LOCK_NOT_LOCKED)) {
...
...
include/sync0sync.h
View file @
4c643e0e
...
...
@@ -170,7 +170,16 @@ Checks that the mutex has been initialized. */
ibool
mutex_validate
(
/*===========*/
mutex_t
*
mutex
);
const
mutex_t
*
mutex
);
/**********************************************************************
Checks that the current thread owns the mutex. Works only
in the debug version. */
ibool
mutex_own
(
/*======*/
/* out: TRUE if owns */
const
mutex_t
*
mutex
);
/* in: mutex */
#endif
/* UNIV_DEBUG */
#ifdef UNIV_SYNC_DEBUG
/**********************************************************************
...
...
@@ -215,15 +224,6 @@ sync_thread_levels_empty_gen(
also purge_is_running mutex is
allowed */
/**********************************************************************
Checks that the current thread owns the mutex. Works only
in the debug version. */
ibool
mutex_own
(
/*======*/
/* out: TRUE if owns */
mutex_t
*
mutex
);
/* in: mutex */
/**********************************************************************
Gets the debug information for a reserved mutex. */
void
...
...
@@ -248,7 +248,7 @@ UNIV_INLINE
ulint
mutex_get_lock_word
(
/*================*/
mutex_t
*
mutex
);
/* in: mutex */
const
mutex_t
*
mutex
);
/* in: mutex */
#ifdef UNIV_SYNC_DEBUG
/**********************************************************************
NOT to be used outside this module except in debugging! Gets the waiters
...
...
@@ -258,7 +258,7 @@ ulint
mutex_get_waiters
(
/*==============*/
/* out: value to set */
mutex_t
*
mutex
);
/* in: mutex */
const
mutex_t
*
mutex
);
/* in: mutex */
#endif
/* UNIV_SYNC_DEBUG */
/*
...
...
@@ -479,13 +479,13 @@ struct mutex_struct {
#ifdef UNIV_SYNC_DEBUG
const
char
*
file_name
;
/* File where the mutex was locked */
ulint
line
;
/* Line where the mutex was locked */
os_thread_id_t
thread_id
;
/* Debug version: The thread id of the
thread which locked the mutex. */
ulint
level
;
/* Level in the global latching order */
#endif
/* UNIV_SYNC_DEBUG */
const
char
*
cfile_name
;
/* File name where mutex created */
ulint
cline
;
/* Line where created */
#ifdef UNIV_DEBUG
os_thread_id_t
thread_id
;
/* The thread id of the thread
which locked the mutex. */
ulint
magic_n
;
# define MUTEX_MAGIC_N (ulint)979585
#endif
/* UNIV_DEBUG */
...
...
include/sync0sync.ic
View file @
4c643e0e
...
...
@@ -168,9 +168,9 @@ UNIV_INLINE
ulint
mutex_get_lock_word(
/*================*/
mutex_t* mutex) /* in: mutex */
const
mutex_t* mutex) /* in: mutex */
{
volatile ulint* ptr;
/* declared volatile to ensure that
const volatile ulint* ptr;
/* declared volatile to ensure that
lock_word is loaded from memory */
ut_ad(mutex);
...
...
@@ -186,9 +186,9 @@ ulint
mutex_get_waiters(
/*==============*/
/* out: value to set */
mutex_t* mutex) /* in: mutex */
const
mutex_t* mutex) /* in: mutex */
{
volatile ulint* ptr;
/* declared volatile to ensure that
const volatile ulint* ptr;
/* declared volatile to ensure that
the value is read from memory */
ut_ad(mutex);
...
...
@@ -206,11 +206,11 @@ mutex_exit(
/*=======*/
mutex_t* mutex) /* in: pointer to mutex */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(mutex));
mutex->thread_id = ULINT_UNDEFINED
;
ut_d(mutex->thread_id = ULINT_UNDEFINED)
;
#ifdef UNIV_SYNC_DEBUG
sync_thread_reset_level(mutex);
#endif
mutex_reset_lock_word(mutex);
...
...
@@ -259,6 +259,7 @@ mutex_enter_func(
#endif /* UNIV_DEBUG && !UNIV_HOTBACKUP */
if (!mutex_test_and_set(mutex)) {
ut_d(mutex->thread_id = os_thread_get_curr_id());
#ifdef UNIV_SYNC_DEBUG
mutex_set_debug_info(mutex, file_name, line);
#endif
...
...
include/trx0sys.ic
View file @
4c643e0e
...
...
@@ -62,9 +62,7 @@ trx_sys_get_nth_rseg(
trx_sys_t* sys, /* in: trx system */
ulint n) /* in: index of slot */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(n < TRX_SYS_N_RSEGS);
return(sys->rseg_array[n]);
...
...
@@ -121,9 +119,7 @@ trx_sysf_rseg_get_space(
ulint i, /* in: slot index == rseg id */
mtr_t* mtr) /* in: mtr */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(sys_header);
ut_ad(i < TRX_SYS_N_RSEGS);
...
...
@@ -146,9 +142,7 @@ trx_sysf_rseg_get_page_no(
mtr_t* mtr) /* in: mtr */
{
ut_ad(sys_header);
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(i < TRX_SYS_N_RSEGS);
return(mtr_read_ulint(sys_header + TRX_SYS_RSEGS
...
...
@@ -168,9 +162,7 @@ trx_sysf_rseg_set_space(
ulint space, /* in: space id */
mtr_t* mtr) /* in: mtr */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(sys_header);
ut_ad(i < TRX_SYS_N_RSEGS);
...
...
@@ -194,9 +186,7 @@ trx_sysf_rseg_set_page_no(
slot is reset to unused */
mtr_t* mtr) /* in: mtr */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
ut_ad(sys_header);
ut_ad(i < TRX_SYS_N_RSEGS);
...
...
@@ -250,9 +240,7 @@ trx_get_on_id(
{
trx_t* trx;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
trx = UT_LIST_GET_FIRST(trx_sys->trx_list);
...
...
@@ -282,9 +270,7 @@ trx_list_get_min_trx_id(void)
{
trx_t* trx;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
trx = UT_LIST_GET_LAST(trx_sys->trx_list);
...
...
@@ -307,9 +293,7 @@ trx_is_active(
{
trx_t* trx;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&(kernel_mutex)));
#endif /* UNIV_SYNC_DEBUG */
if (ut_dulint_cmp(trx_id, trx_list_get_min_trx_id()) < 0) {
...
...
@@ -346,9 +330,7 @@ trx_sys_get_new_trx_id(void)
{
dulint id;
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */
/* VERY important: after the database is started, max_trx_id value is
divisible by TRX_SYS_TRX_ID_WRITE_MARGIN, and the following if
...
...
@@ -378,9 +360,7 @@ trx_sys_get_new_trx_no(void)
/*========================*/
/* out: new, allocated trx number */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad(mutex_own(&kernel_mutex));
#endif /* UNIV_SYNC_DEBUG */
return(trx_sys_get_new_trx_id());
}
lock/lock0lock.c
View file @
4c643e0e
...
...
@@ -1162,9 +1162,7 @@ lock_rec_get_next_on_page(
ulint
space
;
ulint
page_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
lock
)
==
LOCK_REC
);
space
=
lock
->
un_member
.
rec_lock
.
space
;
...
...
@@ -1201,9 +1199,7 @@ lock_rec_get_first_on_page_addr(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
HASH_GET_FIRST
(
lock_sys
->
rec_hash
,
lock_rec_hash
(
space
,
page_no
));
...
...
@@ -1261,9 +1257,7 @@ lock_rec_get_first_on_page(
ulint
space
;
ulint
page_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
hash
=
buf_frame_get_lock_hash_val
(
ptr
);
...
...
@@ -1295,9 +1289,7 @@ lock_rec_get_next(
rec_t
*
rec
,
/* in: record on a page */
lock_t
*
lock
)
/* in: lock */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
lock
)
==
LOCK_REC
);
if
(
page_rec_is_comp
(
rec
))
{
...
...
@@ -1326,9 +1318,7 @@ lock_rec_get_first(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
lock_rec_get_first_on_page
(
rec
);
if
(
UNIV_LIKELY_NULL
(
lock
))
{
...
...
@@ -1414,9 +1404,7 @@ lock_rec_get_prev(
ulint
page_no
;
lock_t
*
found_lock
=
NULL
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
in_lock
)
==
LOCK_REC
);
space
=
in_lock
->
un_member
.
rec_lock
.
space
;
...
...
@@ -1456,9 +1444,7 @@ lock_table_has(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* Look for stronger locks the same trx already has on the table */
...
...
@@ -1502,9 +1488,7 @@ lock_rec_has_expl(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
precise_mode
&
LOCK_MODE_MASK
)
==
LOCK_S
||
(
precise_mode
&
LOCK_MODE_MASK
)
==
LOCK_X
);
ut_ad
(
!
(
precise_mode
&
LOCK_INSERT_INTENTION
));
...
...
@@ -1552,9 +1536,7 @@ lock_rec_other_has_expl_req(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
mode
==
LOCK_X
||
mode
==
LOCK_S
);
ut_ad
(
gap
==
0
||
gap
==
LOCK_GAP
);
ut_ad
(
wait
==
0
||
wait
==
LOCK_WAIT
);
...
...
@@ -1594,9 +1576,8 @@ lock_rec_other_has_conflicting(
trx_t
*
trx
)
/* in: our transaction */
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
lock_rec_get_first
(
rec
);
...
...
@@ -1629,9 +1610,7 @@ lock_rec_find_similar_on_page(
lock_t
*
lock
;
ulint
heap_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
heap_no
=
rec_get_heap_no
(
rec
,
page_rec_is_comp
(
rec
));
lock
=
lock_rec_get_first_on_page
(
rec
);
...
...
@@ -1665,9 +1644,7 @@ lock_sec_rec_some_has_impl_off_kernel(
{
page_t
*
page
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
!
(
index
->
type
&
DICT_CLUSTERED
));
ut_ad
(
page_rec_is_user_rec
(
rec
));
ut_ad
(
rec_offs_validate
(
rec
,
index
,
offsets
));
...
...
@@ -1760,9 +1737,7 @@ lock_rec_create(
ulint
n_bits
;
ulint
n_bytes
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
page
=
buf_frame_align
(
rec
);
space
=
buf_frame_get_space_id
(
page
);
...
...
@@ -1842,9 +1817,7 @@ lock_rec_enqueue_waiting(
lock_t
*
lock
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* Test if there already is some other reason to suspend thread:
we do not enqueue a lock request if the query thread should be
...
...
@@ -1934,9 +1907,7 @@ lock_rec_add_to_queue(
ulint
heap_no
;
ibool
somebody_waits
=
FALSE
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
type_mode
&
(
LOCK_WAIT
|
LOCK_GAP
))
||
((
type_mode
&
LOCK_MODE_MASK
)
!=
LOCK_S
)
||
!
lock_rec_other_has_expl_req
(
LOCK_X
,
0
,
LOCK_WAIT
,
...
...
@@ -2017,9 +1988,7 @@ lock_rec_lock_fast(
ulint
heap_no
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_S
||
lock_table_has
(
thr_get_trx
(
thr
),
index
->
table
,
LOCK_IS
));
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_X
...
...
@@ -2102,9 +2071,7 @@ lock_rec_lock_slow(
trx_t
*
trx
;
ulint
err
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_S
||
lock_table_has
(
thr_get_trx
(
thr
),
index
->
table
,
LOCK_IS
));
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_X
...
...
@@ -2176,9 +2143,7 @@ lock_rec_lock(
{
ulint
err
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_S
||
lock_table_has
(
thr_get_trx
(
thr
),
index
->
table
,
LOCK_IS
));
ut_ad
((
LOCK_MODE_MASK
&
mode
)
!=
LOCK_X
...
...
@@ -2216,9 +2181,7 @@ lock_rec_has_to_wait_in_queue(
ulint
page_no
;
ulint
heap_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_wait
(
wait_lock
));
ut_ad
(
lock_get_type
(
wait_lock
)
==
LOCK_REC
);
...
...
@@ -2251,9 +2214,7 @@ lock_grant(
/*=======*/
lock_t
*
lock
)
/* in: waiting lock request */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock_reset_lock_and_trx_wait
(
lock
);
...
...
@@ -2298,9 +2259,7 @@ lock_rec_cancel(
/*============*/
lock_t
*
lock
)
/* in: waiting record lock request */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
lock
)
==
LOCK_REC
);
/* Reset the bit (there can be only one set bit) in the lock bitmap */
...
...
@@ -2333,9 +2292,7 @@ lock_rec_dequeue_from_page(
lock_t
*
lock
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
in_lock
)
==
LOCK_REC
);
trx
=
in_lock
->
trx
;
...
...
@@ -2378,9 +2335,7 @@ lock_rec_discard(
ulint
page_no
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
lock_get_type
(
in_lock
)
==
LOCK_REC
);
trx
=
in_lock
->
trx
;
...
...
@@ -2409,9 +2364,7 @@ lock_rec_free_all_from_discard_page(
lock_t
*
lock
;
lock_t
*
next_lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
space
=
buf_frame_get_space_id
(
page
);
page_no
=
buf_frame_get_page_no
(
page
);
...
...
@@ -2444,9 +2397,7 @@ lock_rec_reset_and_release_wait(
lock_t
*
lock
;
ulint
heap_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
heap_no
=
rec_get_heap_no
(
rec
,
page_rec_is_comp
(
rec
));
...
...
@@ -2477,9 +2428,8 @@ lock_rec_inherit_to_gap(
the locks on this record */
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
lock_rec_get_first
(
rec
);
...
...
@@ -2518,9 +2468,8 @@ lock_rec_inherit_to_gap_if_gap_lock(
the locks on this record */
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
lock_rec_get_first
(
rec
);
...
...
@@ -2554,9 +2503,7 @@ lock_rec_move(
ulint
heap_no
;
ulint
type_mode
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
heap_no
=
rec_get_heap_no
(
donator
,
comp
);
...
...
@@ -3228,9 +3175,7 @@ lock_deadlock_occurs(
ulint
cost
=
0
;
ut_ad
(
trx
&&
lock
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
retry:
/* We check that adding this trx to the waits-for graph
does not produce a cycle. First mark all active transactions
...
...
@@ -3302,9 +3247,7 @@ lock_deadlock_recursive(
ulint
ret
;
ut_a
(
trx
&&
start
&&
wait_lock
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
trx
->
deadlock_mark
==
1
)
{
/* We have already exhaustively searched the subtree starting
...
...
@@ -3472,9 +3415,7 @@ lock_table_create(
lock_t
*
lock
;
ut_ad
(
table
&&
trx
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
type_mode
==
LOCK_AUTO_INC
)
{
/* Only one trx can have the lock on the table
...
...
@@ -3519,9 +3460,7 @@ lock_table_remove_low(
dict_table_t
*
table
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
table
=
lock
->
un_member
.
tab_lock
.
table
;
trx
=
lock
->
trx
;
...
...
@@ -3555,9 +3494,7 @@ lock_table_enqueue_waiting(
lock_t
*
lock
;
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* Test if there already is some other reason to suspend thread:
we do not enqueue a lock request if the query thread should be
...
...
@@ -3630,9 +3567,7 @@ lock_table_other_has_incompatible(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
UT_LIST_GET_LAST
(
table
->
locks
);
...
...
@@ -3786,9 +3721,7 @@ lock_table_dequeue(
{
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
lock_get_type
(
in_lock
)
==
LOCK_TABLE
);
lock
=
UT_LIST_GET_NEXT
(
un_member
.
tab_lock
.
locks
,
in_lock
);
...
...
@@ -3930,9 +3863,7 @@ lock_release_off_kernel(
ulint
count
;
lock_t
*
lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
UT_LIST_GET_LAST
(
trx
->
trx_locks
);
...
...
@@ -3993,9 +3924,7 @@ lock_cancel_waiting_and_release(
/*============================*/
lock_t
*
lock
)
/* in: waiting lock request */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
lock_get_type
(
lock
)
==
LOCK_REC
)
{
...
...
@@ -4028,9 +3957,7 @@ lock_reset_all_on_table_for_trx(
lock_t
*
lock
;
lock_t
*
prev_lock
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
lock
=
UT_LIST_GET_LAST
(
trx
->
trx_locks
);
...
...
@@ -4091,9 +4018,7 @@ lock_table_print(
FILE
*
file
,
/* in: file where to print */
lock_t
*
lock
)
/* in: table type lock */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
lock_get_type
(
lock
)
==
LOCK_TABLE
);
fputs
(
"TABLE LOCK table "
,
file
);
...
...
@@ -4143,9 +4068,7 @@ lock_rec_print(
ulint
*
offsets
=
offsets_
;
*
offsets_
=
(
sizeof
offsets_
)
/
sizeof
*
offsets_
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
lock_get_type
(
lock
)
==
LOCK_REC
);
space
=
lock
->
un_member
.
rec_lock
.
space
;
...
...
@@ -4250,9 +4173,7 @@ lock_get_n_rec_locks(void)
ulint
n_locks
=
0
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
for
(
i
=
0
;
i
<
hash_get_n_cells
(
lock_sys
->
rec_hash
);
i
++
)
{
...
...
@@ -4492,9 +4413,7 @@ lock_table_queue_validate(
lock_t
*
lock
;
ibool
is_waiting
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
is_waiting
=
FALSE
;
...
...
@@ -4665,9 +4584,7 @@ lock_rec_validate_page(
ulint
*
offsets
=
offsets_
;
*
offsets_
=
(
sizeof
offsets_
)
/
sizeof
*
offsets_
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
...
...
@@ -4943,9 +4860,7 @@ lock_rec_convert_impl_to_expl(
{
trx_t
*
impl_trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
page_rec_is_user_rec
(
rec
));
ut_ad
(
rec_offs_validate
(
rec
,
index
,
offsets
));
ut_ad
(
!
page_rec_is_comp
(
rec
)
==
!
rec_offs_comp
(
offsets
));
...
...
log/log0log.c
View file @
4c643e0e
...
...
@@ -165,9 +165,7 @@ log_buf_pool_get_oldest_modification(void)
{
dulint
lsn
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
lsn
=
buf_pool_get_oldest_modification
();
...
...
@@ -269,9 +267,7 @@ log_write_low(
ulint
data_len
;
byte
*
log_block
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
part_loop:
/* Calculate a part length */
...
...
@@ -340,9 +336,7 @@ log_close(void)
log_t
*
log
=
log_sys
;
ulint
checkpoint_age
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
lsn
=
log
->
lsn
;
...
...
@@ -464,9 +458,7 @@ log_group_get_capacity(
/* out: capacity in bytes */
log_group_t
*
group
)
/* in: log group */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
return
((
group
->
file_size
-
LOG_FILE_HDR_SIZE
)
*
group
->
n_files
);
}
...
...
@@ -482,9 +474,7 @@ log_group_calc_size_offset(
ulint
offset
,
/* in: real offset within the log group */
log_group_t
*
group
)
/* in: log group */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
return
(
offset
-
LOG_FILE_HDR_SIZE
*
(
1
+
offset
/
group
->
file_size
));
}
...
...
@@ -500,9 +490,7 @@ log_group_calc_real_offset(
ulint
offset
,
/* in: size offset within the log group */
log_group_t
*
group
)
/* in: log group */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
return
(
offset
+
LOG_FILE_HDR_SIZE
*
(
1
+
offset
/
(
group
->
file_size
-
LOG_FILE_HDR_SIZE
)));
...
...
@@ -525,9 +513,7 @@ log_group_calc_lsn_offset(
ib_longlong
group_size
;
ib_longlong
offset
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
/* If total log file size is > 2 GB we can easily get overflows
with 32-bit integers. Use 64-bit integers instead. */
...
...
@@ -642,9 +628,7 @@ log_calc_max_ages(void)
ulint
archive_margin
;
ulint
smallest_archive_margin
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
mutex_enter
(
&
(
log_sys
->
mutex
));
...
...
@@ -942,9 +926,7 @@ log_flush_do_unlocks(
ulint
code
)
/* in: any ORed combination of LOG_UNLOCK_FLUSH_LOCK
and LOG_UNLOCK_NONE_FLUSHED_LOCK */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
/* NOTE that we must own the log mutex when doing the setting of the
events: this is because transactions will wait for these events to
...
...
@@ -976,9 +958,7 @@ log_group_check_flush_completion(
/* out: LOG_UNLOCK_NONE_FLUSHED_LOCK or 0 */
log_group_t
*
group
)
/* in: log group */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
log_sys
->
one_flushed
&&
group
->
n_pending_writes
==
0
)
{
#ifdef UNIV_DEBUG
...
...
@@ -1015,9 +995,7 @@ log_sys_check_flush_completion(void)
ulint
move_start
;
ulint
move_end
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
log_sys
->
n_pending_writes
==
0
)
{
...
...
@@ -1129,10 +1107,8 @@ log_group_file_header_flush(
{
byte
*
buf
;
ulint
dest_offset
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
ut_a
(
nth_file
<
group
->
n_files
);
buf
=
*
(
group
->
file_header_bufs
+
nth_file
);
...
...
@@ -1203,9 +1179,7 @@ log_group_write_buf(
ulint
next_offset
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
len
%
OS_FILE_LOG_BLOCK_SIZE
==
0
);
ut_a
(
ut_dulint_get_low
(
start_lsn
)
%
OS_FILE_LOG_BLOCK_SIZE
==
0
);
...
...
@@ -1626,9 +1600,7 @@ void
log_complete_checkpoint
(
void
)
/*=========================*/
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
log_sys
->
n_pending_checkpoint_writes
==
0
);
log_sys
->
next_checkpoint_no
...
...
@@ -1715,9 +1687,7 @@ log_group_checkpoint(
byte
*
buf
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
#if LOG_CHECKPOINT_SIZE > OS_FILE_LOG_BLOCK_SIZE
# error "LOG_CHECKPOINT_SIZE > OS_FILE_LOG_BLOCK_SIZE"
#endif
...
...
@@ -1882,9 +1852,7 @@ log_group_read_checkpoint_info(
log_group_t
*
group
,
/* in: log group */
ulint
field
)
/* in: LOG_CHECKPOINT_1 or LOG_CHECKPOINT_2 */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
log_sys
->
n_log_ios
++
;
...
...
@@ -1902,9 +1870,7 @@ log_groups_write_checkpoint_info(void)
{
log_group_t
*
group
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
group
=
UT_LIST_GET_FIRST
(
log_sys
->
log_groups
);
...
...
@@ -2162,9 +2128,7 @@ log_group_read_log_seg(
ulint
source_offset
;
ibool
sync
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
sync
=
FALSE
;
...
...
@@ -2237,9 +2201,7 @@ log_group_archive_file_header_write(
byte
*
buf
;
ulint
dest_offset
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
nth_file
<
group
->
n_files
);
...
...
@@ -2276,9 +2238,7 @@ log_group_archive_completed_header_write(
byte
*
buf
;
ulint
dest_offset
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
nth_file
<
group
->
n_files
);
buf
=
*
(
group
->
archive_file_header_bufs
+
nth_file
);
...
...
@@ -2317,9 +2277,7 @@ log_group_archive(
ulint
n_files
;
ulint
open_mode
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
start_lsn
=
log_sys
->
archived_lsn
;
...
...
@@ -2452,9 +2410,7 @@ log_archive_groups(void)
{
log_group_t
*
group
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
group
=
UT_LIST_GET_FIRST
(
log_sys
->
log_groups
);
...
...
@@ -2477,9 +2433,7 @@ log_archive_write_complete_groups(void)
dulint
end_lsn
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
group
=
UT_LIST_GET_FIRST
(
log_sys
->
log_groups
);
...
...
@@ -2546,9 +2500,7 @@ void
log_archive_check_completion_low
(
void
)
/*==================================*/
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
log_sys
->
n_pending_archive_ios
==
0
&&
log_sys
->
archiving_phase
==
LOG_ARCHIVE_READ
)
{
...
...
@@ -2784,9 +2736,7 @@ log_archive_close_groups(
log_group_t
*
group
;
ulint
trunc_len
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
log_sys
->
archiving_state
==
LOG_ARCH_OFF
)
{
...
...
@@ -3278,9 +3228,7 @@ log_check_log_recs(
byte
*
buf1
;
byte
*
scan_buf
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
len
==
0
)
{
...
...
log/log0recv.c
View file @
4c643e0e
...
...
@@ -171,9 +171,8 @@ void
recv_sys_empty_hash
(
void
)
/*=====================*/
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
recv_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
recv_sys
->
n_addrs
!=
0
)
{
fprintf
(
stderr
,
"InnoDB: Error: %lu pages with log records"
...
...
@@ -1396,9 +1395,8 @@ loop:
goto
loop
;
}
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
allow_ibuf
==
mutex_own
(
&
log_sys
->
mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
allow_ibuf
)
{
recv_no_ibuf_operations
=
TRUE
;
}
...
...
@@ -1842,9 +1840,7 @@ recv_parse_log_recs(
byte
*
body
;
ulint
n_recs
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
!
ut_dulint_is_zero
(
recv_sys
->
parse_start_lsn
));
loop:
ptr
=
recv_sys
->
buf
+
recv_sys
->
recovered_offset
;
...
...
@@ -2894,9 +2890,8 @@ recv_reset_logs(
{
log_group_t
*
group
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
log_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
log_sys
->
lsn
=
ut_dulint_align_up
(
lsn
,
OS_FILE_LOG_BLOCK_SIZE
);
group
=
UT_LIST_GET_FIRST
(
log_sys
->
log_groups
);
...
...
mem/mem0pool.c
View file @
4c643e0e
...
...
@@ -257,9 +257,7 @@ mem_pool_fill_free_list(
mem_area_t
*
area2
;
ibool
ret
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
pool
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
i
>=
63
)
{
/* We come here when we have run out of space in the
...
...
pars/pars0pars.c
View file @
4c643e0e
...
...
@@ -1859,10 +1859,9 @@ pars_sql(
heap
=
mem_heap_create
(
256
);
#ifdef UNIV_SYNC_DEBUG
/* Currently, the parser is not reentrant: */
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
pars_sym_tab_global
=
sym_tab_create
(
heap
);
pars_sym_tab_global
->
string_len
=
strlen
(
str
);
...
...
que/que0que.c
View file @
4c643e0e
...
...
@@ -127,9 +127,7 @@ que_graph_publish(
que_t
*
graph
,
/* in: graph */
sess_t
*
sess
)
/* in: session */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
UT_LIST_ADD_LAST
(
graphs
,
sess
->
graphs
,
graph
);
}
...
...
@@ -238,9 +236,7 @@ que_thr_end_wait(
{
ibool
was_active
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
thr
);
ut_ad
((
thr
->
state
==
QUE_THR_LOCK_WAIT
)
||
(
thr
->
state
==
QUE_THR_PROCEDURE_WAIT
)
...
...
@@ -280,9 +276,7 @@ que_thr_end_wait_no_next_thr(
ut_a
(
thr
->
state
==
QUE_THR_LOCK_WAIT
);
/* In MySQL this is the
only possible state here */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
thr
);
ut_ad
((
thr
->
state
==
QUE_THR_LOCK_WAIT
)
||
(
thr
->
state
==
QUE_THR_PROCEDURE_WAIT
)
...
...
@@ -419,9 +413,7 @@ que_fork_error_handle(
{
que_thr_t
*
thr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
trx
->
sess
->
state
==
SESS_ERROR
);
ut_ad
(
UT_LIST_GET_LEN
(
trx
->
reply_signals
)
==
0
);
ut_ad
(
UT_LIST_GET_LEN
(
trx
->
wait_thrs
)
==
0
);
...
...
@@ -698,9 +690,7 @@ que_graph_try_free(
{
sess_t
*
sess
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sess
=
(
graph
->
trx
)
->
sess
;
...
...
@@ -931,9 +921,7 @@ que_thr_stop(
que_t
*
graph
;
ibool
ret
=
TRUE
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
graph
=
thr
->
graph
;
trx
=
graph
->
trx
;
...
...
@@ -1309,10 +1297,7 @@ que_run_threads_low(
ut_ad
(
thr
->
state
==
QUE_THR_RUNNING
);
ut_a
(
thr_get_trx
(
thr
)
->
error_state
==
DB_SUCCESS
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* cumul_resource counts how much resources the OS thread (NOT the
query thread) has spent in this function */
...
...
read/read0read.c
View file @
4c643e0e
...
...
@@ -162,9 +162,8 @@ read_view_oldest_copy_or_open_new(
ulint
n
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
old_view
=
UT_LIST_GET_LAST
(
trx_sys
->
view_list
);
if
(
old_view
==
NULL
)
{
...
...
@@ -245,9 +244,9 @@ read_view_open_now(
read_view_t
*
view
;
trx_t
*
trx
;
ulint
n
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
view
=
read_view_create_low
(
UT_LIST_GET_LEN
(
trx_sys
->
trx_list
),
heap
);
view
->
creator_trx_id
=
cr_trx_id
;
...
...
@@ -313,9 +312,8 @@ read_view_close(
/*============*/
read_view_t
*
view
)
/* in: read view */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
UT_LIST_REMOVE
(
view_list
,
trx_sys
->
view_list
,
view
);
}
...
...
row/row0mysql.c
View file @
4c643e0e
...
...
@@ -1748,8 +1748,8 @@ row_create_table_for_mysql(
ut_ad
(
trx
->
mysql_thread_id
==
os_thread_get_curr_id
());
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
rw_lock_own
(
&
dict_operation_lock
,
RW_LOCK_EX
));
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
ut_ad
(
trx
->
dict_operation_lock_mode
==
RW_X_LATCH
);
if
(
srv_created_new_raw
)
{
...
...
@@ -1964,8 +1964,8 @@ row_create_index_for_mysql(
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
rw_lock_own
(
&
dict_operation_lock
,
RW_LOCK_EX
));
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
ut_ad
(
trx
->
mysql_thread_id
==
os_thread_get_curr_id
());
trx
->
op_info
=
"creating index"
;
...
...
@@ -2080,8 +2080,8 @@ row_table_add_foreign_constraints(
{
ulint
err
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
rw_lock_own
(
&
dict_operation_lock
,
RW_LOCK_EX
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
sql_string
);
...
...
@@ -2246,9 +2246,7 @@ row_get_background_drop_list_len_low(void)
/*======================================*/
/* out: how many tables in list */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
row_mysql_drop_list_inited
)
{
...
...
@@ -2726,8 +2724,8 @@ row_truncate_table_for_mysql(
row_mysql_lock_data_dictionary
(
trx
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
rw_lock_own
(
&
dict_operation_lock
,
RW_LOCK_EX
));
#endif
/* UNIV_SYNC_DEBUG */
...
...
@@ -3001,8 +2999,8 @@ row_drop_table_for_mysql(
locked_dictionary
=
TRUE
;
}
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
dict_sys
->
mutex
)));
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
rw_lock_own
(
&
dict_operation_lock
,
RW_LOCK_EX
));
#endif
/* UNIV_SYNC_DEBUG */
...
...
row/row0vers.c
View file @
4c643e0e
...
...
@@ -63,8 +63,8 @@ row_vers_impl_x_locked_off_kernel(
mtr_t
mtr
;
ulint
comp
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
rw_lock_own
(
&
(
purge_sys
->
latch
),
RW_LOCK_SHARED
));
#endif
/* UNIV_SYNC_DEBUG */
...
...
srv/srv0que.c
View file @
4c643e0e
...
...
@@ -82,10 +82,7 @@ srv_que_task_enqueue_low(
que_thr_t
*
thr
)
/* in: query thread */
{
ut_ad
(
thr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
UT_LIST_ADD_LAST
(
queue
,
srv_sys
->
tasks
,
thr
);
...
...
srv/srv0srv.c
View file @
4c643e0e
...
...
@@ -724,9 +724,7 @@ srv_suspend_thread(void)
ulint
slot_no
;
ulint
type
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
slot_no
=
thr_local_get_slot_no
(
os_thread_get_curr_id
());
...
...
@@ -778,9 +776,7 @@ srv_release_threads(
ut_ad
(
type
>=
SRV_WORKER
);
ut_ad
(
type
<=
SRV_MASTER
);
ut_ad
(
n
>
0
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
for
(
i
=
0
;
i
<
OS_THREAD_MAX_N
;
i
++
)
{
...
...
@@ -1303,9 +1299,7 @@ srv_table_reserve_slot_for_mysql(void)
srv_slot_t
*
slot
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
i
=
0
;
slot
=
srv_mysql_table
+
i
;
...
...
@@ -1385,9 +1379,7 @@ srv_suspend_mysql_thread(
ulint
sec
;
ulint
ms
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
thr_get_trx
(
thr
);
...
...
@@ -1533,9 +1525,7 @@ srv_release_mysql_thread_if_suspended(
srv_slot_t
*
slot
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
for
(
i
=
0
;
i
<
OS_THREAD_MAX_N
;
i
++
)
{
...
...
sync/sync0rw.c
View file @
4c643e0e
...
...
@@ -339,9 +339,8 @@ rw_lock_x_lock_low(
const
char
*
file_name
,
/* in: file name where lock requested */
ulint
line
)
/* in: line where requested */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
rw_lock_get_mutex
(
lock
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
rw_lock_get_writer
(
lock
)
==
RW_LOCK_NOT_LOCKED
)
{
if
(
rw_lock_get_reader_count
(
lock
)
==
0
)
{
...
...
sync/sync0sync.c
View file @
4c643e0e
...
...
@@ -329,6 +329,7 @@ mutex_enter_nowait(
if
(
!
mutex_test_and_set
(
mutex
))
{
ut_d
(
mutex
->
thread_id
=
os_thread_get_curr_id
());
#ifdef UNIV_SYNC_DEBUG
mutex_set_debug_info
(
mutex
,
file_name
,
line
);
#endif
...
...
@@ -346,13 +347,29 @@ Checks that the mutex has been initialized. */
ibool
mutex_validate
(
/*===========*/
mutex_t
*
mutex
)
const
mutex_t
*
mutex
)
{
ut_a
(
mutex
);
ut_a
(
mutex
->
magic_n
==
MUTEX_MAGIC_N
);
return
(
TRUE
);
}
/**********************************************************************
Checks that the current thread owns the mutex. Works only in the debug
version. */
ibool
mutex_own
(
/*======*/
/* out: TRUE if owns */
const
mutex_t
*
mutex
)
/* in: mutex */
{
ut_ad
(
mutex_validate
(
mutex
));
return
(
mutex_get_lock_word
(
mutex
)
==
1
&&
os_thread_eq
(
mutex
->
thread_id
,
os_thread_get_curr_id
()));
}
#endif
/* UNIV_DEBUG */
/**********************************************************************
...
...
@@ -451,6 +468,7 @@ spin_loop:
if
(
mutex_test_and_set
(
mutex
)
==
0
)
{
/* Succeeded! */
ut_d
(
mutex
->
thread_id
=
os_thread_get_curr_id
());
#ifdef UNIV_SYNC_DEBUG
mutex_set_debug_info
(
mutex
,
file_name
,
line
);
#endif
...
...
@@ -492,6 +510,7 @@ spin_loop:
sync_array_free_cell_protected
(
sync_primary_wait_array
,
index
);
ut_d
(
mutex
->
thread_id
=
os_thread_get_curr_id
());
#ifdef UNIV_SYNC_DEBUG
mutex_set_debug_info
(
mutex
,
file_name
,
line
);
#endif
...
...
@@ -592,7 +611,6 @@ mutex_set_debug_info(
mutex
->
file_name
=
file_name
;
mutex
->
line
=
line
;
mutex
->
thread_id
=
os_thread_get_curr_id
();
}
/**********************************************************************
...
...
@@ -614,31 +632,6 @@ mutex_get_debug_info(
*
thread_id
=
mutex
->
thread_id
;
}
/**********************************************************************
Checks that the current thread owns the mutex. Works only in the debug
version. */
ibool
mutex_own
(
/*======*/
/* out: TRUE if owns */
mutex_t
*
mutex
)
/* in: mutex */
{
ut_ad
(
mutex_validate
(
mutex
));
if
(
mutex_get_lock_word
(
mutex
)
!=
1
)
{
return
(
FALSE
);
}
if
(
!
os_thread_eq
(
mutex
->
thread_id
,
os_thread_get_curr_id
()))
{
return
(
FALSE
);
}
return
(
TRUE
);
}
/**********************************************************************
Prints debug info of currently reserved mutexes. */
static
...
...
thr/thr0loc.c
View file @
4c643e0e
...
...
@@ -64,9 +64,7 @@ thr_local_get(
try_again:
ut_ad
(
thr_local_hash
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
thr_local_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* Look for the local struct in the hash table */
...
...
trx/trx0purge.c
View file @
4c643e0e
...
...
@@ -197,9 +197,7 @@ void
trx_purge_sys_create
(
void
)
/*======================*/
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
purge_sys
=
mem_alloc
(
sizeof
(
trx_purge_t
));
...
...
@@ -260,9 +258,8 @@ trx_purge_add_update_undo_to_history(
ut_ad
(
undo
);
rseg
=
undo
->
rseg
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
rseg_header
=
trx_rsegf_get
(
rseg
->
space
,
rseg
->
page_no
,
mtr
);
...
...
@@ -341,9 +338,7 @@ trx_purge_free_segment(
/* fputs("Freeing an update undo log segment\n", stderr); */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
loop:
mtr_start
(
&
mtr
);
mutex_enter
(
&
(
rseg
->
mutex
));
...
...
@@ -445,9 +440,7 @@ trx_purge_truncate_rseg_history(
ulint
n_removed_logs
=
0
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
mutex_enter
(
&
(
rseg
->
mutex
));
...
...
@@ -537,9 +530,7 @@ trx_purge_truncate_history(void)
dulint
limit_trx_no
;
dulint
limit_undo_no
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx_purge_arr_get_biggest
(
purge_sys
->
arr
,
&
limit_trx_no
,
&
limit_undo_no
);
...
...
@@ -579,9 +570,7 @@ trx_purge_truncate_if_arr_empty(void)
/*=================================*/
/* out: TRUE if array empty */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
purge_sys
->
arr
->
n_used
==
0
)
{
...
...
@@ -610,9 +599,7 @@ trx_purge_rseg_get_next_history_log(
ibool
del_marks
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
mutex_enter
(
&
(
rseg
->
mutex
));
...
...
@@ -715,9 +702,7 @@ trx_purge_choose_next_log(void)
ulint
offset
=
0
;
/* remove warning (??? bug ???) */
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
purge_sys
->
next_stored
==
FALSE
);
rseg
=
UT_LIST_GET_FIRST
(
trx_sys
->
rseg_list
);
...
...
@@ -818,9 +803,7 @@ trx_purge_get_next_rec(
ulint
cmpl_info
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
purge_sys
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
purge_sys
->
next_stored
);
space
=
purge_sys
->
rseg
->
space
;
...
...
trx/trx0roll.c
View file @
4c643e0e
...
...
@@ -785,10 +785,8 @@ trx_roll_try_truncate(
dulint
limit
;
dulint
biggest
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
ut_ad
(
mutex_own
(
&
((
trx
->
rseg
)
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx
->
pages_undone
=
0
;
...
...
@@ -831,9 +829,7 @@ trx_roll_pop_top_rec(
trx_undo_rec_t
*
prev_rec
;
page_t
*
prev_rec_page
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
undo_page
=
trx_undo_page_get_s_latched
(
undo
->
space
,
undo
->
top_page_no
,
mtr
);
...
...
@@ -1060,9 +1056,7 @@ trx_rollback(
que_thr_t
*
thr
;
/* que_thr_t* thr2; */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
((
trx
->
undo_no_arr
==
NULL
)
||
((
trx
->
undo_no_arr
)
->
n_used
==
0
));
/* Initialize the rollback field in the transaction */
...
...
@@ -1131,9 +1125,7 @@ trx_roll_graph_build(
que_thr_t
*
thr
;
/* que_thr_t* thr2; */
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
heap
=
mem_heap_create
(
512
);
fork
=
que_fork_create
(
NULL
,
NULL
,
QUE_FORK_ROLLBACK
,
heap
);
...
...
@@ -1160,9 +1152,7 @@ trx_finish_error_processing(
trx_sig_t
*
sig
;
trx_sig_t
*
next_sig
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sig
=
UT_LIST_GET_FIRST
(
trx
->
signals
);
...
...
@@ -1195,9 +1185,7 @@ trx_finish_partial_rollback_off_kernel(
{
trx_sig_t
*
sig
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sig
=
UT_LIST_GET_FIRST
(
trx
->
signals
);
...
...
@@ -1228,9 +1216,7 @@ trx_finish_rollback_off_kernel(
trx_sig_t
*
sig
;
trx_sig_t
*
next_sig
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_a
(
trx
->
undo_no_arr
==
NULL
||
trx
->
undo_no_arr
->
n_used
==
0
);
...
...
trx/trx0rseg.c
View file @
4c643e0e
...
...
@@ -60,9 +60,7 @@ trx_rseg_header_create(
page_t
*
page
;
ut_ad
(
mtr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
mtr_memo_contains
(
mtr
,
fil_space_get_latch
(
space
),
MTR_MEMO_X_LOCK
));
sys_header
=
trx_sysf_get
(
mtr
);
...
...
@@ -138,9 +136,7 @@ trx_rseg_mem_create(
ulint
sum_of_undo_sizes
;
ulint
len
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
rseg
=
mem_alloc
(
sizeof
(
trx_rseg_t
));
...
...
trx/trx0sys.c
View file @
4c643e0e
...
...
@@ -547,9 +547,7 @@ trx_in_trx_list(
{
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
kernel_mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
UT_LIST_GET_FIRST
(
trx_sys
->
trx_list
);
...
...
@@ -576,9 +574,7 @@ trx_sys_flush_max_trx_id(void)
trx_sysf_t
*
sys_header
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
...
...
@@ -799,9 +795,7 @@ trx_sysf_rseg_find_free(
ulint
page_no
;
ulint
i
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
kernel_mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
sys_header
=
trx_sysf_get
(
mtr
);
...
...
trx/trx0trx.c
View file @
4c643e0e
...
...
@@ -101,9 +101,7 @@ trx_create(
{
trx_t
*
trx
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
trx
=
mem_alloc
(
sizeof
(
trx_t
));
...
...
@@ -280,9 +278,7 @@ trx_free(
/*=====*/
trx_t
*
trx
)
/* in, own: trx object */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
trx
->
declared_to_be_inside_innodb
)
{
ut_print_timestamp
(
stderr
);
...
...
@@ -406,9 +402,7 @@ trx_list_insert_ordered(
{
trx_t
*
trx2
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
trx2
=
UT_LIST_GET_FIRST
(
trx_sys
->
trx_list
);
...
...
@@ -633,9 +627,7 @@ trx_assign_rseg(void)
{
trx_rseg_t
*
rseg
=
trx_sys
->
latest_rseg
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
loop:
/* Get next rseg in a round-robin fashion */
...
...
@@ -672,9 +664,7 @@ trx_start_low(
{
trx_rseg_t
*
rseg
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
trx
->
rseg
==
NULL
);
if
(
trx
->
type
==
TRX_PURGE
)
{
...
...
@@ -749,9 +739,7 @@ trx_commit_off_kernel(
ibool
must_flush_log
=
FALSE
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
trx
->
must_flush_log_later
=
FALSE
;
...
...
@@ -851,9 +839,7 @@ trx_commit_off_kernel(
ut_ad
(
trx
->
conc_state
==
TRX_ACTIVE
||
trx
->
conc_state
==
TRX_PREPARED
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/* The following assignment makes the transaction committed in memory
and makes its changes to data visible to other transactions.
...
...
@@ -1036,9 +1022,7 @@ trx_handle_commit_sig_off_kernel(
trx_sig_t
*
sig
;
trx_sig_t
*
next_sig
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
trx
->
que_state
=
TRX_QUE_COMMITTING
;
...
...
@@ -1078,9 +1062,7 @@ trx_end_lock_wait(
{
que_thr_t
*
thr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
trx
->
que_state
==
TRX_QUE_LOCK_WAIT
);
thr
=
UT_LIST_GET_FIRST
(
trx
->
wait_thrs
);
...
...
@@ -1107,9 +1089,7 @@ trx_lock_wait_to_suspended(
{
que_thr_t
*
thr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
trx
->
que_state
==
TRX_QUE_LOCK_WAIT
);
thr
=
UT_LIST_GET_FIRST
(
trx
->
wait_thrs
);
...
...
@@ -1137,9 +1117,7 @@ trx_sig_reply_wait_to_suspended(
trx_sig_t
*
sig
;
que_thr_t
*
thr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sig
=
UT_LIST_GET_FIRST
(
trx
->
reply_signals
);
...
...
@@ -1172,9 +1150,7 @@ trx_sig_is_compatible(
{
trx_sig_t
*
sig
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
UT_LIST_GET_LEN
(
trx
->
signals
)
==
0
)
{
...
...
@@ -1260,9 +1236,7 @@ trx_sig_send(
trx_t
*
receiver_trx
;
ut_ad
(
trx
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
!
trx_sig_is_compatible
(
trx
,
type
,
sender
))
{
/* The signal is not compatible with the other signals in
...
...
@@ -1332,9 +1306,7 @@ trx_end_signal_handling(
/*====================*/
trx_t
*
trx
)
/* in: trx */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
trx
->
handling_signals
==
TRUE
);
trx
->
handling_signals
=
FALSE
;
...
...
@@ -1368,9 +1340,7 @@ loop:
we can process immediately */
ut_ad
(
trx
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
trx
->
handling_signals
&&
(
UT_LIST_GET_LEN
(
trx
->
signals
)
==
0
))
{
...
...
@@ -1471,9 +1441,7 @@ trx_sig_reply(
trx_t
*
receiver_trx
;
ut_ad
(
sig
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
sig
->
receiver
!=
NULL
)
{
ut_ad
((
sig
->
receiver
)
->
state
==
QUE_THR_SIG_REPLY_WAIT
);
...
...
@@ -1501,9 +1469,7 @@ trx_sig_remove(
trx_sig_t
*
sig
)
/* in, own: signal */
{
ut_ad
(
trx
&&
sig
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
sig
->
receiver
==
NULL
);
...
...
@@ -1820,9 +1786,7 @@ trx_prepare_off_kernel(
dulint
lsn
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
rseg
=
trx
->
rseg
;
...
...
@@ -1868,9 +1832,7 @@ trx_prepare_off_kernel(
mutex_enter
(
&
kernel_mutex
);
}
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
/*--------------------------------------*/
trx
->
conc_state
=
TRX_PREPARED
;
...
...
trx/trx0undo.c
View file @
4c643e0e
...
...
@@ -395,9 +395,7 @@ trx_undo_seg_create(
ibool
success
;
ut_ad
(
mtr
&&
id
&&
rseg_hdr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
/* fputs(type == TRX_UNDO_INSERT
? "Creating insert undo log segment\n"
...
...
@@ -836,11 +834,9 @@ trx_undo_add_page(
ulint
n_reserved
;
ibool
success
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
ut_ad
(
mutex_own
(
&
(
trx
->
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
rseg
=
trx
->
rseg
;
...
...
@@ -911,10 +907,8 @@ trx_undo_free_page(
ulint
hist_size
;
ut_a
(
hdr_page_no
!=
page_no
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
undo_page
=
trx_undo_page_get
(
space
,
page_no
,
mtr
);
...
...
@@ -961,9 +955,7 @@ trx_undo_free_page_in_rollback(
ulint
last_page_no
;
ut_ad
(
undo
->
hdr_page_no
!=
page_no
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
last_page_no
=
trx_undo_free_page
(
undo
->
rseg
,
FALSE
,
undo
->
space
,
undo
->
hdr_page_no
,
page_no
,
mtr
);
...
...
@@ -1016,10 +1008,8 @@ trx_undo_truncate_end(
trx_rseg_t
*
rseg
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
ut_ad
(
mutex_own
(
&
(
trx
->
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
rseg
=
trx
->
rseg
;
...
...
@@ -1096,9 +1086,7 @@ trx_undo_truncate_start(
ulint
page_no
;
mtr_t
mtr
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
0
==
ut_dulint_cmp
(
limit
,
ut_dulint_zero
))
{
...
...
@@ -1164,9 +1152,9 @@ trx_undo_seg_free(
while
(
!
finished
)
{
mtr_start
(
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
mutex_enter
(
&
(
rseg
->
mutex
));
seg_header
=
trx_undo_page_get
(
undo
->
space
,
undo
->
hdr_page_no
,
...
...
@@ -1389,9 +1377,7 @@ trx_undo_mem_create(
{
trx_undo_t
*
undo
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
id
>=
TRX_RSEG_N_SLOTS
)
{
fprintf
(
stderr
,
...
...
@@ -1437,11 +1423,9 @@ trx_undo_mem_init_for_reuse(
XID
*
xid
,
/* in: X/Open XA transaction identification*/
ulint
offset
)
/* in: undo log header byte offset on page */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
((
undo
->
rseg
)
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
undo
->
id
>=
TRX_RSEG_N_SLOTS
)
{
if
(
UNIV_UNLIKELY
(
undo
->
id
>=
TRX_RSEG_N_SLOTS
)
)
{
fprintf
(
stderr
,
"InnoDB: Error: undo->id is %lu
\n
"
,
(
ulong
)
undo
->
id
);
...
...
@@ -1501,9 +1485,7 @@ trx_undo_create(
trx_undo_t
*
undo
;
page_t
*
undo_page
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
rseg
->
curr_size
==
rseg
->
max_size
)
{
...
...
@@ -1561,9 +1543,7 @@ trx_undo_reuse_cached(
page_t
*
undo_page
;
ulint
offset
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
if
(
type
==
TRX_UNDO_INSERT
)
{
...
...
@@ -1671,15 +1651,12 @@ trx_undo_assign_undo(
rseg
=
trx
->
rseg
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
trx
->
undo_mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
mtr_start
(
&
mtr
);
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
!
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
mutex_enter
(
&
(
rseg
->
mutex
));
undo
=
trx_undo_reuse_cached
(
trx
,
rseg
,
type
,
trx
->
id
,
&
trx
->
xid
,
...
...
@@ -1836,9 +1813,8 @@ trx_undo_update_cleanup(
undo
=
trx
->
update_undo
;
rseg
=
trx
->
rseg
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
(
rseg
->
mutex
)));
#endif
/* UNIV_SYNC_DEBUG */
trx_purge_add_update_undo_to_history
(
trx
,
undo_page
,
mtr
);
UT_LIST_REMOVE
(
undo_list
,
rseg
->
update_undo_list
,
undo
);
...
...
usr/usr0sess.c
View file @
4c643e0e
...
...
@@ -32,9 +32,8 @@ sess_open(void)
{
sess_t
*
sess
;
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
sess
=
mem_alloc
(
sizeof
(
sess_t
));
sess
->
state
=
SESS_ACTIVE
;
...
...
@@ -54,9 +53,7 @@ sess_close(
/*=======*/
sess_t
*
sess
)
/* in, own: session object */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
ut_ad
(
sess
->
trx
==
NULL
);
mem_free
(
sess
);
...
...
@@ -72,9 +69,8 @@ sess_try_close(
/* out: TRUE if closed */
sess_t
*
sess
)
/* in, own: session object */
{
#ifdef UNIV_SYNC_DEBUG
ut_ad
(
mutex_own
(
&
kernel_mutex
));
#endif
/* UNIV_SYNC_DEBUG */
if
(
UT_LIST_GET_LEN
(
sess
->
graphs
)
==
0
)
{
sess_close
(
sess
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment