git: 9e425a8a7ef0 - main - ctld: Move kernel_limits into login.c where it is used
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 05 Feb 2025 19:55:41 UTC
The branch main has been updated by jhb:
URL: https://cgit.FreeBSD.org/src/commit/?id=9e425a8a7ef075706c901b27091a79e2911b7595
commit 9e425a8a7ef075706c901b27091a79e2911b7595
Author: John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-02-05 19:54:09 +0000
Commit: John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-02-05 19:55:16 +0000
ctld: Move kernel_limits into login.c where it is used
Reviewed by: asomers
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D48771
---
usr.sbin/ctld/ctld.h | 8 ++-----
usr.sbin/ctld/kernel.c | 56 +--------------------------------------------
usr.sbin/ctld/login.c | 62 +++++++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 64 insertions(+), 62 deletions(-)
diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h
index c57bd32c77a2..241785199cda 100644
--- a/usr.sbin/ctld/ctld.h
+++ b/usr.sbin/ctld/ctld.h
@@ -47,7 +47,6 @@
#define DEFAULT_CD_BLOCKSIZE 2048
#define MAX_LUNS 1024
-#define MAX_DATA_SEGMENT_LENGTH (128 * 1024)
#define SOCKBUF_SIZE 1048576
struct auth {
@@ -246,6 +245,8 @@ struct ctld_connection {
struct chap *conn_chap;
};
+extern int ctl_fd;
+
int parse_conf(struct conf *newconf, const char *path);
int uclparse_conf(struct conf *conf, const char *path);
@@ -352,11 +353,6 @@ int kernel_lun_add(struct lun *lun);
int kernel_lun_modify(struct lun *lun);
int kernel_lun_remove(struct lun *lun);
void kernel_handoff(struct ctld_connection *conn);
-void kernel_limits(const char *offload, int s,
- int *max_recv_data_segment_length,
- int *max_send_data_segment_length,
- int *max_burst_length,
- int *first_burst_length);
int kernel_port_add(struct port *port);
int kernel_port_update(struct port *port, struct port *old);
int kernel_port_remove(struct port *port);
diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.c
index 1fa05cb159c3..7e9ef8ec42c2 100644
--- a/usr.sbin/ctld/kernel.c
+++ b/usr.sbin/ctld/kernel.c
@@ -77,7 +77,7 @@
extern bool proxy_mode;
-static int ctl_fd = 0;
+int ctl_fd = 0;
void
kernel_init(void)
@@ -907,60 +907,6 @@ kernel_handoff(struct ctld_connection *conn)
}
}
-void
-kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl,
- int *max_burst_length, int *first_burst_length)
-{
- struct ctl_iscsi req;
- struct ctl_iscsi_limits_params *cilp;
-
- bzero(&req, sizeof(req));
-
- req.type = CTL_ISCSI_LIMITS;
- cilp = (struct ctl_iscsi_limits_params *)&(req.data.limits);
- if (offload != NULL) {
- strlcpy(cilp->offload, offload, sizeof(cilp->offload));
- }
- cilp->socket = s;
-
- if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
- log_err(1, "error issuing CTL_ISCSI ioctl; "
- "dropping connection");
- }
-
- if (req.status != CTL_ISCSI_OK) {
- log_errx(1, "error returned from CTL iSCSI limits request: "
- "%s; dropping connection", req.error_str);
- }
-
- if (cilp->max_recv_data_segment_length != 0) {
- *max_recv_dsl = cilp->max_recv_data_segment_length;
- *max_send_dsl = cilp->max_recv_data_segment_length;
- }
- if (cilp->max_send_data_segment_length != 0)
- *max_send_dsl = cilp->max_send_data_segment_length;
- if (cilp->max_burst_length != 0)
- *max_burst_length = cilp->max_burst_length;
- if (cilp->first_burst_length != 0)
- *first_burst_length = cilp->first_burst_length;
- if (*max_burst_length < *first_burst_length)
- *first_burst_length = *max_burst_length;
-
- if (offload != NULL) {
- log_debugx("Kernel limits for offload \"%s\" are "
- "MaxRecvDataSegment=%d, max_send_dsl=%d, "
- "MaxBurstLength=%d, FirstBurstLength=%d",
- offload, *max_recv_dsl, *max_send_dsl, *max_burst_length,
- *first_burst_length);
- } else {
- log_debugx("Kernel limits are "
- "MaxRecvDataSegment=%d, max_send_dsl=%d, "
- "MaxBurstLength=%d, FirstBurstLength=%d",
- *max_recv_dsl, *max_send_dsl, *max_burst_length,
- *first_burst_length);
- }
-}
-
int
kernel_port_add(struct port *port)
{
diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.c
index f57582f4e62f..b763104a092e 100644
--- a/usr.sbin/ctld/login.c
+++ b/usr.sbin/ctld/login.c
@@ -29,20 +29,80 @@
*
*/
-#include <sys/cdefs.h>
+#include <sys/time.h>
#include <assert.h>
#include <stdbool.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
+#include <cam/ctl/ctl.h>
+#include <cam/ctl/ctl_io.h>
+#include <cam/ctl/ctl_ioctl.h>
#include "ctld.h"
#include "iscsi_proto.h"
+#define MAX_DATA_SEGMENT_LENGTH (128 * 1024)
+
static void login_send_error(struct pdu *request,
char class, char detail);
+static void
+kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl,
+ int *max_burst_length, int *first_burst_length)
+{
+ struct ctl_iscsi req;
+ struct ctl_iscsi_limits_params *cilp;
+
+ bzero(&req, sizeof(req));
+
+ req.type = CTL_ISCSI_LIMITS;
+ cilp = (struct ctl_iscsi_limits_params *)&(req.data.limits);
+ if (offload != NULL) {
+ strlcpy(cilp->offload, offload, sizeof(cilp->offload));
+ }
+ cilp->socket = s;
+
+ if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
+ log_err(1, "error issuing CTL_ISCSI ioctl; "
+ "dropping connection");
+ }
+
+ if (req.status != CTL_ISCSI_OK) {
+ log_errx(1, "error returned from CTL iSCSI limits request: "
+ "%s; dropping connection", req.error_str);
+ }
+
+ if (cilp->max_recv_data_segment_length != 0) {
+ *max_recv_dsl = cilp->max_recv_data_segment_length;
+ *max_send_dsl = cilp->max_recv_data_segment_length;
+ }
+ if (cilp->max_send_data_segment_length != 0)
+ *max_send_dsl = cilp->max_send_data_segment_length;
+ if (cilp->max_burst_length != 0)
+ *max_burst_length = cilp->max_burst_length;
+ if (cilp->first_burst_length != 0)
+ *first_burst_length = cilp->first_burst_length;
+ if (*max_burst_length < *first_burst_length)
+ *first_burst_length = *max_burst_length;
+
+ if (offload != NULL) {
+ log_debugx("Kernel limits for offload \"%s\" are "
+ "MaxRecvDataSegment=%d, max_send_dsl=%d, "
+ "MaxBurstLength=%d, FirstBurstLength=%d",
+ offload, *max_recv_dsl, *max_send_dsl, *max_burst_length,
+ *first_burst_length);
+ } else {
+ log_debugx("Kernel limits are "
+ "MaxRecvDataSegment=%d, max_send_dsl=%d, "
+ "MaxBurstLength=%d, FirstBurstLength=%d",
+ *max_recv_dsl, *max_send_dsl, *max_burst_length,
+ *first_burst_length);
+ }
+}
+
static void
login_set_nsg(struct pdu *response, int nsg)
{