diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2017-06-12 17:43:07 +0300 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2017-06-12 17:43:07 +0300 |
commit | a78476d342969caece14ee4fc3f5ac4a58b0721a (patch) | |
tree | cb36c20c39a372911c5b7a4d0c63275f751733d5 /storage/innobase/fsp/fsp0fsp.cc | |
parent | 7a12894de11ab04b93c9e96359008386b3b41cbb (diff) | |
parent | 3976ec1e83d7ae1079b4afa4c12b4ec533d665f6 (diff) | |
download | mariadb-git-a78476d342969caece14ee4fc3f5ac4a58b0721a.tar.gz |
Merge 10.1 into 10.2
Diffstat (limited to 'storage/innobase/fsp/fsp0fsp.cc')
-rw-r--r-- | storage/innobase/fsp/fsp0fsp.cc | 51 |
1 files changed, 14 insertions, 37 deletions
diff --git a/storage/innobase/fsp/fsp0fsp.cc b/storage/innobase/fsp/fsp0fsp.cc index 467fbbd557d..bf86d83a8c7 100644 --- a/storage/innobase/fsp/fsp0fsp.cc +++ b/storage/innobase/fsp/fsp0fsp.cc @@ -874,14 +874,12 @@ fsp_try_extend_data_file_with_pages( @param[in,out] space tablespace @param[in,out] header tablespace header @param[in,out] mtr mini-transaction -@return whether the tablespace was extended */ -static UNIV_COLD MY_ATTRIBUTE((nonnull)) +@return number of pages added +@retval 0 if the tablespace was not extended */ +UNIV_COLD MY_ATTRIBUTE((nonnull)) +static ulint -fsp_try_extend_data_file( - fil_space_t* space, - fsp_header_t* header, - mtr_t* mtr, - ulint* n_pages_added) +fsp_try_extend_data_file(fil_space_t* space, fsp_header_t* header, mtr_t* mtr) { ulint size; /* current number of pages in the datafile */ ulint size_increase; /* number of pages to extend this file */ @@ -904,7 +902,7 @@ fsp_try_extend_data_file( << " innodb_data_file_path."; srv_sys_space.set_tablespace_full_status(true); } - return(false); + return(0); } else if (fsp_is_system_temporary(space->id) && !srv_tmp_space.can_auto_extend_last_file()) { @@ -918,7 +916,7 @@ fsp_try_extend_data_file( << " innodb_temp_data_file_path."; srv_tmp_space.set_tablespace_full_status(true); } - return(false); + return(0); } size = mach_read_from_4(header + FSP_SIZE); @@ -941,7 +939,7 @@ fsp_try_extend_data_file( /* Let us first extend the file to extent_size */ if (!fsp_try_extend_data_file_with_pages( space, extent_pages - 1, header, mtr)) { - return(false); + return(0); } size = extent_pages; @@ -951,16 +949,13 @@ fsp_try_extend_data_file( } if (size_increase == 0) { - - return(false); + return(0); } if (!fil_space_extend(space, size + size_increase)) { - return(false); + return(0); } - *n_pages_added = size_increase; - /* We ignore any fragments of a full megabyte when storing the size to the space header */ @@ -970,7 +965,7 @@ fsp_try_extend_data_file( mlog_write_ulint( header + FSP_SIZE, space->size_in_header, MLOG_4BYTES, mtr); - return(true); + return(size_increase); } /** Calculate the number of pages to extend a datafile. @@ -1062,8 +1057,7 @@ fsp_fill_free_list( } if (!skip_resize) { - ulint n_pages = 0; - fsp_try_extend_data_file(space, header, mtr, &n_pages); + fsp_try_extend_data_file(space, header, mtr); size = space->size_in_header; } } @@ -2784,8 +2778,6 @@ fsp_reserve_free_extents( ulint n_free_up; ulint reserve; size_t total_reserved = 0; - ulint rounds = 0; - ulint n_pages_added = 0; ut_ad(mtr); *n_reserved = n_ext; @@ -2866,23 +2858,8 @@ try_again: return(true); } try_to_extend: - n_pages_added = 0; - - if (fsp_try_extend_data_file(space, space_header, mtr, &n_pages_added)) { - - rounds++; - total_reserved += n_pages_added; - - if (rounds > 10) { - ib::info() << "Space id: " - << space << " trying to reserve: " - << n_ext << " extents actually reserved: " - << n_pages_added << " reserve: " - << reserve << " free: " << n_free - << " size: " << size - << " rounds: " << rounds - << " total_reserved: " << total_reserved << "."; - } + if (ulint n = fsp_try_extend_data_file(space, space_header, mtr)) { + total_reserved += n; goto try_again; } |