diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_scsi.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index fffd12399010..3b5d48c61534 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
@@ -558,9 +558,8 @@ static int | |||
558 | zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags) | 558 | zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags) |
559 | { | 559 | { |
560 | struct zfcp_adapter *adapter = unit->port->adapter; | 560 | struct zfcp_adapter *adapter = unit->port->adapter; |
561 | int retval; | ||
562 | int status; | ||
563 | struct zfcp_fsf_req *fsf_req; | 561 | struct zfcp_fsf_req *fsf_req; |
562 | int retval = 0; | ||
564 | 563 | ||
565 | /* issue task management function */ | 564 | /* issue task management function */ |
566 | fsf_req = zfcp_fsf_send_fcp_command_task_management | 565 | fsf_req = zfcp_fsf_send_fcp_command_task_management |
@@ -574,18 +573,16 @@ zfcp_task_management_function(struct zfcp_unit *unit, u8 tm_flags) | |||
574 | goto out; | 573 | goto out; |
575 | } | 574 | } |
576 | 575 | ||
577 | retval = zfcp_fsf_req_wait_and_cleanup(fsf_req, | 576 | __wait_event(fsf_req->completion_wq, |
578 | ZFCP_UNINTERRUPTIBLE, &status); | 577 | fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED); |
579 | /* | 578 | |
580 | * check completion status of task management function | 579 | /* check completion status of task management function */ |
581 | * (status should always be valid since no signals permitted) | 580 | if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED) |
582 | */ | ||
583 | if (status & ZFCP_STATUS_FSFREQ_TMFUNCFAILED) | ||
584 | retval = -EIO; | 581 | retval = -EIO; |
585 | else if (status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP) | 582 | else if (fsf_req->status & ZFCP_STATUS_FSFREQ_TMFUNCNOTSUPP) |
586 | retval = -ENOTSUPP; | 583 | retval = -ENOTSUPP; |
587 | else | 584 | |
588 | retval = 0; | 585 | zfcp_fsf_req_free(fsf_req); |
589 | out: | 586 | out: |
590 | return retval; | 587 | return retval; |
591 | } | 588 | } |