zfcp_fsf_req_cleanup(fsf_req); 
zfcp_fsf_req_free(fsf_req); 
zfcp_fsf_exchange_port_data(struct zfcp_adapter *adapter,			    struct fsf_qtcb_bottom_port *data){	volatile struct qdio_buffer_element *sbale;	int retval = 0;	unsigned long lock_flags;        struct zfcp_fsf_req *fsf_req;	struct timer_list *timer;        if(!(adapter->supported_features & FSF_FEATURE_HBAAPI_MANAGEMENT)){		ZFCP_LOG_INFO("error: exchange port data "                              "command not supported by adapter %s\n",			      zfcp_get_busid_by_adapter(adapter));                return -EOPNOTSUPP;        }	timer = kmalloc(sizeof(struct timer_list), GFP_KERNEL);	if (!timer)		return -ENOMEM;	/* setup new FSF request */	retval = zfcp_fsf_req_create(adapter, FSF_QTCB_EXCHANGE_PORT_DATA,                                     0, 0, &lock_flags, &fsf_req);	if (retval < 0) {		ZFCP_LOG_INFO("error: Out of resources. Could not create an "                              "exchange port data request for"                              "the adapter %s.\n",			      zfcp_get_busid_by_adapter(adapter));		write_unlock_irqrestore(&adapter->request_queue.queue_lock,					lock_flags);		goto out;	}	sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0);        sbale[0].flags |= SBAL_FLAGS0_TYPE_READ;        sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;        fsf_req->data.port_data = data;	init_timer(timer);	timer->function = zfcp_fsf_request_timeout_handler;	timer->data = (unsigned long) adapter;	timer->expires = ZFCP_FSF_REQUEST_TIMEOUT;	retval = zfcp_fsf_req_send(fsf_req, timer);	if (retval) {		ZFCP_LOG_INFO("error: Could not send an exchange port data "                              "command on the adapter %s\n",			      zfcp_get_busid_by_adapter(adapter));		zfcp_fsf_req_free(fsf_req);		write_unlock_irqrestore(&adapter->request_queue.queue_lock,					lock_flags);		goto out;	}	ZFCP_LOG_DEBUG("Exchange Port Data request initiated (adapter %s)\n",		       zfcp_get_busid_by_adapter(adapter));	write_unlock_irqrestore(&adapter->request_queue.queue_lock,				lock_flags);	wait_event(fsf_req->completion_wq,		   fsf_req->status & ZFCP_STATUS_FSFREQ_COMPLETED);	del_timer_sync(timer);	zfcp_fsf_req_cleanup(fsf_req); out:	kfree(timer);	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1db2c9c0931a53fe013db55fd2ff58859db31e8d/zfcp_fsf.c/clean/drivers/s390/scsi/zfcp_fsf.c