• Mikulas Patocka's avatar
    dm raid1: hold write bios when errors are handled · 60f355ea
    Mikulas Patocka authored
    Hold all write bios when errors are handled.
    
    Previously the failures list was used only when handling errors with
    a userspace daemon such as dmeventd.  Now, it is always used for all bios.
    The regions where some writes failed must be marked as nosync. This can only
    be done in process context (i.e. in raid1 workqueue), not in the
    write_callback function.
    
    Previously the write would succeed if writing to at least one leg
    succeeded.  This is wrong because data from the failed leg may be
    replicated to the correct leg.  Now, if using a userspace daemon, the
    write with some failures will be held until the daemon has done its job
    and reconfigured the array.  If not using a daemon, the write still
    succeeds if at least one leg succeeds. This is bad, but it is consistent
    with current behavior.
    Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
    Reviewed-by: default avatarTakahiro Yasui <tyasui@redhat.com>
    Tested-by: default avatarTakahiro Yasui <tyasui@redhat.com>
    Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
    60f355ea
dm-raid1.c 33.5 KB