zfcp_fsf_req_qtcb_init(fsf_req, fsf_cmd); 
fsf_req->adapter = adapter; fsf_req->fsf_command = fsf_cmd;  zfcp_fsf_req_qtcb_init(fsf_req); 
zfcp_fsf_req_create(struct zfcp_adapter *adapter, u32 fsf_cmd, int req_flags,		    mempool_t *pool, unsigned long *lock_flags,		    struct zfcp_fsf_req **fsf_req_p){	volatile struct qdio_buffer_element *sbale;	struct zfcp_fsf_req *fsf_req = NULL;	int ret = 0;	struct zfcp_qdio_queue *req_queue = &adapter->request_queue;	/* allocate new FSF request */	fsf_req = zfcp_fsf_req_alloc(pool, req_flags);	if (unlikely(NULL == fsf_req)) {		ZFCP_LOG_DEBUG("error: Could not put an FSF request into"			       "the outbound (send) queue.\n");		ret = -ENOMEM;		goto failed_fsf_req;	}        zfcp_fsf_req_qtcb_init(fsf_req, fsf_cmd);	/* initialize waitqueue which may be used to wait on 	   this request completion */	init_waitqueue_head(&fsf_req->completion_wq);        ret = zfcp_fsf_req_sbal_get(adapter, req_flags, lock_flags);        if(ret < 0) {                goto failed_sbals;	}	/*	 * We hold queue_lock here. Check if QDIOUP is set and let request fail	 * if it is not set (see also *_open_qdio and *_close_qdio).	 */	if (!atomic_test_mask(ZFCP_STATUS_ADAPTER_QDIOUP, &adapter->status)) {		write_unlock_irqrestore(&req_queue->queue_lock, *lock_flags);		ret = -EIO;		goto failed_sbals;	}	fsf_req->adapter = adapter;	/* pointer to "parent" adapter */	fsf_req->fsf_command = fsf_cmd;	fsf_req->sbal_number = 1;	fsf_req->sbal_first = req_queue->free_index;	fsf_req->sbal_curr = req_queue->free_index;        fsf_req->sbale_curr = 1;	if (likely(req_flags & ZFCP_REQ_AUTO_CLEANUP)) {		fsf_req->status |= ZFCP_STATUS_FSFREQ_CLEANUP;	}	sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0);	/* setup common SBALE fields */	sbale[0].addr = fsf_req;	sbale[0].flags |= SBAL_FLAGS0_COMMAND;	if (likely(fsf_req->qtcb != NULL)) {		sbale[1].addr = (void *) fsf_req->qtcb;		sbale[1].length = sizeof(struct fsf_qtcb);	}	ZFCP_LOG_TRACE("got %i free BUFFERs starting at index %i\n",                       fsf_req->sbal_number, fsf_req->sbal_first);	goto success; failed_sbals:/* dequeue new FSF request previously enqueued */	zfcp_fsf_req_free(fsf_req);	fsf_req = NULL; failed_fsf_req:	write_lock_irqsave(&req_queue->queue_lock, *lock_flags); success:	*fsf_req_p = fsf_req;	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8a36e4532ea10471f0a8605207d071361d7be2c3/zfcp_fsf.c/clean/drivers/s390/scsi/zfcp_fsf.c