dm mpath: fail message ioctl if specified path is not valid

Fail the reinstate_path and fail_path message ioctl if the specified
path is not valid.

The message ioctl would succeed for the 'reinistate_path' and
'fail_path' messages even if action was not taken because the
specified device was not a valid path of the multipath device.

Before, when /dev/vdb is not a path of mpathb:
$ dmsetup message mpathb 0 reinstate_path /dev/vdb
$ echo $?
0

After:
$ dmsetup message mpathb 0 reinstate_path /dev/vdb
device-mapper: message ioctl failed: Invalid argument
Command failed
$ echo $?
1

Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>

authored by Mike Snitzer and committed by Alasdair G Kergon 19040c0b f8681205

+2 -2
+2 -2
drivers/md/dm-mpath.c
··· 1065 1065 static int action_dev(struct multipath *m, struct dm_dev *dev, 1066 1066 action_fn action) 1067 1067 { 1068 - int r = 0; 1068 + int r = -EINVAL; 1069 1069 struct pgpath *pgpath; 1070 1070 struct priority_group *pg; 1071 1071 ··· 1669 1669 *---------------------------------------------------------------*/ 1670 1670 static struct target_type multipath_target = { 1671 1671 .name = "multipath", 1672 - .version = {1, 2, 0}, 1672 + .version = {1, 3, 0}, 1673 1673 .module = THIS_MODULE, 1674 1674 .ctr = multipath_ctr, 1675 1675 .dtr = multipath_dtr,