summaryrefslogtreecommitdiff
path: root/storage/xtradb
diff options
context:
space:
mode:
authorJan Lindström <jan.lindstrom@mariadb.com>2016-07-04 17:31:14 +0300
committerJan Lindström <jan.lindstrom@mariadb.com>2016-07-04 17:38:47 +0300
commit406fe77763c43dd7e151d92364e0296539077d4a (patch)
treeb9669c2143cc454a8d3e931999376c2d37b51cec /storage/xtradb
parent0fdb17e6c3f50ae22eb97b6363bcbd8b0cd9e040 (diff)
downloadmariadb-git-406fe77763c43dd7e151d92364e0296539077d4a.tar.gz
Add more diagnostic to find out the problem on
innodb_shutdown_for_mysql in ppc64el on test case innodb_fts.innodb_fts_stopword_charset.
Diffstat (limited to 'storage/xtradb')
-rw-r--r--storage/xtradb/buf/buf0buf.cc14
-rw-r--r--storage/xtradb/fil/fil0fil.cc22
-rw-r--r--storage/xtradb/include/fil0fil.h8
3 files changed, 42 insertions, 2 deletions
diff --git a/storage/xtradb/buf/buf0buf.cc b/storage/xtradb/buf/buf0buf.cc
index 3186cd47753..489c690d9f9 100644
--- a/storage/xtradb/buf/buf0buf.cc
+++ b/storage/xtradb/buf/buf0buf.cc
@@ -4694,10 +4694,20 @@ buf_all_freed_instance(
mutex_exit(&buf_pool->LRU_list_mutex);
if (UNIV_LIKELY_NULL(block)) {
- fprintf(stderr,
- "Page %lu %lu still fixed or dirty\n",
+ fil_space_t* space = fil_space_get(block->page.space);
+ ib_logf(IB_LOG_LEVEL_ERROR,
+ "Page %lu %lu still fixed or dirty.",
(ulong) block->page.space,
(ulong) block->page.offset);
+ ib_logf(IB_LOG_LEVEL_ERROR,
+ "Page oldest_modification %lu fix_count %d io_fix %d.",
+ block->page.oldest_modification,
+ block->page.buf_fix_count,
+ buf_page_get_io_fix(&block->page));
+ ib_logf(IB_LOG_LEVEL_ERROR,
+ "Page space_id %lu name %s.",
+ (ulong)block->page.space,
+ (space && space->name) ? space->name : "NULL");
ut_error;
}
}
diff --git a/storage/xtradb/fil/fil0fil.cc b/storage/xtradb/fil/fil0fil.cc
index 6bc3b57d9ca..40a01c9f055 100644
--- a/storage/xtradb/fil/fil0fil.cc
+++ b/storage/xtradb/fil/fil0fil.cc
@@ -1344,6 +1344,28 @@ fil_space_free(
/*******************************************************************//**
Returns a pointer to the file_space_t that is in the memory cache
+associated with a space id.
+@return file_space_t pointer, NULL if space not found */
+fil_space_t*
+fil_space_get(
+/*==========*/
+ ulint id) /*!< in: space id */
+{
+ fil_space_t* space;
+
+ ut_ad(fil_system);
+
+ mutex_enter(&fil_system->mutex);
+
+ space = fil_space_get_by_id(id);
+
+ mutex_exit(&fil_system->mutex);
+
+ return (space);
+}
+
+/*******************************************************************//**
+Returns a pointer to the file_space_t that is in the memory cache
associated with a space id. The caller must lock fil_system->mutex.
@return file_space_t pointer, NULL if space not found */
UNIV_INLINE
diff --git a/storage/xtradb/include/fil0fil.h b/storage/xtradb/include/fil0fil.h
index 547a0c621a5..b71d0f0f705 100644
--- a/storage/xtradb/include/fil0fil.h
+++ b/storage/xtradb/include/fil0fil.h
@@ -1210,6 +1210,14 @@ fil_user_tablespace_restore_page(
ulint page_no); /* in: page_no to obtain from double
write buffer */
+/*******************************************************************//**
+Returns a pointer to the file_space_t that is in the memory cache
+associated with a space id.
+@return file_space_t pointer, NULL if space not found */
+fil_space_t*
+fil_space_get(
+/*==========*/
+ ulint id); /*!< in: space id */
#endif /* !UNIV_INNOCHECKSUM */
/*************************************************************************