mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-18105 Mariabackup fails to copy encrypted InnoDB system tablespace if LSN>4G
This is a regression caused by
commit 8c43f96388
that was part of the MDEV-12112 fixes.
page_is_corrupted(): Never interpret page_no=0 as encrypted.
This commit is contained in:
parent
68143c8905
commit
50c9469be8
2 changed files with 14 additions and 3 deletions
|
@ -306,9 +306,16 @@ static bool page_is_corrupted(byte *page, ulint page_no, xb_fil_cur_t *cursor, f
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Validate encrypted pages. */
|
||||
if (mach_read_from_4(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION) &&
|
||||
(space->crypt_data && space->crypt_data->type!= CRYPT_SCHEME_UNENCRYPTED)) {
|
||||
/* Validate encrypted pages. The first page is never encrypted.
|
||||
In the system tablespace, the first page would be written with
|
||||
FIL_PAGE_FILE_FLUSH_LSN at shutdown, and if the LSN exceeds
|
||||
4,294,967,295, the mach_read_from_4() below would wrongly
|
||||
interpret the page as encrypted. We prevent that by checking
|
||||
page_no first. */
|
||||
if (page_no
|
||||
&& mach_read_from_4(page + FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION)
|
||||
&& space->crypt_data
|
||||
&& space->crypt_data->type != CRYPT_SCHEME_UNENCRYPTED) {
|
||||
|
||||
if (!fil_space_verify_crypt_checksum(page, cursor->zip_size))
|
||||
return true;
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
--innodb-encrypt-log=ON
|
||||
--innodb-tablespaces-encryption
|
||||
--innodb-encrypt-tables=ON
|
||||
--innodb-encryption-rotate-key-age=1
|
||||
--innodb-encryption-threads=4
|
||||
--plugin-load-add=$FILE_KEY_MANAGEMENT_SO
|
||||
--loose-file-key-management
|
||||
--loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/filekeys-data.key
|
||||
|
|
Loading…
Reference in a new issue