Commit 406fe777 authored by Jan Lindström's avatar Jan Lindström

Add more diagnostic to find out the problem on

innodb_shutdown_for_mysql in ppc64el on test
case innodb_fts.innodb_fts_stopword_charset.
parent 0fdb17e6
...@@ -4408,10 +4408,20 @@ buf_all_freed_instance( ...@@ -4408,10 +4408,20 @@ buf_all_freed_instance(
const buf_block_t* block = buf_chunk_not_freed(chunk); const buf_block_t* block = buf_chunk_not_freed(chunk);
if (UNIV_LIKELY_NULL(block)) { if (UNIV_LIKELY_NULL(block)) {
fprintf(stderr, fil_space_t* space = fil_space_get(block->page.space);
"Page %lu %lu still fixed or dirty\n", ib_logf(IB_LOG_LEVEL_ERROR,
"Page %lu %lu still fixed or dirty.",
(ulong) block->page.space, (ulong) block->page.space,
(ulong) block->page.offset); (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; ut_error;
} }
} }
......
...@@ -1299,6 +1299,28 @@ fil_space_free( ...@@ -1299,6 +1299,28 @@ fil_space_free(
return(TRUE); return(TRUE);
} }
/*******************************************************************//**
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 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. associated with a space id. The caller must lock fil_system->mutex.
......
...@@ -1210,5 +1210,13 @@ fil_user_tablespace_restore_page( ...@@ -1210,5 +1210,13 @@ fil_user_tablespace_restore_page(
ulint page_no); /* in: page_no to obtain from double ulint page_no); /* in: page_no to obtain from double
write buffer */ 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 */ #endif /* !UNIV_INNOCHECKSUM */
#endif /* fil0fil_h */ #endif /* fil0fil_h */
...@@ -4694,10 +4694,20 @@ buf_all_freed_instance( ...@@ -4694,10 +4694,20 @@ buf_all_freed_instance(
mutex_exit(&buf_pool->LRU_list_mutex); mutex_exit(&buf_pool->LRU_list_mutex);
if (UNIV_LIKELY_NULL(block)) { if (UNIV_LIKELY_NULL(block)) {
fprintf(stderr, fil_space_t* space = fil_space_get(block->page.space);
"Page %lu %lu still fixed or dirty\n", ib_logf(IB_LOG_LEVEL_ERROR,
"Page %lu %lu still fixed or dirty.",
(ulong) block->page.space, (ulong) block->page.space,
(ulong) block->page.offset); (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; ut_error;
} }
} }
......
...@@ -1342,6 +1342,28 @@ fil_space_free( ...@@ -1342,6 +1342,28 @@ fil_space_free(
return(TRUE); return(TRUE);
} }
/*******************************************************************//**
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 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. associated with a space id. The caller must lock fil_system->mutex.
......
...@@ -1210,6 +1210,14 @@ fil_user_tablespace_restore_page( ...@@ -1210,6 +1210,14 @@ fil_user_tablespace_restore_page(
ulint page_no); /* in: page_no to obtain from double ulint page_no); /* in: page_no to obtain from double
write buffer */ 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 */ #endif /* !UNIV_INNOCHECKSUM */
/************************************************************************* /*************************************************************************
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment