]>
Commit | Line | Data |
---|---|---|
34c3c791 ER |
1 | --- mysql-5.0.81/innobase/include/sync0rw.h~ 2009-05-26 00:35:13.000000000 +0300 |
2 | +++ mysql-5.0.81/innobase/include/sync0rw.h 2009-06-16 19:09:27.587270045 +0300 | |
3 | @@ -421,12 +421,6 @@ | |
4 | #ifdef HAVE_ATOMIC_BUILTINS | |
5 | /* This value means NOT_LOCKED */ | |
6 | #define RW_LOCK_BIAS 0x00100000 | |
7 | -#else | |
8 | -#error HAVE_ATOMIC_BUILTINS is not defined. Do you use enough new GCC or compatibles? | |
9 | -#error Or do you use exact options for CFLAGS? | |
10 | -#error e.g. (for x86_32): "-m32 -march=i586 -mtune=i686" | |
11 | -#error e.g. (for Sparc_64): "-m64 -mcpu=v9" | |
12 | -#error Otherwise, this build may be slower than normal version. | |
13 | #endif | |
14 | ||
15 | /* NOTE! The structure appears here only for the compiler to know its size. | |
45532174 ER |
16 | |
17 | ||
18 | ||
19 | NOTE: this chunk is to fix buggy percona patch: | |
20 | --- mysql-5.0.83/innobase/sync/sync0rw.c~ 2009-07-16 12:43:34.863559101 +0300 | |
21 | +++ mysql-5.0.83/innobase/sync/sync0rw.c 2009-07-16 13:01:55.553904932 +0300 | |
22 | @@ -626,10 +626,14 @@ | |
23 | } else if (state == RW_LOCK_NOT_LOCKED) { | |
24 | ||
25 | /* Spin waiting for the writer field to become free */ | |
26 | - | |
27 | +#ifdef HAVE_ATOMIC_BUILTINS | |
28 | while (i < SYNC_SPIN_ROUNDS | |
29 | && lock->lock_word != RW_LOCK_BIAS) { | |
30 | - if (srv_spin_wait_delay) { | |
31 | +#else | |
32 | + while (rw_lock_get_writer(lock) != RW_LOCK_NOT_LOCKED | |
33 | + && i < SYNC_SPIN_ROUNDS) { | |
34 | +#endif | |
35 | + if (srv_spin_wait_delay) { | |
36 | ut_delay(ut_rnd_interval(0, | |
37 | srv_spin_wait_delay)); | |
38 | } |