Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Sep 2015 13:37:48 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r287823 - head/usr.sbin/ctld
Message-ID:  <201509151337.t8FDbmAs097462@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Tue Sep 15 13:37:48 2015
New Revision: 287823
URL: https://svnweb.freebsd.org/changeset/base/287823

Log:
  Add ctl-lun config option for consistency in HA setups.

Modified:
  head/usr.sbin/ctld/ctl.conf.5
  head/usr.sbin/ctld/ctld.c
  head/usr.sbin/ctld/kernel.c
  head/usr.sbin/ctld/parse.y
  head/usr.sbin/ctld/token.l

Modified: head/usr.sbin/ctld/ctl.conf.5
==============================================================================
--- head/usr.sbin/ctld/ctl.conf.5	Tue Sep 15 13:24:52 2015	(r287822)
+++ head/usr.sbin/ctld/ctl.conf.5	Tue Sep 15 13:37:48 2015	(r287823)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 7, 2015
+.Dd September 15, 2015
 .Dt CTL.CONF 5
 .Os
 .Sh NAME
@@ -388,6 +388,10 @@ The default backend is block.
 .It Ic blocksize Ar size
 The blocksize visible to the initiator.
 The default blocksize is 512.
+.It Ic ctl-lun Ar lun_id
+Global numeric identifier to use for a given LUN inside CTL.
+By default CTL allocates those IDs dynamically, but explicit specification
+may be needed for consistency in HA configurations.
 .It Ic device-id Ar string
 The SCSI Device Identification string presented to the initiator.
 .It Ic option Ar name Ar value

Modified: head/usr.sbin/ctld/ctld.c
==============================================================================
--- head/usr.sbin/ctld/ctld.c	Tue Sep 15 13:24:52 2015	(r287822)
+++ head/usr.sbin/ctld/ctld.c	Tue Sep 15 13:37:48 2015	(r287823)
@@ -1397,6 +1397,7 @@ lun_new(struct conf *conf, const char *n
 	lun->l_name = checked_strdup(name);
 	TAILQ_INIT(&lun->l_options);
 	TAILQ_INSERT_TAIL(&conf->conf_luns, lun, l_next);
+	lun->l_ctl_lun = -1;
 
 	return (lun);
 }

Modified: head/usr.sbin/ctld/kernel.c
==============================================================================
--- head/usr.sbin/ctld/kernel.c	Tue Sep 15 13:24:52 2015	(r287822)
+++ head/usr.sbin/ctld/kernel.c	Tue Sep 15 13:37:48 2015	(r287823)
@@ -656,6 +656,11 @@ kernel_lun_add(struct lun *lun)
 	if (lun->l_size != 0)
 		req.reqdata.create.lun_size_bytes = lun->l_size;
 
+	if (lun->l_ctl_lun >= 0) {
+		req.reqdata.create.req_lun_id = lun->l_ctl_lun;
+		req.reqdata.create.flags |= CTL_LUN_FLAG_ID_REQ;
+	}
+
 	req.reqdata.create.flags |= CTL_LUN_FLAG_DEV_TYPE;
 	req.reqdata.create.device_type = T_DIRECT;
 

Modified: head/usr.sbin/ctld/parse.y
==============================================================================
--- head/usr.sbin/ctld/parse.y	Tue Sep 15 13:24:52 2015	(r287822)
+++ head/usr.sbin/ctld/parse.y	Tue Sep 15 13:37:48 2015	(r287823)
@@ -57,8 +57,8 @@ extern void	yyrestart(FILE *);
 %}
 
 %token ALIAS AUTH_GROUP AUTH_TYPE BACKEND BLOCKSIZE CHAP CHAP_MUTUAL
-%token CLOSING_BRACKET DEBUG DEVICE_ID DISCOVERY_AUTH_GROUP DISCOVERY_FILTER
-%token FOREIGN
+%token CLOSING_BRACKET CTL_LUN DEBUG DEVICE_ID DISCOVERY_AUTH_GROUP
+%token DISCOVERY_FILTER FOREIGN
 %token INITIATOR_NAME INITIATOR_PORTAL ISNS_SERVER ISNS_PERIOD ISNS_TIMEOUT
 %token LISTEN LISTEN_ISER LUN MAXPROC OFFLOAD OPENING_BRACKET OPTION
 %token PATH PIDFILE PORT PORTAL_GROUP REDIRECT SEMICOLON SERIAL SIZE STR
@@ -855,6 +855,8 @@ lun_entry:
 	|
 	lun_device_id
 	|
+	lun_ctl_lun
+	|
 	lun_option
 	|
 	lun_path
@@ -912,6 +914,26 @@ lun_device_id:	DEVICE_ID STR
 	}
 	;
 
+lun_ctl_lun:	CTL_LUN STR
+	{
+		uint64_t tmp;
+
+		if (expand_number($2, &tmp) != 0) {
+			yyerror("invalid numeric value");
+			free($2);
+			return (1);
+		}
+
+		if (lun->l_ctl_lun >= 0) {
+			log_warnx("ctl_lun for lun \"%s\" "
+			    "specified more than once",
+			    lun->l_name);
+			return (1);
+		}
+		lun_set_ctl_lun(lun, tmp);
+	}
+	;
+
 lun_option:	OPTION STR STR
 	{
 		struct lun_option *clo;

Modified: head/usr.sbin/ctld/token.l
==============================================================================
--- head/usr.sbin/ctld/token.l	Tue Sep 15 13:24:52 2015	(r287822)
+++ head/usr.sbin/ctld/token.l	Tue Sep 15 13:37:48 2015	(r287823)
@@ -54,6 +54,7 @@ backend			{ return BACKEND; }
 blocksize		{ return BLOCKSIZE; }
 chap			{ return CHAP; }
 chap-mutual		{ return CHAP_MUTUAL; }
+ctl-lun			{ return CTL_LUN; }
 debug			{ return DEBUG; }
 device-id		{ return DEVICE_ID; }
 discovery-auth-group	{ return DISCOVERY_AUTH_GROUP; }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509151337.t8FDbmAs097462>