Bug #70047 srv_buf_size not declared
Submitted: 15 Aug 2013 11:57 Modified: 3 Oct 2013 16:02
Reporter: Michal Hrusecky Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version:5.6.12 OS:Any
Assigned to: CPU Architecture:Any

[15 Aug 2013 11:57] Michal Hrusecky
Description:
File storage/innobase/row/row0log.cc contains on lines 2368 and 3156 references to variable srv_buf_size which is not defined anywhere.

How to repeat:
If you have a correct combination of defines, you may end up in place where this code tries to be compiled.
[15 Aug 2013 13:05] MySQL Verification Team
#ifdef FALLOC_FL_PUNCH_HOLE
		/* Try to deallocate the space for the file on disk.
		This should work on ext4 on Linux 2.6.39 and later,
		and be ignored when the operation is unsupported. */
		fallocate(index->online_log->fd,
			  FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
			  ofs, srv_buf_size);
#endif /* FALLOC_FL_PUNCH_HOLE */
[17 Aug 2013 5:38] Joel Bion
I'd rate "failure to compile mysql" as something higher than an S3, because it is not clear to me how I easily work around this. I am running glibc 2.18, compiled against Linux 3.10.6
[17 Aug 2013 6:04] Joel Bion
It is possible that the fix is to simply change srv_buf_size to srv_sort_buf_size. The previous code (posix_fadvise call) seems to hint that this would be the case. However, I cannot claim sufficient knowledge of this code to say that IS the solution; just a possibility, one that could be wrong.
[21 Aug 2013 13:01] Naga Satyanarayana Bodapati
Your observation is right. It should be srv_sort_buf_size. Can you please tell me how you enabled this flag?
[30 Aug 2013 21:09] Joel Bion
My cmake invocation is: 

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DWITH_SSL=system -DWITH_EMBEDDED_SERVER=true

My system is Linux 3.10.10, with glibc 2.18, gcc 4.8.1. I noticed this with the glibc upgrade to 2.18.
[5 Sep 2013 15:21] Raghavendra Prabhu
I can repeat the same (with kernel 3.10, gcc 4.8.1, glibc 2.18).

Is the fix simply changing srv_buf_size to srv_sort_buf_size.

FALLOC_FL_PUNCH_HOLE should be defined since Linux 2.6.38 - http://man7.org/linux/man-pages/man2/fallocate.2.html
[24 Feb 2015 1:46] Eric Promislow
How I got here:

Downloaded 5.6.10 source
$ mkdir bld && cd bld
$ cmake -DIGNORE_AIO_CHECK=1 -DBUILD_CONFIG=mysql_release ..
$ make