aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/chp.c
diff options
context:
space:
mode:
authorPeter Oberparleiter <peter.oberparleiter@de.ibm.com>2008-07-14 03:59:04 -0400
committerHeiko Carstens <heiko.carstens@de.ibm.com>2008-07-14 04:02:12 -0400
commit683c5418e6ac9f40f925dab6f547a5b0a4ad43c6 (patch)
tree19dab2a72ba392f13c1c99eb24831107134149d4 /drivers/s390/cio/chp.c
parentf08adc008d84f6b03d377ede951e29ed169e76e2 (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.c23
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. */