fsf_req->data.send_fcp_command_task_management.unit = unit; 
fsf_req->data = (unsigned long) unit; 
zfcp_fsf_send_fcp_command_task_management(struct zfcp_adapter *adapter,					  struct zfcp_unit *unit,					  u8 tm_flags, int req_flags){	struct zfcp_fsf_req *fsf_req = NULL;	int retval = 0;	struct fcp_cmnd_iu *fcp_cmnd_iu;	unsigned long lock_flags;	volatile struct qdio_buffer_element *sbale;	/* setup new FSF request */	retval = zfcp_fsf_req_create(adapter, FSF_QTCB_FCP_CMND, req_flags,				     adapter->pool.fsf_req_scsi,				     &lock_flags, &fsf_req);	if (retval < 0) {		ZFCP_LOG_INFO("error: Could not create FCP command (task "			      "management) request for adapter %s, port "			      " 0x%016Lx, unit 0x%016Lx.\n",			      zfcp_get_busid_by_adapter(adapter),			      unit->port->wwpn, unit->fcp_lun);		goto out;	}	/*	 * Used to decide on proper handler in the return path,	 * could be either zfcp_fsf_send_fcp_command_task_handler or	 * zfcp_fsf_send_fcp_command_task_management_handler */	fsf_req->status |= ZFCP_STATUS_FSFREQ_TASK_MANAGEMENT;	/*	 * hold a pointer to the unit being target of this	 * task management request	 */	fsf_req->data.send_fcp_command_task_management.unit = unit;	/* set FSF related fields in QTCB */	fsf_req->qtcb->header.lun_handle = unit->handle;	fsf_req->qtcb->header.port_handle = unit->port->handle;	fsf_req->qtcb->bottom.io.data_direction = FSF_DATADIR_CMND;	fsf_req->qtcb->bottom.io.service_class = adapter->fc_service_class;	fsf_req->qtcb->bottom.io.fcp_cmnd_length =		sizeof (struct fcp_cmnd_iu) + sizeof (fcp_dl_t);	sbale = zfcp_qdio_sbale_req(fsf_req, fsf_req->sbal_curr, 0);	sbale[0].flags |= SBAL_FLAGS0_TYPE_WRITE;	sbale[1].flags |= SBAL_FLAGS_LAST_ENTRY;	/* set FCP related fields in FCP_CMND IU in QTCB */	fcp_cmnd_iu = (struct fcp_cmnd_iu *)		&(fsf_req->qtcb->bottom.io.fcp_cmnd);	fcp_cmnd_iu->fcp_lun = unit->fcp_lun;	fcp_cmnd_iu->task_management_flags = tm_flags;	/* start QDIO request for this FSF request */	zfcp_fsf_start_scsi_er_timer(adapter);	retval = zfcp_fsf_req_send(fsf_req, NULL);	if (retval) {		del_timer(&adapter->scsi_er_timer);		ZFCP_LOG_INFO("error: Could not send an FCP-command (task "			      "management) on adapter %s, port 0x%016Lx for "			      "unit LUN 0x%016Lx\n",			      zfcp_get_busid_by_adapter(adapter),			      unit->port->wwpn,			      unit->fcp_lun);		zfcp_fsf_req_free(fsf_req);		fsf_req = NULL;		goto out;	}	ZFCP_LOG_TRACE("Send FCP Command (task management function) initiated "		       "(adapter %s, port 0x%016Lx, unit 0x%016Lx, "		       "tm_flags=0x%x)\n",		       zfcp_get_busid_by_adapter(adapter),		       unit->port->wwpn,		       unit->fcp_lun,		       tm_flags); out:	write_unlock_irqrestore(&adapter->request_queue.queue_lock, lock_flags);	return fsf_req;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/059c97d0434834d291eff94669ca2dd3eaac9d28/zfcp_fsf.c/clean/drivers/s390/scsi/zfcp_fsf.c