diff options
author | Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 2008-07-14 03:59:04 -0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-07-14 04:02:12 -0400 |
commit | 683c5418e6ac9f40f925dab6f547a5b0a4ad43c6 (patch) | |
tree | 19dab2a72ba392f13c1c99eb24831107134149d4 /drivers/s390/cio/chp.c | |
parent | f08adc008d84f6b03d377ede951e29ed169e76e2 (diff) |
[S390] cio: suppress chpid event in case of configure error
Do not send CHP_ONLINE/CHP_OFFLINE events to subchannel drivers when a
channel-path configure request failed.
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/chp.c')
-rw-r--r-- | drivers/s390/cio/chp.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c index 19078d528853..e40eda0ed462 100644 --- a/drivers/s390/cio/chp.c +++ b/drivers/s390/cio/chp.c | |||
@@ -624,6 +624,7 @@ static void cfg_func(struct work_struct *work) | |||
624 | { | 624 | { |
625 | struct chp_id chpid; | 625 | struct chp_id chpid; |
626 | enum cfg_task_t t; | 626 | enum cfg_task_t t; |
627 | int rc; | ||
627 | 628 | ||
628 | mutex_lock(&cfg_lock); | 629 | mutex_lock(&cfg_lock); |
629 | t = cfg_none; | 630 | t = cfg_none; |
@@ -638,14 +639,24 @@ static void cfg_func(struct work_struct *work) | |||
638 | 639 | ||
639 | switch (t) { | 640 | switch (t) { |
640 | case cfg_configure: | 641 | case cfg_configure: |
641 | sclp_chp_configure(chpid); | 642 | rc = sclp_chp_configure(chpid); |
642 | info_expire(); | 643 | if (rc) |
643 | chsc_chp_online(chpid); | 644 | CIO_MSG_EVENT(2, "chp: sclp_chp_configure(%x.%02x)=" |
645 | "%d\n", chpid.cssid, chpid.id, rc); | ||
646 | else { | ||
647 | info_expire(); | ||
648 | chsc_chp_online(chpid); | ||
649 | } | ||
644 | break; | 650 | break; |
645 | case cfg_deconfigure: | 651 | case cfg_deconfigure: |
646 | sclp_chp_deconfigure(chpid); | 652 | rc = sclp_chp_deconfigure(chpid); |
647 | info_expire(); | 653 | if (rc) |
648 | chsc_chp_offline(chpid); | 654 | CIO_MSG_EVENT(2, "chp: sclp_chp_deconfigure(%x.%02x)=" |
655 | "%d\n", chpid.cssid, chpid.id, rc); | ||
656 | else { | ||
657 | info_expire(); | ||
658 | chsc_chp_offline(chpid); | ||
659 | } | ||
649 | break; | 660 | break; |
650 | case cfg_none: | 661 | case cfg_none: |
651 | /* Get updated information after last change. */ | 662 | /* Get updated information after last change. */ |