iscsi_buf_init_hdr(conn, &r2t->headbuf, (char*)hdr, (u8 *)dtask->hdrext); 
iscsi_buf_init_virt(&r2t->headbuf, (char*)hdr, sizeof(struct iscsi_hdr)); 
iscsi_solicit_data_cont(struct iscsi_conn *conn, struct iscsi_cmd_task *ctask,			struct iscsi_r2t_info *r2t, int left){	struct iscsi_data *hdr;	struct iscsi_data_task *dtask;	struct scsi_cmnd *sc = ctask->sc;	int new_offset;	dtask = mempool_alloc(ctask->datapool, GFP_ATOMIC);	BUG_ON(!dtask);	hdr = &dtask->hdr;	memset(hdr, 0, sizeof(struct iscsi_data));	hdr->ttt = r2t->ttt;	hdr->datasn = cpu_to_be32(r2t->solicit_datasn);	r2t->solicit_datasn++;	hdr->opcode = ISCSI_OP_SCSI_DATA_OUT;	memcpy(hdr->lun, ctask->hdr.lun, sizeof(hdr->lun));	hdr->itt = ctask->hdr.itt;	hdr->exp_statsn = r2t->exp_statsn;	new_offset = r2t->data_offset + r2t->sent;	hdr->offset = cpu_to_be32(new_offset);	if (left > conn->max_xmit_dlength) {		hton24(hdr->dlength, conn->max_xmit_dlength);		r2t->data_count = conn->max_xmit_dlength;	} else {		hton24(hdr->dlength, left);		r2t->data_count = left;		hdr->flags = ISCSI_FLAG_CMD_FINAL;	}	conn->dataout_pdus_cnt++;	iscsi_buf_init_hdr(conn, &r2t->headbuf, (char*)hdr,			   (u8 *)dtask->hdrext);	r2t->dtask = dtask;	if (sc->use_sg && !iscsi_buf_left(&r2t->sendbuf)) {		BUG_ON(ctask->bad_sg == r2t->sg);		iscsi_buf_init_sg(&r2t->sendbuf, r2t->sg);		r2t->sg += 1;	} else		iscsi_buf_init_iov(&ctask->sendbuf,			    (char*)sc->request_buffer + new_offset,			    r2t->data_count);	list_add(&dtask->item, &ctask->dataqueue);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/af973481f4a0902ad35726636c290f4794704948/iscsi_tcp.c/clean/drivers/scsi/iscsi_tcp.c