diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2010-02-26 16:37:28 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2010-02-26 16:37:29 -0500 |
commit | 76e6fb4b86446e4605379b99ad3dd3f96bb1696f (patch) | |
tree | 0d123c6e1091d28ec87d98e76e037cfe8919942f /drivers/s390/cio/device.c | |
parent | b4c707214c987da021d4d5c4ed54612cf73d80d6 (diff) |
[S390] ccw_device_notify: improve return codes
Callers of ccw_device_notify could not distinguish between a driver
who has no notifier registered and a driver who doesn't want to keep
a device after a certain event. Change this by adding proper return
codes.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device.c')
-rw-r--r-- | drivers/s390/cio/device.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 6aa2f069c6be..c7b2b7b26b8b 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
@@ -1338,7 +1338,7 @@ static enum io_sch_action sch_get_action(struct subchannel *sch) | |||
1338 | /* Not operational. */ | 1338 | /* Not operational. */ |
1339 | if (!cdev) | 1339 | if (!cdev) |
1340 | return IO_SCH_UNREG; | 1340 | return IO_SCH_UNREG; |
1341 | if (!ccw_device_notify(cdev, CIO_GONE)) | 1341 | if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) |
1342 | return IO_SCH_UNREG; | 1342 | return IO_SCH_UNREG; |
1343 | return IO_SCH_ORPH_UNREG; | 1343 | return IO_SCH_ORPH_UNREG; |
1344 | } | 1344 | } |
@@ -1346,12 +1346,12 @@ static enum io_sch_action sch_get_action(struct subchannel *sch) | |||
1346 | if (!cdev) | 1346 | if (!cdev) |
1347 | return IO_SCH_ATTACH; | 1347 | return IO_SCH_ATTACH; |
1348 | if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) { | 1348 | if (sch->schib.pmcw.dev != cdev->private->dev_id.devno) { |
1349 | if (!ccw_device_notify(cdev, CIO_GONE)) | 1349 | if (ccw_device_notify(cdev, CIO_GONE) != NOTIFY_OK) |
1350 | return IO_SCH_UNREG_ATTACH; | 1350 | return IO_SCH_UNREG_ATTACH; |
1351 | return IO_SCH_ORPH_ATTACH; | 1351 | return IO_SCH_ORPH_ATTACH; |
1352 | } | 1352 | } |
1353 | if ((sch->schib.pmcw.pam & sch->opm) == 0) { | 1353 | if ((sch->schib.pmcw.pam & sch->opm) == 0) { |
1354 | if (!ccw_device_notify(cdev, CIO_NO_PATH)) | 1354 | if (ccw_device_notify(cdev, CIO_NO_PATH) != NOTIFY_OK) |
1355 | return IO_SCH_UNREG; | 1355 | return IO_SCH_UNREG; |
1356 | return IO_SCH_DISC; | 1356 | return IO_SCH_DISC; |
1357 | } | 1357 | } |
@@ -1788,7 +1788,7 @@ out: | |||
1788 | static int resume_handle_boxed(struct ccw_device *cdev) | 1788 | static int resume_handle_boxed(struct ccw_device *cdev) |
1789 | { | 1789 | { |
1790 | cdev->private->state = DEV_STATE_BOXED; | 1790 | cdev->private->state = DEV_STATE_BOXED; |
1791 | if (ccw_device_notify(cdev, CIO_BOXED)) | 1791 | if (ccw_device_notify(cdev, CIO_BOXED) == NOTIFY_OK) |
1792 | return 0; | 1792 | return 0; |
1793 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); | 1793 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); |
1794 | return -ENODEV; | 1794 | return -ENODEV; |
@@ -1797,7 +1797,7 @@ static int resume_handle_boxed(struct ccw_device *cdev) | |||
1797 | static int resume_handle_disc(struct ccw_device *cdev) | 1797 | static int resume_handle_disc(struct ccw_device *cdev) |
1798 | { | 1798 | { |
1799 | cdev->private->state = DEV_STATE_DISCONNECTED; | 1799 | cdev->private->state = DEV_STATE_DISCONNECTED; |
1800 | if (ccw_device_notify(cdev, CIO_GONE)) | 1800 | if (ccw_device_notify(cdev, CIO_GONE) == NOTIFY_OK) |
1801 | return 0; | 1801 | return 0; |
1802 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); | 1802 | ccw_device_sched_todo(cdev, CDEV_TODO_UNREG); |
1803 | return -ENODEV; | 1803 | return -ENODEV; |