| 
|   | Reduced_double_write (uint16_t id, uint32_t n_pages) | 
|   | Constructor.  More...
  | 
|   | 
|   | ~Reduced_double_write () override | 
|   | Destructor.  More...
  | 
|   | 
| virtual uint16_t  | write_dblwr_pages (buf_flush_t flush_type) noexcept override | 
|   | Process the requests in the flush queue, write the space_id, page_id, LSN to the reduced double write file (.bdblwr), sync the file if required and then write to the data files.  More...
  | 
|   | 
| dberr_t  | allocate () | 
|   | Allocate a temporary buffer for writing page entries.  More...
  | 
|   | 
|   | Double_write (uint16_t id, uint32_t n_pages) noexcept | 
|   | Constructor.  More...
  | 
|   | 
| virtual  | ~Double_write () noexcept | 
|   | Destructor.  More...
  | 
|   | 
| uint16_t  | id () const noexcept | 
|   | 
| void  | write (buf_flush_t flush_type) noexcept | 
|   | Process the requests in the flush queue, write the blocks to the double write file, sync the file if required and then write to the data files.  More...
  | 
|   | 
| bool  | wait_for_pending_batch () noexcept | 
|   | Wait for any pending batch to complete.  More...
  | 
|   | 
| bool  | flush_to_disk (buf_flush_t flush_type) noexcept | 
|   | Flush buffered pages to disk, clear the buffers.  More...
  | 
|   | 
| void  | write_pages (buf_flush_t flush_type) noexcept | 
|   | Process the requests in the flush queue, write the blocks to the double write file, sync the file if required and then write to the data files.  More...
  | 
|   | 
| void  | write_data_pages (buf_flush_t flush_type, uint16_t batch_id) noexcept | 
|   | 
| void  | force_flush (buf_flush_t flush_type) noexcept | 
|   | Force a flush of the page queue.  More...
  | 
|   | 
| void  | enqueue (buf_flush_t flush_type, buf_page_t *bpage, const file::Block *e_block) noexcept | 
|   | Add a page to the flush batch.  More...
  | 
|   | 
| void  | batch_started () noexcept | 
|   | Note that the IO batch has started.  More...
  | 
|   | 
| void  | batch_completed () noexcept | 
|   | Wake up all the threads that were waiting for the batch to complete.  More...
  | 
|   | 
|   | Double_write (const Double_write &)=delete | 
|   | 
|   | Double_write (const Double_write &&)=delete | 
|   | 
| Double_write &  | operator= (Double_write &&)=delete | 
|   | 
| Double_write &  | operator= (const Double_write &)=delete | 
|   | 
 | 
| static Double_write *  | instance (buf_flush_t flush_type, uint32_t buf_pool_index, bool is_reduced) noexcept | 
|   | 
| static dberr_t  | create_batch_segments (uint32_t segments_per_file) noexcept | 
|   | Create the batch write segments.  More...
  | 
|   | 
| static dberr_t  | create_reduced_batch_segments () noexcept | 
|   | Create the Reduced batch write segments.  More...
  | 
|   | 
| static dberr_t  | create_single_segments () noexcept | 
|   | Create the single page flush segments.  More...
  | 
|   | 
| static void  | submit (buf_flush_t flush_type, buf_page_t *bpage, const file::Block *e_block) noexcept | 
|   | Get the instance that handles a particular page's IO.  More...
  | 
|   | 
| static dberr_t  | sync_page_flush (buf_page_t *bpage, file::Block *e_block) noexcept | 
|   | Writes a single page to the doublewrite buffer on disk, syncs it, then writes the page to the datafile.  More...
  | 
|   | 
| static Double_write *  | instance (buf_flush_t flush_type, const buf_page_t *bpage) noexcept | 
|   | 
| static void  | write_complete (buf_page_t *bpage, buf_flush_t flush_type) noexcept | 
|   | Updates the double write buffer when a write request is completed.  More...
  | 
|   | 
| static bool  | init_v1 (page_no_t &block1, page_no_t &block2) noexcept | 
|   | REad the V1 doublewrite buffer extents boundaries.  More...
  | 
|   | 
| static bool  | create_v1 (page_no_t &block1, page_no_t &block2) noexcept | 
|   | Creates the V1 doublewrite buffer extents.  More...
  | 
|   | 
| static dberr_t  | write_to_datafile (const buf_page_t *in_bpage, bool sync, const file::Block *e_block) noexcept | 
|   | Writes a page that has already been written to the doublewrite buffer to the data file.  More...
  | 
|   | 
| static void  | force_flush (buf_flush_t flush_type, uint32_t buf_pool_index) noexcept | 
|   | Force a flush of the page queue.  More...
  | 
|   | 
| static dberr_t  | load (dblwr::File &file, recv::Pages *pages) noexcept | 
|   | Load the doublewrite buffer pages from an external file.  More...
  | 
