Details
-
Task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Cannot Reproduce
-
None
Description
The following patch is suggested by Stewart Smith:
memory barrier at end of setting up innodb aio
|
|
we need a memory barrier here as otherwise when IO threads start they
|
can get a stale view of the data structure.
|
|
It turns out that POWER8 is fast enough with large enough caches that
|
this can actually be a problem.
|
|
You can reproduce this by attempting to do a lot of writes shortly after
|
server startup - you'll hit a really odd assert.
|
|
Index: mysql-5.6.17/storage/innobase/os/os0file.cc
|
===================================================================
|
--- mysql-5.6.17.orig/storage/innobase/os/os0file.cc
|
+++ mysql-5.6.17/storage/innobase/os/os0file.cc
|
@@ -3782,7 +3782,7 @@ skip_native_aio:
|
slot->ret = 0;
|
#endif /* WIN_ASYNC_IO */
|
}
|
-
|
+ __sync_synchronize();
|
return(array);
|
}
|
Attachments
Issue Links
- is part of
-
MDEV-6530 Examine and apply Power8 patches suggested by Stewart Smith
-
- Closed
-
- links to
Quoting Stewart:
This patch adds __sync_synchronize() to
innobase_init()/innobase_start_or_create_for_mysql()/os_aio_init()/os_aio_array_create()
But I/O threads are created later in
innobase_init()/innobase_start_or_create_for_mysql()
And pthread_create() is supposed to synchronize memory anyway:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11