• Guoqing Jiang's avatar
    md-cluster: add the support for resize · 818da59f
    Guoqing Jiang authored
    To update size for cluster raid, we need to make
    sure all nodes can perform the change successfully.
    However, it is possible that some of them can't do
    it due to failure (bitmap_resize could fail). So
    we need to consider the issue before we set the
    capacity unconditionally, and we use below steps
    to perform sanity check.
    
    1. A change the size, then broadcast METADATA_UPDATED
       msg.
    2. B and C receive METADATA_UPDATED change the size
       excepts call set_capacity, sync_size is not update
       if the change failed. Also call bitmap_update_sb
       to sync sb to disk.
    3. A checks other node's sync_size, if sync_size has
       been updated in all nodes, then send CHANGE_CAPACITY
       msg otherwise send msg to revert previous change.
    4. B and C call set_capacity if receive CHANGE_CAPACITY
       msg, otherwise pers->resize will be called to restore
       the old value.
    Reviewed-by: default avatarNeilBrown <neilb@suse.com>
    Signed-off-by: default avatarGuoqing Jiang <gqjiang@suse.com>
    Signed-off-by: default avatarShaohua Li <shli@fb.com>
    818da59f
md.c 234 KB