|   | 
| static dberr_t  | load_reduced_batch (dblwr::File &file, recv::Pages *pages) noexcept | 
|   | Load the reduced doublewrite buffer page entries from an reduced batch double write buffer file (.bdblwr)  More...
  | 
|   | 
| static dberr_t  | init_file (dblwr::File &file, uint32_t n_pages, uint32_t phy_size=univ_page_size.physical()) noexcept | 
|   | Write zeros to the file if it is "empty".  More...
  | 
|   | 
| static void  | reset_file (dblwr::File &file, bool truncate) noexcept | 
|   | Reset the size in bytes to the configured size.  More...
  | 
|   | 
| static void  | reduced_reset_file (dblwr::File &file, uint32_t pages_per_file, uint32_t phy_size) noexcept | 
|   | Reset the size in bytes to the configured size.  More...
  | 
|   | 
| static void  | reset_files () noexcept | 
|   | Reset the size in bytes to the configured size of all files.  More...
  | 
|   | 
| static dberr_t  | create_v2 () noexcept | 
|   | Create the v2 data structures.  More...
  | 
|   | 
| static dberr_t  | create_reduced () noexcept | 
|   | Create the data structures for reduced doublewrite buffer.  More...
  | 
|   | 
| static bool  | is_fsync_required () noexcept | 
|   | 
| static void  | prepare (const buf_page_t *bpage, void **ptr, uint32_t *len) noexcept | 
|   | Extract the data and length to write to the doublewrite file.  More...
  | 
|   | 
| static void  | shutdown () noexcept | 
|   | Free the data structures.  More...
  | 
|   | 
| static void  | toggle (ulong value) noexcept | 
|   | Toggle the doublewrite buffer dynamically.  More...
  | 
|   | 
| static void  | single_write (Segment *segment, const buf_page_t *bpage, file::Block *e_block) noexcept | 
|   | Write the data to disk synchronously.  More...
  | 
|   | 
| unsigned long long  | m_bytes_written {} | 
|   | Number of bytes written to disk by this instance.  More...
  | 
|   | 
| static uint32_t  | s_n_instances {} | 
|   | Number of instances.  More...
  | 
|   | 
| static std::vector< dblwr::File >  | s_files | 
|   | Files to use for atomic writes.  More...
  | 
|   | 
| static std::vector< dblwr::File >  | s_r_files | 
|   | Reduced batch doublewrite files to use for atomic writes.  More...
  | 
|   | 
| static Instances *  | s_instances {} | 
|   | The global instances.  More...
  | 
|   | 
| static Instances *  | s_r_instances {} | 
|   | The global Reduced Doublewrite instances.  More...
  | 
|   | 
| using  | Segments = mpmc_bq< Segment * > | 
|   | 
| using  | Instances = std::vector< Double_write * > | 
|   | 
| using  | Batch_segments = mpmc_bq< Batch_segment * > | 
|   | 
| static void  | free_segments (Batch_segments *&segments) noexcept | 
|   | Utility function to free batch segments.  More...
  | 
|   | 
| static bool  | is_reduced_batch_id (uint32_t batch_id) | 
|   | 
| uint16_t  | m_id {} | 
|   | Instance ID.  More...
  | 
|   | 
| ib_mutex_t  | m_mutex | 
|   | Protects m_buf_pages.  More...
  | 
|   | 
| os_event_t  | m_event | 
|   | Wait for IO batch to complete.  More...
  | 
|   | 
| std::atomic_bool  | m_batch_running {false} | 
|   | true if the the batch hasn't completed yet.  More...
  | 
|   | 
| Buffer  | m_buffer | 
|   | The copy of the page frame, the page must be in in m_buf_pages.  More...
  | 
|   | 
| Buf_pages  | m_buf_pages | 
|   | Pages that should be written to the data files.  More...
  | 
|   | 
| static Batch_segments *  | s_LRU_batch_segments {} | 
|   | File segments to use for LRU batched writes.  More...
  | 
|   | 
| static Batch_segments *  | s_flush_list_batch_segments {} | 
|   | File segments to use for flush list batched writes.  More...
  | 
|   | 
| static Segments *  | s_single_segments {} | 
|   | File segments to use for single page writes.  More...
  | 
|   | 
| static Batch_segments *  | s_r_LRU_batch_segments {} | 
|   | File segments to use for LRU batched writes in reduced dblwr mode.  More...
  | 
|   | 
| static Batch_segments *  | s_r_flush_list_batch_segments {} | 
|   | File segments to use for flush list batched writes (reduced mode)  More...
  | 
|   | 
| static std::vector< Batch_segment * >  | s_segments {} | 
|   | For indexing batch segments by ID.  More...
  | 
|   | 
| static uint32_t  | s_regular_last_batch_id {} | 
|   | Last used batch_id for regular batch segments.  More...
  | 
|   | 
Reduced doublewrite implementation. 
Uses separate .bdblwr files and can coexist with regular doublewrite buffer implementation