mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 09:44:18 +08:00
a79af8a64d
This has iscsi_tcp use the iscsi_conn_get_addr_param libiscsi function. It also drops the use of the libiscsi session portal buffers, so they can be removed in the next patches. Instead of copying the values at bind time we get them during get() time. If we are not connected userspace will now get -ENOTCONN, so it knows that connection is disconnected instead of a possible stale value. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
/*
|
|
* iSCSI Initiator TCP Transport
|
|
* Copyright (C) 2004 Dmitry Yusupov
|
|
* Copyright (C) 2004 Alex Aizman
|
|
* Copyright (C) 2005 - 2006 Mike Christie
|
|
* Copyright (C) 2006 Red Hat, Inc. All rights reserved.
|
|
* maintained by open-iscsi@googlegroups.com
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published
|
|
* by the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* See the file COPYING included with this distribution for more details.
|
|
*/
|
|
|
|
#ifndef ISCSI_SW_TCP_H
|
|
#define ISCSI_SW_TCP_H
|
|
|
|
#include <scsi/libiscsi.h>
|
|
#include <scsi/libiscsi_tcp.h>
|
|
|
|
struct socket;
|
|
struct iscsi_tcp_conn;
|
|
|
|
/* Socket connection send helper */
|
|
struct iscsi_sw_tcp_send {
|
|
struct iscsi_hdr *hdr;
|
|
struct iscsi_segment segment;
|
|
struct iscsi_segment data_segment;
|
|
};
|
|
|
|
struct iscsi_sw_tcp_conn {
|
|
struct socket *sock;
|
|
|
|
struct iscsi_sw_tcp_send out;
|
|
/* old values for socket callbacks */
|
|
void (*old_data_ready)(struct sock *, int);
|
|
void (*old_state_change)(struct sock *);
|
|
void (*old_write_space)(struct sock *);
|
|
|
|
/* data and header digests */
|
|
struct hash_desc tx_hash; /* CRC32C (Tx) */
|
|
struct hash_desc rx_hash; /* CRC32C (Rx) */
|
|
|
|
/* MIB custom statistics */
|
|
uint32_t sendpage_failures_cnt;
|
|
uint32_t discontiguous_hdr_cnt;
|
|
|
|
ssize_t (*sendpage)(struct socket *, struct page *, int, size_t, int);
|
|
};
|
|
|
|
struct iscsi_sw_tcp_host {
|
|
struct iscsi_session *session;
|
|
};
|
|
|
|
struct iscsi_sw_tcp_hdrbuf {
|
|
struct iscsi_hdr hdrbuf;
|
|
char hdrextbuf[ISCSI_MAX_AHS_SIZE +
|
|
ISCSI_DIGEST_SIZE];
|
|
};
|
|
|
|
#endif /* ISCSI_SW_TCP_H */
|