Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-38425

Holes are not punched for page_compressed

    XMLWordPrintable

Details

    • Can result in unexpected behaviour

    Description

      After MDEV-33613 fix IORequest::PUNCH became an alias of IORequest::WRITE_ASYNC. Moreover, it looks like even PUNCH was not an alias of WRITE_ASYNC asynchronous write wouldn't punch holes. Here is call hierarchy:

      ▾ os_file_punch_hole                                                                                                              
        ▸ fil_ibd_create                                                              
        ▾ fil_space_t::io                                                             
          ▸ buf_dblwr_t::recover                                                      
          ▸ buf_dblwr_t::flush_buffered_writes_completed                              
          ▸ buf_page_t::flush                                                         
          ▸ buf_read_page_low                                                         
        • recv_sys_t::recover_deferred                                                
        ▾ IORequest::punch_hole                                                       
          ▾ IORequest::maybe_punch_hole                                               
            ▾ os_file_io                                                              
              ▾ os_file_pwrite                                                        
                ▾ os_file_write_func                                                  
                  ▸ innodb_init                                                       
                  ▸ pfs_os_file_write_func                                            
                  ▸ log_t::resize_write_buf                                           
                  ▸ os_aio                                                            
              ▸ os_file_pread                                                         
        ▸ fil_import_compress_fwrite
      

      os_aio() invokes os_file_write_func() only for synchronous write. fil_space_t::io() invokes os_file_punch_hole() only for PUNCH_RANGE.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              vlad.lesin Vladislav Lesin
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.