Author: mav
Date: Mon Oct  5 09:22:31 2015
New Revision: 288760
URL: https://svnweb.freebsd.org/changeset/base/288760

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

Modified:
  stable/10/usr.sbin/ctld/ctl.conf.5
  stable/10/usr.sbin/ctld/ctld.c
  stable/10/usr.sbin/ctld/kernel.c
  stable/10/usr.sbin/ctld/parse.y
  stable/10/usr.sbin/ctld/token.l
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/usr.sbin/ctld/ctl.conf.5
==============================================================================
--- stable/10/usr.sbin/ctld/ctl.conf.5  Mon Oct  5 09:21:45 2015        
(r288759)
+++ stable/10/usr.sbin/ctld/ctl.conf.5  Mon Oct  5 09:22:31 2015        
(r288760)
@@ -28,7 +28,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 7, 2015
+.Dd September 15, 2015
 .Dt CTL.CONF 5
 .Os
 .Sh NAME
@@ -365,6 +365,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: stable/10/usr.sbin/ctld/ctld.c
==============================================================================
--- stable/10/usr.sbin/ctld/ctld.c      Mon Oct  5 09:21:45 2015        
(r288759)
+++ stable/10/usr.sbin/ctld/ctld.c      Mon Oct  5 09:22:31 2015        
(r288760)
@@ -1380,6 +1380,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: stable/10/usr.sbin/ctld/kernel.c
==============================================================================
--- stable/10/usr.sbin/ctld/kernel.c    Mon Oct  5 09:21:45 2015        
(r288759)
+++ stable/10/usr.sbin/ctld/kernel.c    Mon Oct  5 09:22:31 2015        
(r288760)
@@ -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: stable/10/usr.sbin/ctld/parse.y
==============================================================================
--- stable/10/usr.sbin/ctld/parse.y     Mon Oct  5 09:21:45 2015        
(r288759)
+++ stable/10/usr.sbin/ctld/parse.y     Mon Oct  5 09:22:31 2015        
(r288760)
@@ -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 OPENING_BRACKET OPTION
 %token PATH PIDFILE PORT PORTAL_GROUP REDIRECT SEMICOLON SERIAL SIZE STR
@@ -842,6 +842,8 @@ lun_entry:
        |
        lun_device_id
        |
+       lun_ctl_lun
+       |
        lun_option
        |
        lun_path
@@ -899,6 +901,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: stable/10/usr.sbin/ctld/token.l
==============================================================================
--- stable/10/usr.sbin/ctld/token.l     Mon Oct  5 09:21:45 2015        
(r288759)
+++ stable/10/usr.sbin/ctld/token.l     Mon Oct  5 09:22:31 2015        
(r288760)
@@ -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; }
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to