Re: [Maria-developers] [Merge] lp:~maria-captains/maria/maria-xtradb into lp:maria
Kristian Nielsen writes: > I got some good progress on this. I re-did the merge using the merge-into bzr > plugin (advise from bzr developers). This should allow us to merge directly > from the lp:percona-xtradb tree into lp:maria in the future. I just tested this, and it seems to work ok. I was able to merge latest XtraDB with just `bzr merge lp:parcona-xtradb`. And merging that into latest MariaDB also worked fine with just `bzr merge`. There were a number of conflicts in the merges. But I think that is only expected, and unavoidable in fact. Eg. when same problem was fixed in different ways in the different trees, or changes to InnoDB plugin files removed in MariaDB tree. Nothing serious, and we can reduce some of this by cooperating closely between XtraDB and MariaDB (and Sun and Oracle if they are willing). - Kristian. ___ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2703)
#At lp:maria 2703 kniel...@knielsen-hq.org 2009-06-10 Fix XtraDB to build with atomic operations, for good performance. The root of the problem is that ./configure mixed together two different things. One is the availability of GCC atomic operation intrinsics. The other is the selection of which primitives to use for my_atomic implementation. Then at some point a hack was made to not use GCC intrinsics in my_atomic to work around some test failures. But because the two things are mixed in ./configure, this as a side effect also makes GCC intrinsics unavailable for XtraDB. Fixed by splitting this in two in configure, so that we have HAVE_GCC_ATOMIC_BUILTINS for GCC intrinsics availability and MY_ATOMIC_MODE_GCC_BUILTINS for use in my_atomic. modified: configure.in include/atomic/nolock.h === modified file 'configure.in' --- a/configure.in 2009-04-23 13:06:16 + +++ b/configure.in 2009-06-10 09:13:53 + @@ -1726,6 +1726,30 @@ then fi fi +AC_CACHE_CHECK([whether the compiler provides atomic builtins], + [mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([ + int main() + { +int foo= -10; int bar= 10; +if (!__sync_fetch_and_add(&foo, bar) || foo) + return -1; +bar= __sync_lock_test_and_set(&foo, bar); +if (bar || foo != 10) + return -1; +bar= __sync_val_compare_and_swap(&bar, foo, 15); +if (bar) + return -1; +return 0; + } +], [mysql_cv_gcc_atomic_builtins=yes], + [mysql_cv_gcc_atomic_builtins=no], + [mysql_cv_gcc_atomic_builtins=no])]) + +if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then + AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1, + [Define to 1 if compiler provides atomic builtins.]) +fi + AC_ARG_WITH([atomic-ops], AC_HELP_STRING([--with-atomic-ops=rwlocks|smp|up], [Implement atomic operations using pthread rwlocks or atomic CPU @@ -1739,28 +1763,9 @@ case "$with_atomic_ops" in [Use pthread rwlocks for atomic ops]) ;; "smp") ;; "") -AC_CACHE_CHECK([whether the compiler provides atomic builtins], - [mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([ - int main() - { -int foo= -10; int bar= 10; -if (!__sync_fetch_and_add(&foo, bar) || foo) - return -1; -bar= __sync_lock_test_and_set(&foo, bar); -if (bar || foo != 10) - return -1; -bar= __sync_val_compare_and_swap(&bar, foo, 15); -if (bar) - return -1; -return 0; - } -], [mysql_cv_gcc_atomic_builtins=yes_but_disabled], - [mysql_cv_gcc_atomic_builtins=no], - [mysql_cv_gcc_atomic_builtins=no])]) - -if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then - AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1, -[Define to 1 if compiler provides atomic builtins.]) +if test "x$mysql_cv_gcc_atomic_builtins" = xyes_but_disabled; then + AC_DEFINE([MY_ATOMIC_MODE_GCC_BUILTINS], [1], +[Use GCC atomic builtins for atomic ops]) fi ;; *) AC_MSG_ERROR(["$with_atomic_ops" is not a valid value for --with-atomic-ops]) ;; === modified file 'include/atomic/nolock.h' --- a/include/atomic/nolock.h 2008-02-05 15:47:11 + +++ b/include/atomic/nolock.h 2009-06-10 09:13:53 + @@ -14,7 +14,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #if defined(__i386__) || defined(_MSC_VER) || \ -defined(__x86_64__) || defined(HAVE_GCC_ATOMIC_BUILTINS) +defined(__x86_64__) || defined(MY_ATOMIC_MODE_GCC_BUILTINS) # ifdef MY_ATOMIC_MODE_DUMMY #define LOCK_prefix "" @@ -22,7 +22,7 @@ #define LOCK_prefix "lock" # endif -# ifdef HAVE_GCC_ATOMIC_BUILTINS +# ifdef MY_ATOMIC_MODE_GCC_BUILTINS #include "gcc_builtins.h" # elif __GNUC__ #include "x86-gcc.h" ___ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp
Re: [Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2703)
Hi Serg, We discussed something like this on IRC some time ago. What do you think of this change? It keeps the use of GCC stuff for maria/my_atomic disabled, while still letting other parts (ie. XtraDB) check for GCC intrinsics availability. - Kristian. kniel...@knielsen-hq.org writes: > #At lp:maria > > 2703 kniel...@knielsen-hq.org2009-06-10 > Fix XtraDB to build with atomic operations, for good performance. > > The root of the problem is that ./configure mixed together two > different things. One is the > availability of GCC atomic operation intrinsics. The other is the > selection of which > primitives to use for my_atomic implementation. > > Then at some point a hack was made to not use GCC intrinsics in > my_atomic to work around > some test failures. But because the two things are mixed in > ./configure, this as a side > effect also makes GCC intrinsics unavailable for XtraDB. > > Fixed by splitting this in two in configure, so that we have > HAVE_GCC_ATOMIC_BUILTINS for > GCC intrinsics availability and MY_ATOMIC_MODE_GCC_BUILTINS for use in > my_atomic. > modified: > configure.in > include/atomic/nolock.h > > === modified file 'configure.in' > --- a/configure.in2009-04-23 13:06:16 + > +++ b/configure.in2009-06-10 09:13:53 + > @@ -1726,6 +1726,30 @@ then >fi > fi > > +AC_CACHE_CHECK([whether the compiler provides atomic builtins], > +[mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([ > + int main() > + { > +int foo= -10; int bar= 10; > +if (!__sync_fetch_and_add(&foo, bar) || foo) > + return -1; > +bar= __sync_lock_test_and_set(&foo, bar); > +if (bar || foo != 10) > + return -1; > +bar= __sync_val_compare_and_swap(&bar, foo, 15); > +if (bar) > + return -1; > +return 0; > + } > +], [mysql_cv_gcc_atomic_builtins=yes], > + [mysql_cv_gcc_atomic_builtins=no], > + [mysql_cv_gcc_atomic_builtins=no])]) > + > +if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then > + AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1, > + [Define to 1 if compiler provides atomic builtins.]) > +fi > + > AC_ARG_WITH([atomic-ops], > AC_HELP_STRING([--with-atomic-ops=rwlocks|smp|up], > [Implement atomic operations using pthread rwlocks or atomic CPU > @@ -1739,28 +1763,9 @@ case "$with_atomic_ops" in >[Use pthread rwlocks for atomic ops]) ;; >"smp") ;; >"") > -AC_CACHE_CHECK([whether the compiler provides atomic builtins], > - [mysql_cv_gcc_atomic_builtins], [AC_TRY_RUN([ > - int main() > - { > -int foo= -10; int bar= 10; > -if (!__sync_fetch_and_add(&foo, bar) || foo) > - return -1; > -bar= __sync_lock_test_and_set(&foo, bar); > -if (bar || foo != 10) > - return -1; > -bar= __sync_val_compare_and_swap(&bar, foo, 15); > -if (bar) > - return -1; > -return 0; > - } > -], [mysql_cv_gcc_atomic_builtins=yes_but_disabled], > - [mysql_cv_gcc_atomic_builtins=no], > - [mysql_cv_gcc_atomic_builtins=no])]) > - > -if test "x$mysql_cv_gcc_atomic_builtins" = xyes; then > - AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS, 1, > -[Define to 1 if compiler provides atomic builtins.]) > +if test "x$mysql_cv_gcc_atomic_builtins" = xyes_but_disabled; then > + AC_DEFINE([MY_ATOMIC_MODE_GCC_BUILTINS], [1], > +[Use GCC atomic builtins for atomic ops]) > fi > ;; > *) AC_MSG_ERROR(["$with_atomic_ops" is not a valid value for > --with-atomic-ops]) ;; > > === modified file 'include/atomic/nolock.h' > --- a/include/atomic/nolock.h 2008-02-05 15:47:11 + > +++ b/include/atomic/nolock.h 2009-06-10 09:13:53 + > @@ -14,7 +14,7 @@ > Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > */ > > #if defined(__i386__) || defined(_MSC_VER) || \ > -defined(__x86_64__) || defined(HAVE_GCC_ATOMIC_BUILTINS) > +defined(__x86_64__) || defined(MY_ATOMIC_MODE_GCC_BUILTINS) > > # ifdef MY_ATOMIC_MODE_DUMMY > #define LOCK_prefix "" > @@ -22,7 +22,7 @@ > #define LOCK_prefix "lock" > # endif > > -# ifdef HAVE_GCC_ATOMIC_BUILTINS > +# ifdef MY_ATOMIC_MODE_GCC_BUILTINS > #include "gcc_builtins.h" > # elif __GNUC__ > #include "x86-gcc.h" > > > ___ > Mailing list: https://launchpad.net/~maria-developers > Post to : maria-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~maria-developers > More help : https://help.launchpad.net/ListHelp ___ Mailing list: https://launchpad.net/~maria-developers Post to : maria-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~maria-developers More help : https://help.launchpad.net/ListHelp