diff options
author | Inaam Rana <inaam.rana@oracle.com> | 2012-01-31 09:50:17 -0500 |
---|---|---|
committer | Inaam Rana <inaam.rana@oracle.com> | 2012-01-31 09:50:17 -0500 |
commit | 43108b2c2b2fce7868260ae369d702229d1be397 (patch) | |
tree | 22b7e74e14160e707626eb84fd82fdc4e1897c45 /storage/innobase/fil | |
parent | d31520393005dde6cfa5d0640720b6a241324446 (diff) | |
download | mariadb-git-43108b2c2b2fce7868260ae369d702229d1be397.tar.gz |
bug#13636122: mysql-5.1 => mysql-5.5
Diffstat (limited to 'storage/innobase/fil')
-rw-r--r-- | storage/innobase/fil/fil0fil.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/storage/innobase/fil/fil0fil.c b/storage/innobase/fil/fil0fil.c index 2e4c6aeeb60..091becca258 100644 --- a/storage/innobase/fil/fil0fil.c +++ b/storage/innobase/fil/fil0fil.c @@ -964,11 +964,6 @@ retry: return; } - if (fil_system->n_open < fil_system->max_n_open) { - - return; - } - space = fil_space_get_by_id(space_id); if (space != NULL && space->stop_ios) { @@ -985,6 +980,25 @@ retry: mutex_exit(&fil_system->mutex); +#ifndef UNIV_HOTBACKUP + + /* Wake the i/o-handler threads to make sure pending + i/o's are performed */ + os_aio_simulated_wake_handler_threads(); + + /* The sleep here is just to give IO helper threads a + bit of time to do some work. It is not required that + all IO related to the tablespace being renamed must + be flushed here as we do fil_flush() in + fil_rename_tablespace() as well. */ + os_thread_sleep(20000); + +#endif /* UNIV_HOTBACKUP */ + + /* Flush tablespaces so that we can close modified + files in the LRU list */ + fil_flush_file_spaces(FIL_TABLESPACE); + os_thread_sleep(20000); count2++; @@ -992,6 +1006,11 @@ retry: goto retry; } + if (fil_system->n_open < fil_system->max_n_open) { + + return; + } + /* If the file is already open, no need to do anything; if the space does not exist, we handle the situation in the function which called this function */ @@ -2551,7 +2570,7 @@ fil_rename_tablespace( retry: count++; - if (count > 1000) { + if (!(count % 1000)) { ut_print_timestamp(stderr); fputs(" InnoDB: Warning: problems renaming ", stderr); ut_print_filename(stderr, old_name); |