Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Barkov committed Dec 30, 2016
2 parents b6aa3d2 + 1ab3866 commit b4ef7b2
Show file tree
Hide file tree
Showing 13 changed files with 39 additions and 152 deletions.
Expand Up @@ -72,7 +72,7 @@ t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL AUTO_INCREMENT,
`b` char(200) DEFAULT NULL,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=377 DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=4
) ENGINE=InnoDB AUTO_INCREMENT=504 DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=4
SELECT COUNT(*) FROM t1;
COUNT(*)
256
Expand Down
@@ -1,8 +1,6 @@
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
SET GLOBAL innodb_file_format = `Barracuda`;
Warnings:
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
SET GLOBAL innodb_file_per_table = ON;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
Expand Down Expand Up @@ -124,5 +122,3 @@ NOT FOUND /barfoo/ in t3.ibd
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
DROP PROCEDURE innodb_insert_proc;
DROP TABLE t1, t2, t3;
Warnings:
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
21 changes: 0 additions & 21 deletions mysql-test/suite/sys_vars/r/innodb_use_fallocate_basic.result

This file was deleted.

14 changes: 0 additions & 14 deletions mysql-test/suite/sys_vars/r/sysvars_innodb.result
Expand Up @@ -2581,20 +2581,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_USE_FALLOCATE
SESSION_VALUE NULL
GLOBAL_VALUE OFF
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
VARIABLE_COMMENT Preallocate files fast, using operating system functionality. On POSIX systems, posix_fallocate system call is used.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_USE_MTFLUSH
SESSION_VALUE NULL
GLOBAL_VALUE OFF
Expand Down
22 changes: 0 additions & 22 deletions mysql-test/suite/sys_vars/t/innodb_use_fallocate_basic.test

This file was deleted.

49 changes: 18 additions & 31 deletions storage/innobase/fil/fil0fil.cc
Expand Up @@ -484,7 +484,7 @@ fil_space_is_flushed(
return(true);
}

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX

#include <sys/ioctl.h>
/** FusionIO atomic write control info */
Expand All @@ -511,7 +511,7 @@ fil_fusionio_enable_atomic_write(os_file_t file)

return(false);
}
#endif /* !NO_FALLOCATE && UNIV_LINUX */
#endif /* UNIV_LINUX */

/** Append a file to the chain of files of a space.
@param[in] name file name of a file that is not open
Expand Down Expand Up @@ -3520,11 +3520,10 @@ fil_ibd_create(
return(DB_ERROR);
}

bool atomic_write;

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (fil_fusionio_enable_atomic_write(file)) {
#ifdef UNIV_LINUX
const bool atomic_write = fil_fusionio_enable_atomic_write(file);

if (atomic_write) {
/* This is required by FusionIO HW/Firmware */
int ret = posix_fallocate(file, 0, size * UNIV_PAGE_SIZE);

Expand All @@ -3547,21 +3546,14 @@ fil_ibd_create(
} else {
success = true;
}

atomic_write = true;
} else {
atomic_write = false;

} else
#else
const bool atomic_write = false;
#endif /* UNIV_LINUX */
{
success = os_file_set_size(
path, file, size * UNIV_PAGE_SIZE, srv_read_only_mode);
}
#else
atomic_write = false;

success = os_file_set_size(
path, file, size * UNIV_PAGE_SIZE, srv_read_only_mode);

#endif /* !NO_FALLOCATE && UNIV_LINUX */

if (!success) {
os_file_close(file);
Expand Down Expand Up @@ -3913,18 +3905,13 @@ fil_ibd_open(
df_dict.close();
}

bool atomic_write;

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf && df_default.is_open()) {
atomic_write = fil_fusionio_enable_atomic_write(
df_default.handle());
} else {
atomic_write = false;
}
#ifdef UNIV_LINUX
const bool atomic_write = !srv_use_doublewrite_buf
&& df_default.is_open()
&& fil_fusionio_enable_atomic_write(df_default.handle());
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif /* UNIV_LINUX */

