Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.3, 10.2.0, 10.3.0
Description
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
MariaDB 10.4 introduced an InnoDB redo log record MLOG_INIT_FREE_PAGE for marking pages as freed. In MDEV-12353 (MariaDB 10.5.2), that record was replaced with FREE_PAGE. This record could be treated as no-op, or we can punch a hole for page_compressed=1 tables.
If innodb_immediate_scrub_data_uncompressed is set, we should initialize the page with zeros. This will replace some of the non-working scrubbing logic (MDEV-8139). The scrubbing will be fixed further in MDEV-8139.
The following parameters will be deprecated and ignored and the problematic ‘background scrubbing’ code removed:
- innodb-background-scrub-data-uncompressed
- innodb-background-scrub-data-compressed
- innodb-background-scrub-data-interval
- innodb-background-scrub-data-check-interval
For page_compressed tables the freed page will be hole-punched
Attachments
Issue Links
- blocks
-
MDEV-12227 Defer writes to the InnoDB temporary tablespace
-
- Closed
-
-
MDEV-17596 Assertion `block->page.flush_observer == __null || block->page.flush_observer == observer' failed in buf_flush_note_modification
-
- Closed
-
-
MDEV-18724 Replace buf_block_t::mutex with more std::atomic
-
- Closed
-
- causes
-
MDEV-22096 Mariabackup copied too old page or too new checkpoint
-
- Closed
-
-
MDEV-22097 Not applying DELETE_ROW_FORMAT_REDUNDANT due to corruption
-
- Closed
-
-
MDEV-22103 INNODB_ENCRYPTION_NUM_KEY_REQUESTS is missing from INFORMATION_SCHEMA.GLOBAL_STATUS
-
- Closed
-
-
MDEV-22139 fseg_free_page_low() fails to write FREE_PAGE record, breaking recovery
-
- Closed
-
-
MDEV-22169 Recovery fails after failing to insert into mlog_init
-
- Closed
-
-
MDEV-22495 Assertion mode == 16 || mode == 12 || fix_block->page.status != buf_page_t::FREED failed in ibuf_read_merge_pages()
-
- Closed
-
-
MDEV-22710 Assertion `mode == 16 || mode == 12 || fix_block->page.status != buf_page_t::FREED' failed in buf_page_get_low
-
- Closed
-
-
MDEV-23252 Assertion failure 'req_type.is_dblwr_recover() || err == DB_SUCCESS' for page_compressed tables
-
- Closed
-
-
MDEV-24695 Encryption is modifying a freed page
-
- Closed
-
-
MDEV-27500 buf_page_free() fails to drop the adaptive hash index
-
- Closed
-
-
MDEV-27985 buf_flush_freed_pages() causes InnoDB to hang
-
- Closed
-
-
MDEV-30404 Inconsistent updates of PAGE_MAX_TRX_ID on ROW_FORMAT=COMPRESSED pages
-
- Closed
-
-
MDEV-30438 innodb.undo_truncate,4k fails when --innodb-immediate-scrub-data-uncompressed is enabled
-
- Closed
-
-
MDEV-32552 Write-ahead logging is broken for freed pages
-
- Closed
-
- relates to
-
MDEV-11696 Page Compression Has No Effect on Table Data File Size
-
- Closed
-
-
MDEV-16526 Overhaul the InnoDB page flushing
-
- Closed
-
-
MDEV-17380 innodb_flush_neighbors=ON should be ignored on SSD
-
- Closed
-
-
MDEV-21952 ibdata1 file size growing in MariaDB
-
- Closed
-
-
MDEV-23973 Change buffer corruption when reallocating an recently freed page
-
- Closed
-
-
MDEV-24569 Assertion `mach_read_from_4(frame + 4U) == block.page.id().page_no()' failed in log_phys_t::apply
-
- Closed
-
-
MDEV-25026 Various code paths are accessing freed pages
-
- Closed
-
-
MDEV-28699 Shrink temporary tablespaces without restart
-
- Closed
-
-
MDEV-31816 buf_LRU_free_page() does not preserve ROW_FORMAT=COMPRESSED block state
-
- Closed
-
-
MDEV-33112 innodb_undo_log_truncate=ON is blocking page writes
-
- Closed
-
-
MDEV-8139 Fix scrubbing
-
- Closed
-
-
MDEV-11068 Review which innodb_compression_algorithm to support in binary packages
-
- Closed
-
-
MDEV-12226 Avoid writes of freed (garbage) pages to InnoDB data files
-
- Closed
-
-
MDEV-12699 Improve crash recovery of corrupted data pages
-
- Closed
-
-
MDEV-15949 InnoDB: Failing assertion: space->n_pending_ops == 0 in fil_delete_tablespace upon DROP TABLE
-
- Closed
-
-
MDEV-16796 TRUNCATE TABLE slowdown with innodb_file_per_table=ON
-
- Closed
-
-
MDEV-17380 innodb_flush_neighbors=ON should be ignored on SSD
-
- Closed
-
-
MDEV-18698 Show InnoDB's internal background threads in SHOW ENGINE INNODB STATUS
-
- Open
-
-
MDEV-20813 Assertion `!srv_safe_truncate || !newest_lsn || fil_page_get_type(page)' or `!newest_lsn || fil_page_get_type(page)' failed in buf_flush_init_for_writing
-
- Closed
-
-
MDEV-22190 After IMPORT: InnoDB: Record 126 is above rec heap top 120
-
- Closed
-
-
MDEV-22839 ROW_FORMAT=COMPRESSED vs PAGE_COMPRESSION=1 - size comparison
-
- Open
-
-
MDEV-24780 [FATAL] InnoDB: Trying to read page number <...> with encryption and innodb-background-scrub-data-uncompressed
-
- Closed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue relates to |
Link |
This issue relates to |
Status | Open [ 1 ] | Confirmed [ 10101 ] |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Fix Version/s | 10.5 [ 23123 ] | |
Fix Version/s | 10.3 [ 22126 ] |
NRE Projects | RM_105_CANDIDATE RM_104ES_CANDIDATE |
Assignee | Thirunarayanan Balathandayuthapani [ thiru ] | Marko Mäkelä [ marko ] |
Link |
This issue blocks |
Description |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
We should introduce an InnoDB redo log record for marking pages as freed. This record, say, {{MLOG_PAGE_FREE}}, could be treated as no-op, or we could elect to punch a hole, especially when the {{page_compressed=1}} option is used. If scrubbing is enabled, we should initialize the page with zeros. This should replace some of the non-working scrubbing logic ( |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
We should introduce an InnoDB redo log record for marking pages as freed. This record, {{MLOG_INIT_FREE_PAGE}}, could be treated as no-op, or we could elect to punch a hole, especially when the {{page_compressed=1}} option is used. If scrubbing is enabled, we should initialize the page with zeros. This should replace some of the non-working scrubbing logic ( |
Link | This issue is part of MENT-139 [ MENT-139 ] |
Fix Version/s | 10.5 [ 23123 ] |
Link |
This issue relates to |
Assignee | Marko Mäkelä [ marko ] | Thirunarayanan Balathandayuthapani [ thiru ] |
Status | Confirmed [ 10101 ] | In Progress [ 3 ] |
Link |
This issue relates to |
Fix Version/s | 10.5 [ 23123 ] | |
Fix Version/s | 10.4 [ 22408 ] |
Fix Version/s | 10.5.2 [ 24030 ] | |
Fix Version/s | 10.5 [ 23123 ] | |
Resolution | Fixed [ 1 ] | |
Status | In Progress [ 3 ] | Closed [ 6 ] |
Description |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
We should introduce an InnoDB redo log record for marking pages as freed. This record, {{MLOG_INIT_FREE_PAGE}}, could be treated as no-op, or we could elect to punch a hole, especially when the {{page_compressed=1}} option is used. If scrubbing is enabled, we should initialize the page with zeros. This should replace some of the non-working scrubbing logic ( |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
MariaDB 10.4 introduced an InnoDB redo log record {{MLOG_INIT_FREE_PAGE}} for marking pages as freed. In If {{innodb_immediate_scrub_data_uncompressed}} is set, we should initialize the page with zeros. This will replace some of the non-working scrubbing logic ( The following parameters will be deprecated and ignored and the problematic ‘background scrubbing’ code removed: * innodb-background-scrub-data-uncompressed * innodb-background-scrub-data-compressed * innodb-background-scrub-data-interval * innodb-background-scrub-data-check-interval |
Link | This issue relates to MDEV-18698 [ MDEV-18698 ] |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue relates to |
Link |
This issue causes |
Summary | Punch holes when pages are freed | Avoid writing freed InnoDB pages |
Description |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
MariaDB 10.4 introduced an InnoDB redo log record {{MLOG_INIT_FREE_PAGE}} for marking pages as freed. In If {{innodb_immediate_scrub_data_uncompressed}} is set, we should initialize the page with zeros. This will replace some of the non-working scrubbing logic ( The following parameters will be deprecated and ignored and the problematic ‘background scrubbing’ code removed: * innodb-background-scrub-data-uncompressed * innodb-background-scrub-data-compressed * innodb-background-scrub-data-interval * innodb-background-scrub-data-check-interval |
When a InnoDB data file page is freed, its contents becomes garbage, and any storage allocated in the data file is wasted.
MariaDB 10.4 introduced an InnoDB redo log record {{MLOG_INIT_FREE_PAGE}} for marking pages as freed. In If {{innodb_immediate_scrub_data_uncompressed}} is set, we should initialize the page with zeros. This will replace some of the non-working scrubbing logic ( The following parameters will be deprecated and ignored and the problematic ‘background scrubbing’ code removed: * innodb-background-scrub-data-uncompressed * innodb-background-scrub-data-compressed * innodb-background-scrub-data-interval * innodb-background-scrub-data-check-interval For page_compressed tables the freed page will be hole-punched |
Link |
This issue causes |
Link | This issue relates to MDEV-22839 [ MDEV-22839 ] |
Link |
This issue relates to |
Link |
This issue causes |
Link |
This issue blocks |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue causes |
Link |
This issue blocks |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue relates to |
Link | This issue relates to MENT-1022 [ MENT-1022 ] |
Workflow | MariaDB v3 [ 85945 ] | MariaDB v4 [ 153930 ] |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue relates to |
Link |
This issue causes |
Link |
This issue causes |
Link |
This issue relates to |
Link |
This issue relates to |
Link |
This issue causes |
Link |
This issue relates to |
Remote Link | This issue links to "Page (MariaDB Confluence)" [ 36700 ] |
Remote Link | This issue links to "Page (MariaDB Confluence)" [ 36700 ] |