MINOR: chunks: Make sure trash_size is only set once.

The trash_size variable is shared by all threads, and is set by all threads,
when alloc_trash_buffers() is called. To make sure it's set only once,
to silence a harmless data race, use a CAS to set it, and only set it if it
was 0.
This commit is contained in:
Olivier Houchard 2019-06-07 14:35:35 +02:00 committed by Olivier Houchard
parent 1bfd6020ce
commit 1c3b83242d

View File

@ -68,8 +68,9 @@ struct buffer *get_trash_chunk(void)
*/
static int alloc_trash_buffers(int bufsize)
{
int old = 0;
chunk_init(&trash, my_realloc2(trash.area, bufsize), bufsize);
trash_size = bufsize;
HA_ATOMIC_CAS(&trash_size, &old, bufsize);
trash_buf1 = (char *)my_realloc2(trash_buf1, bufsize);
trash_buf2 = (char *)my_realloc2(trash_buf2, bufsize);
return trash.area && trash_buf1 && trash_buf2;