summaryrefslogtreecommitdiff
path: root/innobase/fil/fil0fil.c
diff options
context:
space:
mode:
Diffstat (limited to 'innobase/fil/fil0fil.c')
-rw-r--r--innobase/fil/fil0fil.c50
1 files changed, 33 insertions, 17 deletions
diff --git a/innobase/fil/fil0fil.c b/innobase/fil/fil0fil.c
index 69c076d78f3..cfd9813101d 100644
--- a/innobase/fil/fil0fil.c
+++ b/innobase/fil/fil0fil.c
@@ -3557,6 +3557,7 @@ fil_extend_space_to_desired_size(
*actual_size = space->size;
+#ifndef UNIV_HOTBACKUP
if (space_id == 0) {
ulint pages_per_mb = (1024 * 1024) / UNIV_PAGE_SIZE;
@@ -3566,6 +3567,7 @@ fil_extend_space_to_desired_size(
srv_data_file_sizes[srv_n_data_files - 1] =
(node->size / pages_per_mb) * pages_per_mb;
}
+#endif /* !UNIV_HOTBACKUP */
/*
printf("Extended %s to %lu, actual size %lu pages\n", space->name,
@@ -3821,6 +3823,31 @@ fil_node_complete_io(
}
/************************************************************************
+Report information about an invalid page access. */
+static
+void
+fil_report_invalid_page_access(
+/*===========================*/
+ ulint block_offset, /* in: block offset */
+ ulint space_id, /* in: space id */
+ const char* space_name, /* in: space name */
+ ulint byte_offset, /* in: byte offset */
+ ulint len, /* in: I/O length */
+ ulint type) /* in: I/O type */
+{
+ fprintf(stderr,
+ "InnoDB: Error: trying to access page number %lu in space %lu,\n"
+ "InnoDB: space name %s,\n"
+ "InnoDB: which is outside the tablespace bounds.\n"
+ "InnoDB: Byte offset %lu, len %lu, i/o type %lu.\n"
+ "InnoDB: If you get this error at mysqld startup, please check that\n"
+ "InnoDB: your my.cnf matches the ibdata files that you have in the\n"
+ "InnoDB: MySQL server.\n",
+ (ulong) block_offset, (ulong) space_id, space_name,
+ (ulong) byte_offset, (ulong) len, (ulong) type);
+}
+
+/************************************************************************
Reads or writes data. This operation is asynchronous (aio). */
ulint
@@ -3926,14 +3953,8 @@ fil_io(
for (;;) {
if (node == NULL) {
- fprintf(stderr,
- "InnoDB: Error: trying to access page number %lu in space %lu,\n"
- "InnoDB: space name %s,\n"
- "InnoDB: which is outside the tablespace bounds.\n"
- "InnoDB: Byte offset %lu, len %lu, i/o type %lu\n",
- (ulong) block_offset, (ulong) space_id,
- space->name, (ulong) byte_offset, (ulong) len,
- (ulong) type);
+ fil_report_invalid_page_access(block_offset, space_id,
+ space->name, byte_offset, len, type);
ut_error;
}
@@ -3962,15 +3983,10 @@ fil_io(
if (space->purpose == FIL_TABLESPACE && space->id != 0
&& node->size <= block_offset) {
- fprintf(stderr,
- "InnoDB: Error: trying to access page number %lu in space %lu,\n"
- "InnoDB: space name %s,\n"
- "InnoDB: which is outside the tablespace bounds.\n"
- "InnoDB: Byte offset %lu, len %lu, i/o type %lu\n",
- (ulong) block_offset, (ulong) space_id,
- space->name, (ulong) byte_offset, (ulong) len,
- (ulong) type);
- ut_a(0);
+ fil_report_invalid_page_access(block_offset, space_id,
+ space->name, byte_offset, len, type);
+
+ ut_error;
}
/* Now we have made the changes in the data structures of system */