# Changes InnoDB IO code so that fsync(), pread() and pwrite() are restarted
# when interrupted by a signal.
#
-diff -ruN a/storage/innobase/os/os0file.c b/storage/innobase/os/os0file.c
---- a/storage/innobase/os/os0file.c 2011-04-20 12:09:57.000000000 +0400
-+++ b/storage/innobase/os/os0file.c 2011-04-20 12:10:04.000000000 +0400
-@@ -2083,6 +2083,9 @@
+--- a/storage/innobase/os/os0file.c
++++ b/storage/innobase/os/os0file.c
+@@ -2093,6 +2093,9 @@
failures++;
retry = TRUE;
} else {
retry = FALSE;
-@@ -2212,6 +2215,7 @@
+@@ -2223,6 +2226,7 @@
off_t offs;
#if defined(HAVE_PREAD) && !defined(HAVE_BROKEN_PREAD)
ssize_t n_bytes;
#endif /* HAVE_PREAD && !HAVE_BROKEN_PREAD */
ulint sec;
ulint ms;
-@@ -2252,7 +2256,18 @@
+@@ -2263,7 +2267,18 @@
os_n_pending_reads++;
os_mutex_exit(os_file_count_mutex);
os_mutex_enter(os_file_count_mutex);
os_file_n_pending_preads--;
-@@ -2271,6 +2286,7 @@
+@@ -2282,6 +2297,7 @@
{
off_t ret_offset;
ssize_t ret;
#ifndef UNIV_HOTBACKUP
ulint i;
#endif /* !UNIV_HOTBACKUP */
-@@ -2291,7 +2307,17 @@
+@@ -2302,7 +2318,17 @@
if (ret_offset < 0) {
ret = -1;
} else {
}
#ifndef UNIV_HOTBACKUP
-@@ -2330,6 +2356,7 @@
+@@ -2341,6 +2367,7 @@
offset */
{
ssize_t ret;
off_t offs;
ut_a((offset & 0xFFFFFFFFUL) == offset);
-@@ -2357,7 +2384,18 @@
+@@ -2368,7 +2395,18 @@
os_n_pending_writes++;
os_mutex_exit(os_file_count_mutex);
os_mutex_enter(os_file_count_mutex);
os_file_n_pending_pwrites--;
-@@ -2404,7 +2442,17 @@
+@@ -2415,7 +2453,17 @@
goto func_exit;
}