From owner-svn-src-all@freebsd.org Fri Jan 20 17:14:11 2017 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DE38ACB9AE2; Fri, 20 Jan 2017 17:14:11 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 93FD61DE1; Fri, 20 Jan 2017 17:14:11 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v0KHEAGL039039; Fri, 20 Jan 2017 17:14:10 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v0KHEA1N039038; Fri, 20 Jan 2017 17:14:10 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201701201714.v0KHEA1N039038@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Fri, 20 Jan 2017 17:14:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r312543 - head/usr.sbin/iscsid X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Jan 2017 17:14:12 -0000 Author: mav Date: Fri Jan 20 17:14:10 2017 New Revision: 312543 URL: https://svnweb.freebsd.org/changeset/base/312543 Log: Remove ISCSI_MAX_DATA_SEGMENT_LENGTH, using negotiated value. MFC after: 2 weeks Modified: head/usr.sbin/iscsid/pdu.c Modified: head/usr.sbin/iscsid/pdu.c ============================================================================== --- head/usr.sbin/iscsid/pdu.c Fri Jan 20 17:03:44 2017 (r312542) +++ head/usr.sbin/iscsid/pdu.c Fri Jan 20 17:14:10 2017 (r312543) @@ -106,13 +106,15 @@ pdu_new_response(struct pdu *request) static void pdu_receive_proxy(struct pdu *pdu) { + struct connection *conn; struct iscsi_daemon_receive *idr; size_t len; int error; - assert(pdu->pdu_connection->conn_conf.isc_iser != 0); + conn = pdu->pdu_connection; + assert(conn->conn_conf.isc_iser != 0); - pdu->pdu_data = malloc(ISCSI_MAX_DATA_SEGMENT_LENGTH); + pdu->pdu_data = malloc(conn->conn_max_recv_data_segment_length); if (pdu->pdu_data == NULL) log_err(1, "malloc"); @@ -120,12 +122,12 @@ pdu_receive_proxy(struct pdu *pdu) if (idr == NULL) log_err(1, "calloc"); - idr->idr_session_id = pdu->pdu_connection->conn_session_id; + idr->idr_session_id = conn->conn_session_id; idr->idr_bhs = pdu->pdu_bhs; - idr->idr_data_segment_len = ISCSI_MAX_DATA_SEGMENT_LENGTH; + idr->idr_data_segment_len = conn->conn_max_recv_data_segment_length; idr->idr_data_segment = pdu->pdu_data; - error = ioctl(pdu->pdu_connection->conn_iscsi_fd, ISCSIDRECEIVE, idr); + error = ioctl(conn->conn_iscsi_fd, ISCSIDRECEIVE, idr); if (error != 0) log_err(1, "ISCSIDRECEIVE"); @@ -134,7 +136,7 @@ pdu_receive_proxy(struct pdu *pdu) log_errx(1, "protocol error: non-empty AHS"); len = pdu_data_segment_length(pdu); - assert(len <= ISCSI_MAX_DATA_SEGMENT_LENGTH); + assert(len <= (size_t)conn->conn_max_recv_data_segment_length); pdu->pdu_data_len = len; free(idr); @@ -143,10 +145,12 @@ pdu_receive_proxy(struct pdu *pdu) static void pdu_send_proxy(struct pdu *pdu) { + struct connection *conn; struct iscsi_daemon_send *ids; int error; - assert(pdu->pdu_connection->conn_conf.isc_iser != 0); + conn = pdu->pdu_connection; + assert(conn->conn_conf.isc_iser != 0); pdu_set_data_segment_length(pdu, pdu->pdu_data_len); @@ -154,12 +158,12 @@ pdu_send_proxy(struct pdu *pdu) if (ids == NULL) log_err(1, "calloc"); - ids->ids_session_id = pdu->pdu_connection->conn_session_id; + ids->ids_session_id = conn->conn_session_id; ids->ids_bhs = pdu->pdu_bhs; ids->ids_data_segment_len = pdu->pdu_data_len; ids->ids_data_segment = pdu->pdu_data; - error = ioctl(pdu->pdu_connection->conn_iscsi_fd, ISCSIDSEND, ids); + error = ioctl(conn->conn_iscsi_fd, ISCSIDSEND, ids); if (error != 0) log_err(1, "ISCSIDSEND"); @@ -204,18 +208,18 @@ pdu_read(const struct connection *conn, void pdu_receive(struct pdu *pdu) { + struct connection *conn; size_t len, padding; char dummy[4]; + conn = pdu->pdu_connection; #ifdef ICL_KERNEL_PROXY - if (pdu->pdu_connection->conn_conf.isc_iser != 0) + if (conn->conn_conf.isc_iser != 0) return (pdu_receive_proxy(pdu)); #endif + assert(conn->conn_conf.isc_iser == 0); - assert(pdu->pdu_connection->conn_conf.isc_iser == 0); - - pdu_read(pdu->pdu_connection, - (char *)pdu->pdu_bhs, sizeof(*pdu->pdu_bhs)); + pdu_read(conn, (char *)pdu->pdu_bhs, sizeof(*pdu->pdu_bhs)); len = pdu_ahs_length(pdu); if (len > 0) @@ -223,10 +227,10 @@ pdu_receive(struct pdu *pdu) len = pdu_data_segment_length(pdu); if (len > 0) { - if (len > ISCSI_MAX_DATA_SEGMENT_LENGTH) { + if (len > (size_t)conn->conn_max_recv_data_segment_length) { log_errx(1, "protocol error: received PDU " "with DataSegmentLength exceeding %d", - ISCSI_MAX_DATA_SEGMENT_LENGTH); + conn->conn_max_recv_data_segment_length); } pdu->pdu_data_len = len; @@ -234,14 +238,12 @@ pdu_receive(struct pdu *pdu) if (pdu->pdu_data == NULL) log_err(1, "malloc"); - pdu_read(pdu->pdu_connection, - (char *)pdu->pdu_data, pdu->pdu_data_len); + pdu_read(conn, (char *)pdu->pdu_data, pdu->pdu_data_len); padding = pdu_padding(pdu); if (padding != 0) { assert(padding < sizeof(dummy)); - pdu_read(pdu->pdu_connection, - (char *)dummy, padding); + pdu_read(conn, (char *)dummy, padding); } } } @@ -249,18 +251,20 @@ pdu_receive(struct pdu *pdu) void pdu_send(struct pdu *pdu) { + struct connection *conn; ssize_t ret, total_len; size_t padding; uint32_t zero = 0; struct iovec iov[3]; int iovcnt; + conn = pdu->pdu_connection; #ifdef ICL_KERNEL_PROXY - if (pdu->pdu_connection->conn_conf.isc_iser != 0) + if (conn->conn_conf.isc_iser != 0) return (pdu_send_proxy(pdu)); #endif - assert(pdu->pdu_connection->conn_conf.isc_iser == 0); + assert(conn->conn_conf.isc_iser == 0); pdu_set_data_segment_length(pdu, pdu->pdu_data_len); iov[0].iov_base = pdu->pdu_bhs; @@ -284,7 +288,7 @@ pdu_send(struct pdu *pdu) } } - ret = writev(pdu->pdu_connection->conn_socket, iov, iovcnt); + ret = writev(conn->conn_socket, iov, iovcnt); if (ret < 0) { if (timed_out()) log_errx(1, "exiting due to timeout");