• L
    md/raid10: prioritize adding disk to 'removed' mirror · ce90c45a
    Li Nan 提交于
    hulk inclusion
    category: bugfix
    bugzilla: 188804, https://gitee.com/openeuler/kernel/issues/I78YIS
    CVE: NA
    
    --------------------------------
    
    When add a new disk to raid10, it will traverse conf->mirror from start
    and find one of the following mirror:
      1. mirror->rdev is set to WantReplacement and it have no replacement,
         set new disk to mirror->replacement.
      2. no rdev, set new disk to mirror->rdev.
    
    There is a array as below (sda is set to WantReplacement):
    
        Number   Major   Minor   RaidDevice State
           0       8        0        0      active sync set-A   /dev/sda
           -       0        0        1      removed
           2       8       32        2      active sync set-A   /dev/sdc
           3       8       48        3      active sync set-B   /dev/sdd
    
    Use 'mdadm --add' to add a new disk to this array, the new disk will
    become sda's replacement instead of add to removed position, which is
    confusing for users. Meanwhile, after new disk recovery success, sda
    will be set to Faulty.
    
    Prioritize adding disk to 'removed' mirror is a better choice. In the
    above scenario, the behavior is the same as before, except sda will not
    be deleted. Before other disks are added, continued use sda is more
    reliable.
    Signed-off-by: NLi Nan <linan122@huawei.com>
    Reviewed-by: NYu Kuai <yukuai3@huawei.com>
    Reviewed-by: NHou Tao <houtao1@huawei.com>
    (cherry picked from commit 2e2e7ab6)
    ce90c45a
raid10.c 136.2 KB