diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2019-02-19 18:00:55 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2019-02-19 18:00:55 +0200 |
commit | be3e1de7729d25d1dc349eeed13c25808ff3ed80 (patch) | |
tree | ab121e5dca449c7775ad9a4b4d77b30c5b866720 | |
parent | 3014dc9559862b7517d404974f23f5920be85764 (diff) | |
download | mariadb-git-10.4-MDEV-12026.tar.gz |
Final fixes10.4-MDEV-12026
-rw-r--r-- | mysql-test/suite/innodb/r/restart.result | 3 | ||||
-rw-r--r-- | mysql-test/suite/innodb/t/restart.test | 3 | ||||
-rw-r--r-- | storage/innobase/fil/fil0fil.cc | 16 | ||||
-rw-r--r-- | storage/innobase/include/fsp0fsp.h | 2 |
4 files changed, 13 insertions, 11 deletions
diff --git a/mysql-test/suite/innodb/r/restart.result b/mysql-test/suite/innodb/r/restart.result index c70adac3a55..737f86faa75 100644 --- a/mysql-test/suite/innodb/r/restart.result +++ b/mysql-test/suite/innodb/r/restart.result @@ -3,9 +3,8 @@ # # FIXME: Unlike MySQL, maybe MariaDB should not read the .ibd files # of tables with .isl file or DATA DIRECTORY attribute. -call mtr.add_suppression("\\[ERROR\\] InnoDB: Invalid flags 0x7a207879 in .*td\\.ibd"); # FIXME: This is much more noisy than MariaDB 10.1! -call mtr.add_suppression("\\[ERROR\\] InnoDB: Cannot read first page in datafile: .*td\\.ibd, Space ID:2048948345, Flags: 2048948345"); +call mtr.add_suppression("\\[ERROR\\] InnoDB: Tablespace flags are invalid in datafile: .*test.t[rcd]\\.ibd"); call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number .* in a file operation\\."); call mtr.add_suppression("\\[ERROR\\] InnoDB: The error means the system cannot find the path specified\\."); call mtr.add_suppression("\\[ERROR\\] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them\\."); diff --git a/mysql-test/suite/innodb/t/restart.test b/mysql-test/suite/innodb/t/restart.test index 2fd7ca244e5..a7a7855ba7b 100644 --- a/mysql-test/suite/innodb/t/restart.test +++ b/mysql-test/suite/innodb/t/restart.test @@ -14,9 +14,8 @@ let page_size= `select @@innodb_page_size`; --echo # FIXME: Unlike MySQL, maybe MariaDB should not read the .ibd files --echo # of tables with .isl file or DATA DIRECTORY attribute. -call mtr.add_suppression("\\[ERROR\\] InnoDB: Invalid flags 0x7a207879 in .*td\\.ibd"); --echo # FIXME: This is much more noisy than MariaDB 10.1! -call mtr.add_suppression("\\[ERROR\\] InnoDB: Cannot read first page in datafile: .*td\\.ibd, Space ID:2048948345, Flags: 2048948345"); +call mtr.add_suppression("\\[ERROR\\] InnoDB: Tablespace flags are invalid in datafile: .*test.t[rcd]\\.ibd"); call mtr.add_suppression("\\[ERROR\\] InnoDB: Operating system error number .* in a file operation\\."); call mtr.add_suppression("\\[ERROR\\] InnoDB: The error means the system cannot find the path specified\\."); call mtr.add_suppression("\\[ERROR\\] InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them\\."); diff --git a/storage/innobase/fil/fil0fil.cc b/storage/innobase/fil/fil0fil.cc index bb3d0d37cdc..596621ae069 100644 --- a/storage/innobase/fil/fil0fil.cc +++ b/storage/innobase/fil/fil0fil.cc @@ -3903,6 +3903,12 @@ void fsp_flags_try_adjust(fil_space_t* space, ulint flags) page_id_t(space->id, 0), space->zip_size(), RW_X_LATCH, &mtr)) { ulint f = fsp_header_get_flags(b->frame); + if (fil_space_t::full_crc32(f)) { + goto func_exit; + } + if (fil_space_t::is_flags_equal(f, flags)) { + goto func_exit; + } /* Suppress the message if only the DATA_DIR flag to differs. */ if ((f ^ flags) & ~(1U << FSP_FLAGS_POS_RESERVED)) { ib::warn() @@ -3911,13 +3917,11 @@ void fsp_flags_try_adjust(fil_space_t* space, ulint flags) << "' from " << ib::hex(f) << " to " << ib::hex(flags); } - if (f != flags) { - mtr.set_named_space(space); - mlog_write_ulint(FSP_HEADER_OFFSET - + FSP_SPACE_FLAGS + b->frame, - flags, MLOG_4BYTES, &mtr); - } + mtr.set_named_space(space); + mlog_write_ulint(FSP_HEADER_OFFSET + FSP_SPACE_FLAGS + + b->frame, flags, MLOG_4BYTES, &mtr); } +func_exit: mtr.commit(); } diff --git a/storage/innobase/include/fsp0fsp.h b/storage/innobase/include/fsp0fsp.h index d6f3e1eaa9b..9a89971bb0d 100644 --- a/storage/innobase/include/fsp0fsp.h +++ b/storage/innobase/include/fsp0fsp.h @@ -632,7 +632,7 @@ fsp_flags_convert_from_101(ulint flags) { DBUG_EXECUTE_IF("fsp_flags_is_valid_failure", return(ULINT_UNDEFINED);); - if (flags == 0) { + if (flags == 0 || fil_space_t::full_crc32(flags)) { return(flags); } |