/* We have now checked all possible tablespace locations and
have a count of how many unique files we found. If things are
Expand Down Expand Up @@ -5052,7 +5039,7 @@ fil_space_extend(
ut_ad(len > 0);
const char* name = node->name == NULL ? space->name : node->name;

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/* This is required by FusionIO HW/Firmware */
int ret = posix_fallocate(node->handle, node_start, len);

Expand All @@ -5077,7 +5064,7 @@ fil_space_extend(

err = DB_IO_ERROR;
}
#endif /* NO_FALLOCATE || !UNIV_LINUX */
#endif

if (!node->atomic_write || err == DB_IO_ERROR) {

Expand Down
16 changes: 5 additions & 11 deletions storage/innobase/fsp/fsp0space.cc
Expand Up @@ -122,18 +122,12 @@ Tablespace::open_or_create(bool is_temp)
break;
}

bool atomic_write;

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf) {
atomic_write = fil_fusionio_enable_atomic_write(
it->m_handle);
} else {
atomic_write = false;
}
#ifdef UNIV_LINUX
const bool atomic_write = fil_fusionio_enable_atomic_write(
it->m_handle);
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif

/* We can close the handle now and open the tablespace
the proper way. */
Expand Down
20 changes: 8 additions & 12 deletions storage/innobase/fsp/fsp0sysspace.cc
Expand Up @@ -909,28 +909,24 @@ SysTablespace::open_or_create(
return(err);
}

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/* Note: This should really be per node and not per
tablespace because a tablespace can contain multiple
files (nodes). The implication is that all files of
the tablespace should be on the same medium. */

if (fil_fusionio_enable_atomic_write(it->m_handle)) {
it->m_atomic_write
= fil_fusionio_enable_atomic_write(it->m_handle);

if (srv_use_doublewrite_buf) {
ib::info() << "FusionIO atomic IO enabled,"
" disabling the double write buffer";
if (it->m_atomic_write && srv_use_doublewrite_buf) {
ib::info() << "FusionIO atomic IO enabled,"
" disabling the double write buffer";

srv_use_doublewrite_buf = false;
}

it->m_atomic_write = true;
} else {
it->m_atomic_write = false;
srv_use_doublewrite_buf = false;
}
#else
it->m_atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX*/
#endif
}

if (!create_new_db && flush_lsn) {
Expand Down
17 changes: 0 additions & 17 deletions storage/innobase/handler/ha_innodb.cc
Expand Up @@ -250,7 +250,6 @@ values */
static ulong innobase_fast_shutdown = 1;
static my_bool innobase_file_format_check = TRUE;
static my_bool innobase_use_atomic_writes = FALSE;
static my_bool innobase_use_fallocate = TRUE;
static my_bool innobase_use_doublewrite = TRUE;
static my_bool innobase_use_checksums = TRUE;
static my_bool innobase_locks_unsafe_for_binlog = FALSE;
Expand Down Expand Up @@ -4637,9 +4636,6 @@ innobase_init(
data_mysql_default_charset_coll = (ulint) default_charset_info->number;

innobase_commit_concurrency_init_default();
#ifdef HAVE_POSIX_FALLOCATE
srv_use_posix_fallocate = (ibool) innobase_use_fallocate;
#endif
srv_use_atomic_writes = (ibool) innobase_use_atomic_writes;
if (innobase_use_atomic_writes) {
fprintf(stderr, "InnoDB: using atomic writes.\n");
Expand All @@ -4658,13 +4654,6 @@ innobase_init(
srv_file_flush_method_str = (char*)"O_DIRECT";
fprintf(stderr, "InnoDB: using O_DIRECT due to atomic writes.\n");
}
#endif
#ifdef HAVE_POSIX_FALLOCATE
/* Due to a bug in directFS, using atomics needs
* posix_fallocate to extend the file
* pwrite() past end of the file won't work
*/
srv_use_posix_fallocate = TRUE;
#endif
}

Expand Down Expand Up @@ -21957,11 +21946,6 @@ static MYSQL_SYSVAR_BOOL(use_atomic_writes, innobase_use_atomic_writes,
"on Linux only with FusionIO device, and directFS filesystem.",
NULL, NULL, FALSE);

static MYSQL_SYSVAR_BOOL(use_fallocate, innobase_use_fallocate,
PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
"Preallocate files fast, using operating system functionality. On POSIX systems, posix_fallocate system call is used.",
NULL, NULL, FALSE);

static MYSQL_SYSVAR_ULONG(io_capacity, srv_io_capacity,
PLUGIN_VAR_RQCMDARG,
"Number of IOPs the server can do. Tunes the background IO rate",
Expand Down Expand Up @@ -23187,7 +23171,6 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(data_home_dir),
MYSQL_SYSVAR(doublewrite),
MYSQL_SYSVAR(use_atomic_writes),
MYSQL_SYSVAR(use_fallocate),
MYSQL_SYSVAR(api_enable_binlog),
MYSQL_SYSVAR(api_enable_mdl),
MYSQL_SYSVAR(api_disable_rowlock),
Expand Down
4 changes: 2 additions & 2 deletions storage/innobase/include/fil0fil.h
Expand Up @@ -1799,14 +1799,14 @@ fil_names_clear(
lsn_t lsn,
bool do_write);

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/**
Try and enable FusionIO atomic writes.
@param[in] file OS file handle
@return true if successful */
bool
fil_fusionio_enable_atomic_write(os_file_t file);
#endif /* !NO_FALLOCATE && UNIV_LINUX */
#endif /* UNIV_LINUX */

/** Note that the file system where the file resides doesn't support PUNCH HOLE
@param[in,out] node Node to set */
Expand Down
5 changes: 0 additions & 5 deletions storage/innobase/include/srv0srv.h
Expand Up @@ -293,11 +293,6 @@ extern my_bool srv_numa_interleave;
/* Use trim operation */
extern my_bool srv_use_trim;

/* Use posix fallocate */
#ifdef HAVE_POSIX_FALLOCATE
extern my_bool srv_use_posix_fallocate;
#endif

/* Use atomic writes i.e disable doublewrite buffer */
extern my_bool srv_use_atomic_writes;

Expand Down
2 changes: 0 additions & 2 deletions storage/innobase/srv/srv0srv.cc
Expand Up @@ -190,8 +190,6 @@ my_bool srv_numa_interleave = FALSE;
/* If this flag is TRUE, then we will use fallocate(PUCH_HOLE)
to the pages */
UNIV_INTERN my_bool srv_use_trim = FALSE;
/* If this flag is TRUE, then we will use posix fallocate for file extentsion */
UNIV_INTERN my_bool srv_use_posix_fallocate = FALSE;
/* If this flag is TRUE, then we disable doublewrite buffer */
UNIV_INTERN my_bool srv_use_atomic_writes = FALSE;
/* If this flag IS TRUE, then we use this algorithm for page compressing the pages */
Expand Down
15 changes: 5 additions & 10 deletions storage/innobase/srv/srv0start.cc
Expand Up @@ -681,17 +681,12 @@ srv_undo_tablespace_open(
os_offset_t size;
fil_space_t* space;

bool atomic_write;

#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf) {
atomic_write = fil_fusionio_enable_atomic_write(fh);
} else {
atomic_write = false;
}
#ifdef UNIV_LINUX
const bool atomic_write = !srv_use_doublewrite_buf
&& fil_fusionio_enable_atomic_write(fh);
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif

size = os_file_get_size(fh);
ut_a(size != (os_offset_t) -1);
Expand Down

0 comments on commit b4ef7b2

Please sign in to comment.