1 # name : remove_fcntl_excessive_calls.patch
6 # Any small change to this file in the main branch
7 # should be done or reviewed by the maintainer!
8 diff -ruN a/patch_info/remove_fcntl_excessive_calls.info b/patch_info/remove_fcntl_excessive_calls.info
9 --- a/patch_info/remove_fcntl_excessive_calls.info 1970-01-01 03:00:00.000000000 +0300
10 +++ b/patch_info/remove_fcntl_excessive_calls.info 2010-07-22 21:42:08.560424001 +0400
12 +File=remove_fcntl_excessive_calls.patch
13 +Name=remove fcntl excessive calls
15 +Author=This is a port of the official fix.
18 diff -ruN a/sql/net_serv.cc b/sql/net_serv.cc
19 --- a/sql/net_serv.cc 2010-06-03 19:50:27.000000000 +0400
20 +++ b/sql/net_serv.cc 2010-07-22 21:40:30.680424001 +0400
22 the client should have a bigger max_allowed_packet.
25 -#if defined(__WIN__) || !defined(MYSQL_SERVER)
26 +#if (defined(__WIN__) || !defined(MYSQL_SERVER)) && !defined(NO_ALARM)
27 /* The following is because alarms doesn't work on windows. */
31 if (vio != 0) /* If real connection */
33 net->fd = vio_fd(vio); /* For perl DBI/DBD */
34 -#if defined(MYSQL_SERVER) && !defined(__WIN__)
35 +#if defined(MYSQL_SERVER) && !defined(__WIN__) && !defined(NO_ALARM)
36 if (!(test_flags & TEST_BLOCKING))
40 if ((long) (length= vio_write(net->vio,pos,(size_t) (end-pos))) <= 0)
42 my_bool interrupted = vio_should_retry(net->vio);
43 -#if !defined(__WIN__)
44 +#if !defined(NO_ALARM) && !defined(__WIN__)
45 if ((interrupted || length == 0) && !thr_alarm_in_use(&alarmed))
47 if (!thr_alarm(&alarmed, net->write_timeout, &alarm_buff))
50 update_statistics(thd_increment_bytes_sent(length));
53 +#if !defined(NO_ALARM) && !defined(__WIN__)
58 thr_alarm(&alarmed,net->read_timeout,&alarm_buff);
60 /* Read timeout is set in my_net_set_read_timeout */
61 + DBUG_ASSERT(net_blocking);
64 pos = net->buff + net->where_b; /* net->packet -4 */
67 DBUG_PRINT("info",("vio_read returned %ld errno: %d",
68 (long) length, vio_errno(net->vio)));
69 -#if !defined(__WIN__) || defined(MYSQL_SERVER)
70 +#if !defined(NO_ALARM) && (!defined(__WIN__) || defined(MYSQL_SERVER))
72 We got an error that there was no data on the socket. We now set up
73 an alarm to not 'read forever', change the socket to non blocking