mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Merge branch '10.0' into 10.1
This commit is contained in:
commit
2db62f686e
728 changed files with 55048 additions and 9876 deletions
|
|
@ -392,6 +392,7 @@ rw_lock_x_lock_func_nowait(
|
|||
ulint line) /*!< in: line where requested */
|
||||
{
|
||||
ibool success;
|
||||
ibool local_recursive= lock->recursive;
|
||||
|
||||
#ifdef INNODB_RW_LOCKS_USE_ATOMICS
|
||||
success = os_compare_and_swap_lint(&lock->lock_word, X_LOCK_DECR, 0);
|
||||
|
|
@ -406,10 +407,14 @@ rw_lock_x_lock_func_nowait(
|
|||
mutex_exit(&(lock->mutex));
|
||||
|
||||
#endif
|
||||
/* Note: recursive must be loaded before writer_thread see
|
||||
comment for rw_lock_set_writer_id_and_recursion_flag().
|
||||
To achieve this we load it before os_compare_and_swap_lint(),
|
||||
which implies full memory barrier in current implementation. */
|
||||
if (success) {
|
||||
rw_lock_set_writer_id_and_recursion_flag(lock, TRUE);
|
||||
|
||||
} else if (lock->recursive
|
||||
} else if (local_recursive
|
||||
&& os_thread_eq(lock->writer_thread,
|
||||
os_thread_get_curr_id())) {
|
||||
/* Relock: this lock_word modification is safe since no other
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue