diff options
author | Jan Lindström <jan.lindstrom@mariadb.com> | 2016-07-04 17:31:14 +0300 |
---|---|---|
committer | Jan Lindström <jan.lindstrom@mariadb.com> | 2016-07-04 17:38:47 +0300 |
commit | 406fe77763c43dd7e151d92364e0296539077d4a (patch) | |
tree | b9669c2143cc454a8d3e931999376c2d37b51cec /storage/xtradb | |
parent | 0fdb17e6c3f50ae22eb97b6363bcbd8b0cd9e040 (diff) | |
download | mariadb-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.cc | 14 | ||||
-rw-r--r-- | storage/xtradb/fil/fil0fil.cc | 22 | ||||
-rw-r--r-- | storage/xtradb/include/fil0fil.h | 8 |
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 */ /************************************************************************* |