dm raid: fix RAID leg rebuild errors
authorHeinz Mauelshagen <heinzm@redhat.com>
Thu, 6 Sep 2018 20:54:29 +0000 (22:54 +0200)
committerMike Snitzer <snitzer@redhat.com>
Thu, 6 Sep 2018 21:07:56 +0000 (17:07 -0400)
commit36a240a706d43383bbdd377522501ddd2e5771f6
tree4fb2525794d41162eb2be6cb4617b60c6ebc37b6
parentc44a5ee803d2b7ed8c2e6ce24a5c4dd60778886e
dm raid: fix RAID leg rebuild errors

On fast devices such as NVMe, a flaw in rs_get_progress() results in
false target status output when userspace lvm2 requests leg rebuilds
(symptom of the failure is device health chars 'aaaaaaaa' instead of
expected 'aAaAAAAA' causing lvm2 to fail).

The correct sync action state definitions already exist in
decipher_sync_action() so fix rs_get_progress() to use it.

Change decipher_sync_action() to return an enum rather than a string for
the sync states and call it from rs_get_progress().  Introduce
sync_str() to translate from enum to the string that is needed by
raid_status().

Signed-off-by: Heinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-raid.c