diff options
-rw-r--r-- | storage/innobase/log/log0recv.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/storage/innobase/log/log0recv.cc b/storage/innobase/log/log0recv.cc index dd3ce42c794..674dee0a49e 100644 --- a/storage/innobase/log/log0recv.cc +++ b/storage/innobase/log/log0recv.cc @@ -836,13 +836,16 @@ processed: space->free_len= flst_get_len(FSP_HEADER_OFFSET + FSP_FREE + page); fil_node_t *node= UT_LIST_GET_FIRST(space->chain); if (!space->acquire()) + { +free_space: + fil_space_free(it->first, false); goto next_item; + } if (os_file_write(IORequestWrite, node->name, node->handle, - page, 0, fil_space_t::physical_size(flags) != - DB_SUCCESS)) + page, 0, fil_space_t::physical_size(flags)) != DB_SUCCESS) { space->release(); - goto next_item; + goto free_space; } space->release(); it->second.space= space; |