Commit 8f85a1a6 authored by unknown's avatar unknown

srv0srv.h One can now specify innodb_unix_file_flush_method in my.cnf

srv0srv.c	One can now specify innodb_unix_file_flush_method in my.cnf
srv0start.c	One can now specify innodb_unix_file_flush_method in my.cnf
ha_innobase.cc	One can now specify innodb_unix_file_flush_method in my.cnf
ha_innobase.h	One can now specify innodb_unix_file_flush_method in my.cnf
mysqld.cc	One can now specify innodb_unix_file_flush_method in my.cnf


sql/ha_innobase.cc:
  One can now specify innodb_unix_file_flush_method in my.cnf
sql/ha_innobase.h:
  One can now specify innodb_unix_file_flush_method in my.cnf
sql/mysqld.cc:
  One can now specify innodb_unix_file_flush_method in my.cnf
innobase/srv/srv0srv.c:
  One can now specify innodb_unix_file_flush_method in my.cnf
innobase/srv/srv0start.c:
  One can now specify innodb_unix_file_flush_method in my.cnf
innobase/include/srv0srv.h:
  One can now specify innodb_unix_file_flush_method in my.cnf
BitKeeper/etc/logging_ok:
  Logging to logging@openlogging.org accepted
parent cef9025b
jani@janikt.pp.saunalahti.fi jani@janikt.pp.saunalahti.fi
monty@tik.mysql.fi monty@tik.mysql.fi
monty@donna.mysql.fi monty@donna.mysql.fi
heikki@donna.mysql.fi
...@@ -48,6 +48,9 @@ extern dulint srv_archive_recovery_limit_lsn; ...@@ -48,6 +48,9 @@ extern dulint srv_archive_recovery_limit_lsn;
extern ulint srv_lock_wait_timeout; extern ulint srv_lock_wait_timeout;
extern char* srv_unix_file_flush_method_str;
extern ulint srv_unix_file_flush_method;
extern ibool srv_set_thread_priorities; extern ibool srv_set_thread_priorities;
extern int srv_query_thread_priority; extern int srv_query_thread_priority;
...@@ -100,6 +103,13 @@ typedef struct srv_sys_struct srv_sys_t; ...@@ -100,6 +103,13 @@ typedef struct srv_sys_struct srv_sys_t;
/* The server system */ /* The server system */
extern srv_sys_t* srv_sys; extern srv_sys_t* srv_sys;
/* Alternatives for fiel flush option in Unix; see the InnoDB manual about
what these mean */
#define SRV_UNIX_FDATASYNC 1
#define SRV_UNIX_O_DSYNC 2
#define SRV_UNIX_LITTLESYNC 3
#define SRV_UNIX_NOSYNC 4
/************************************************************************* /*************************************************************************
Boots Innobase server. */ Boots Innobase server. */
......
...@@ -88,6 +88,9 @@ dulint srv_archive_recovery_limit_lsn; ...@@ -88,6 +88,9 @@ dulint srv_archive_recovery_limit_lsn;
ulint srv_lock_wait_timeout = 1024 * 1024 * 1024; ulint srv_lock_wait_timeout = 1024 * 1024 * 1024;
char* srv_unix_file_flush_method_str = NULL;
ulint srv_unix_file_flush_method = 0;
ibool srv_set_thread_priorities = TRUE; ibool srv_set_thread_priorities = TRUE;
int srv_query_thread_priority = 0; int srv_query_thread_priority = 0;
/*-------------------------------------------*/ /*-------------------------------------------*/
......
...@@ -532,6 +532,24 @@ innobase_start_or_create_for_mysql(void) ...@@ -532,6 +532,24 @@ innobase_start_or_create_for_mysql(void)
srv_is_being_started = TRUE; srv_is_being_started = TRUE;
if (0 == ut_strcmp(srv_unix_file_flush_method_str, "fdatasync")) {
srv_unix_file_flush_method = SRV_UNIX_FDATASYNC;
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str, "O_DSYNC")) {
srv_unix_file_flush_method = SRV_UNIX_O_DSYNC;
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str,
"littlesync")) {
srv_unix_file_flush_method = SRV_UNIX_LITTLESYNC;
} else if (0 == ut_strcmp(srv_unix_file_flush_method_str, "nosync")) {
srv_unix_file_flush_method = SRV_UNIX_NOSYNC;
} else {
fprintf(stderr,
"InnoDB: Unrecognized value for innodb_unix_file_flush_method\n");
return(DB_ERROR);
}
printf("InnoDB file flush method %lu\n", srv_unix_file_flush_method);
os_aio_use_native_aio = srv_use_native_aio; os_aio_use_native_aio = srv_use_native_aio;
err = srv_boot(); err = srv_boot();
......
...@@ -83,6 +83,7 @@ long innobase_mirrored_log_groups, innobase_log_files_in_group, ...@@ -83,6 +83,7 @@ long innobase_mirrored_log_groups, innobase_log_files_in_group,
char *innobase_data_home_dir, *innobase_data_file_path; char *innobase_data_home_dir, *innobase_data_file_path;
char *innobase_log_group_home_dir, *innobase_log_arch_dir; char *innobase_log_group_home_dir, *innobase_log_arch_dir;
char *innobase_unix_file_flush_method;
bool innobase_flush_log_at_trx_commit, innobase_log_archive, bool innobase_flush_log_at_trx_commit, innobase_log_archive,
innobase_use_native_aio; innobase_use_native_aio;
...@@ -474,6 +475,10 @@ innobase_init(void) ...@@ -474,6 +475,10 @@ innobase_init(void)
DBUG_RETURN(TRUE); DBUG_RETURN(TRUE);
} }
srv_unix_file_flush_method_str = (innobase_unix_file_flush_method ?
innobase_unix_file_flush_method :
(char*)"fdatasync");
srv_n_log_groups = (ulint) innobase_mirrored_log_groups; srv_n_log_groups = (ulint) innobase_mirrored_log_groups;
srv_n_log_files = (ulint) innobase_log_files_in_group; srv_n_log_files = (ulint) innobase_log_files_in_group;
srv_log_file_size = (ulint) innobase_log_file_size; srv_log_file_size = (ulint) innobase_log_file_size;
......
...@@ -161,6 +161,7 @@ extern long innobase_buffer_pool_size, innobase_additional_mem_pool_size; ...@@ -161,6 +161,7 @@ extern long innobase_buffer_pool_size, innobase_additional_mem_pool_size;
extern long innobase_file_io_threads, innobase_lock_wait_timeout; extern long innobase_file_io_threads, innobase_lock_wait_timeout;
extern char *innobase_data_home_dir, *innobase_data_file_path; extern char *innobase_data_home_dir, *innobase_data_file_path;
extern char *innobase_log_group_home_dir, *innobase_log_arch_dir; extern char *innobase_log_group_home_dir, *innobase_log_arch_dir;
extern char *innobase_unix_file_flush_method;
extern bool innobase_flush_log_at_trx_commit, innobase_log_archive, extern bool innobase_flush_log_at_trx_commit, innobase_log_archive,
innobase_use_native_aio; innobase_use_native_aio;
......
...@@ -2456,6 +2456,7 @@ enum options { ...@@ -2456,6 +2456,7 @@ enum options {
OPT_INNODB_LOG_ARCH_DIR, OPT_INNODB_LOG_ARCH_DIR,
OPT_INNODB_LOG_ARCHIVE, OPT_INNODB_LOG_ARCHIVE,
OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT, OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT,
OPT_INNODB_UNIX_FILE_FLUSH_METHOD,
OPT_SAFE_SHOW_DB, OPT_SAFE_SHOW_DB,
OPT_GEMINI_SKIP, OPT_INNODB_SKIP, OPT_GEMINI_SKIP, OPT_INNODB_SKIP,
OPT_TEMP_POOL, OPT_TX_ISOLATION, OPT_TEMP_POOL, OPT_TX_ISOLATION,
...@@ -2516,6 +2517,8 @@ static struct option long_options[] = { ...@@ -2516,6 +2517,8 @@ static struct option long_options[] = {
OPT_INNODB_LOG_ARCHIVE}, OPT_INNODB_LOG_ARCHIVE},
{"innodb_flush_log_at_trx_commit", optional_argument, 0, {"innodb_flush_log_at_trx_commit", optional_argument, 0,
OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT}, OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT},
{"innodb_unix_file_flush_method", required_argument, 0,
OPT_INNODB_UNIX_FILE_FLUSH_METHOD},
#endif #endif
{"help", no_argument, 0, '?'}, {"help", no_argument, 0, '?'},
{"init-file", required_argument, 0, (int) OPT_INIT_FILE}, {"init-file", required_argument, 0, (int) OPT_INIT_FILE},
...@@ -2793,6 +2796,7 @@ struct show_var_st init_vars[]= { ...@@ -2793,6 +2796,7 @@ struct show_var_st init_vars[]= {
{"innodb_log_arch_dir", (char*) &innobase_log_arch_dir, SHOW_CHAR_PTR}, {"innodb_log_arch_dir", (char*) &innobase_log_arch_dir, SHOW_CHAR_PTR},
{"innodb_log_archive", (char*) &innobase_log_archive, SHOW_MY_BOOL}, {"innodb_log_archive", (char*) &innobase_log_archive, SHOW_MY_BOOL},
{"innodb_log_group_home_dir", (char*) &innobase_log_group_home_dir, SHOW_CHAR_PTR}, {"innodb_log_group_home_dir", (char*) &innobase_log_group_home_dir, SHOW_CHAR_PTR},
{"innodb_unix_file_flush_method", (char*) &innobase_unix_file_flush_method, SHOW_CHAR_PTR},
#endif #endif
{"interactive_timeout", (char*) &net_interactive_timeout, SHOW_LONG}, {"interactive_timeout", (char*) &net_interactive_timeout, SHOW_LONG},
{"join_buffer_size", (char*) &join_buff_size, SHOW_LONG}, {"join_buffer_size", (char*) &join_buff_size, SHOW_LONG},
...@@ -3653,6 +3657,9 @@ static void get_options(int argc,char **argv) ...@@ -3653,6 +3657,9 @@ static void get_options(int argc,char **argv)
case OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT: case OPT_INNODB_FLUSH_LOG_AT_TRX_COMMIT:
innobase_flush_log_at_trx_commit= optarg ? test(atoi(optarg)) : 1; innobase_flush_log_at_trx_commit= optarg ? test(atoi(optarg)) : 1;
break; break;
case OPT_INNODB_UNIX_FILE_FLUSH_METHOD:
innobase_unix_file_flush_method=optarg;
break;
#endif /* HAVE_INNOBASE_DB */ #endif /* HAVE_INNOBASE_DB */
case OPT_MYISAM_RECOVER: case OPT_MYISAM_RECOVER:
{ {
......
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