-
Inaam Rana authored
Approved by: Kevin Lewis rb://2174 In cases where threads are forced to do single page flushing we call buf_flush_sync_datafiles() after queueing the IO asynchronously. buf_flush_sync_datafiles() wakes up IO helper threads, then waits for all the IO requests to be serviced and then trigger an fsync() on all data files. The minimal we need is that the IO request for the given page has been serviced and the data file that it belongs to have been synced to the disk. * Explicitly pass 'sync' value to buf_flush_page(). The new scheme is: -- All batches happen asynchronously (same as before) -- Single page flushes to find a victim are synchronous -- Single page flushes for export are asynchronous * Flush only the datafile that is touched during the single page flushing * Change handling of single page flush dblwr slot to IO completion routine i.e., now it will happen in IO helper thread in case of async request * Remove polling from dblwr buffer. Introduce two separate events, one for batch flushing and one for single page flushing
Inaam Rana authoredApproved by: Kevin Lewis rb://2174 In cases where threads are forced to do single page flushing we call buf_flush_sync_datafiles() after queueing the IO asynchronously. buf_flush_sync_datafiles() wakes up IO helper threads, then waits for all the IO requests to be serviced and then trigger an fsync() on all data files. The minimal we need is that the IO request for the given page has been serviced and the data file that it belongs to have been synced to the disk. * Explicitly pass 'sync' value to buf_flush_page(). The new scheme is: -- All batches happen asynchronously (same as before) -- Single page flushes to find a victim are synchronous -- Single page flushes for export are asynchronous * Flush only the datafile that is touched during the single page flushing * Change handling of single page flush dblwr slot to IO completion routine i.e., now it will happen in IO helper thread in case of async request * Remove polling from dblwr buffer. Introduce two separate events, one for batch flushing and one for single page flushing
Loading