• Song Liu's avatar
    Merge branch 'md-6.12-bitmap' into md-6.12 · 7f67fdae
    Song Liu authored
    From Yu Kuai (with minor changes by Song Liu):
    
    The background is that currently bitmap is using a global spin_lock,
    causing lock contention and huge IO performance degradation for all raid
    levels.
    
    However, it's impossible to implement a new lock free bitmap with
    current situation that md-bitmap exposes the internal implementation
    with lots of exported apis. Hence bitmap_operations is invented, to
    describe bitmap core implementation, and a new bitmap can be introduced
    with a new bitmap_operations, we only need to switch to the new one
    during initialization.
    
    And with this we can build bitmap as kernel module, but that's not
    our concern for now.
    
    This version was tested with mdadm tests and lvm2 tests. This set does
    not introduce new errors in these tests.
    
    * md-6.12-bitmap: (42 commits)
      md/md-bitmap: make in memory structure internal
      md/md-bitmap: merge md_bitmap_enabled() into bitmap_operations
      md/md-bitmap: merge md_bitmap_wait_behind_writes() into bitmap_operations
      md/md-bitmap: merge md_bitmap_free() into bitmap_operations
      md/md-bitmap: merge md_bitmap_set_pages() into struct bitmap_operations
      md/md-bitmap: merge md_bitmap_copy_from_slot() into struct bitmap_operation.
      md/md-bitmap: merge get_bitmap_from_slot() into bitmap_operations
      md/md-bitmap: merge md_bitmap_resize() into bitmap_operations
      md/md-bitmap: pass in mddev directly for md_bitmap_resize()
      md/md-bitmap: merge md_bitmap_daemon_work() into bitmap_operations
      md/md-bitmap: merge bitmap_unplug() into bitmap_operations
      md/md-bitmap: merge md_bitmap_unplug_async() into md_bitmap_unplug()
      md/md-bitmap: merge md_bitmap_sync_with_cluster() into bitmap_operations
      md/md-bitmap: merge md_bitmap_cond_end_sync() into bitmap_operations
      md/md-bitmap: merge md_bitmap_close_sync() into bitmap_operations
      md/md-bitmap: merge md_bitmap_end_sync() into bitmap_operations
      md/md-bitmap: remove the parameter 'aborted' for md_bitmap_end_sync()
      md/md-bitmap: merge md_bitmap_start_sync() into bitmap_operations
      md/md-bitmap: merge md_bitmap_endwrite() into bitmap_operations
      md/md-bitmap: merge md_bitmap_startwrite() into bitmap_operations
      ...
    Signed-off-by: default avatarSong Liu <song@kernel.org>
    7f67fdae
md.h 32.2 KB