[dm-devel] [PATCHES]: dm lock optimization

Jun'ichi Nomura j-nomura at ce.jp.nec.com
Mon Apr 23 10:56:52 UTC 2012


Hi Mikulas,

On 04/22/12 01:17, Mikulas Patocka wrote:
> I created new patches that use rcu instead of map_lock, so they address 
> the issues you mentioned. Get the new patches here:
> http://people.redhat.com/mpatocka/patches/kernel/dm-lock-optimization/
> 
> performance with new patches:
> no patch:               69.3
> patch 1:                54.0
> patch 1,2:              44.2
> patch 1,2,3:            39.8
> patch 1,2,3,4:          32.7

Thank you. I have 2 comments for the new patches.

synchronize_rcu could be put in dm_table_destroy() instead of __bind().
I think it's safer place to wait.

io_lock could be converted to SRCU.
I.e. something like:
  On reader-side:
    idx = srcu_read_lock(io_srcu);
    if (!DMF_BLOCK_IO_FOR_SUSPEND)
      split_and_process_bio();
    srcu_read_unlock(io_srcu,idx);
  In dm_suspend:
    set_bit(DMF_BLOCK_IO_FOR_SUSPEND);
    mb();
    synchronize_srcu(io_srcu);
    <from here, nobody will enter split_and_process_bio>
That makes dm-optimize-percpu-io-lock.patch simpler.
dm-optimize-take-io_lock-on-table-swap.patch may become simpler, too.

-- 
Jun'ichi Nomura, NEC Corporation




More information about the dm-devel mailing list