svn commit: r363656 - head/usr.sbin/ctld

Alexander Motin mav at FreeBSD.org
Tue Jul 28 22:32:50 UTC 2020


Author: mav
Date: Tue Jul 28 22:32:50 2020
New Revision: 363656
URL: https://svnweb.freebsd.org/changeset/base/363656

Log:
  When modifying LUN pass "special" options too.
  
  Before switching to nvlists CTL merged previous and new options, so
  any options not passed just kept previous value.  Now CTL completely
  replaces them, so we must pass everything still relevant.
  
  MFC after:	1 week
  Sponsored by:	iXsystems, Inc.

Modified:
  head/usr.sbin/ctld/kernel.c

Modified: head/usr.sbin/ctld/kernel.c
==============================================================================
--- head/usr.sbin/ctld/kernel.c	Tue Jul 28 20:06:16 2020	(r363655)
+++ head/usr.sbin/ctld/kernel.c	Tue Jul 28 22:32:50 2020	(r363656)
@@ -777,6 +777,30 @@ kernel_lun_modify(struct lun *lun)
 	req.reqdata.modify.lun_id = lun->l_ctl_lun;
 	req.reqdata.modify.lun_size_bytes = lun->l_size;
 
+	if (lun->l_path != NULL) {
+		o = option_find(&lun->l_options, "file");
+		if (o != NULL) {
+			option_set(o, lun->l_path);
+		} else {
+			o = option_new(&lun->l_options, "file", lun->l_path);
+			assert(o != NULL);
+		}
+	}
+
+	o = option_find(&lun->l_options, "ctld_name");
+	if (o != NULL) {
+		option_set(o, lun->l_name);
+	} else {
+		o = option_new(&lun->l_options, "ctld_name", lun->l_name);
+		assert(o != NULL);
+	}
+
+	o = option_find(&lun->l_options, "scsiname");
+	if (o == NULL && lun->l_scsiname != NULL) {
+		o = option_new(&lun->l_options, "scsiname", lun->l_scsiname);
+		assert(o != NULL);
+	}
+
 	if (!TAILQ_EMPTY(&lun->l_options)) {
 		req.args_nvl = nvlist_create(0);
 		if (req.args_nvl == NULL) {


More information about the svn-src-head mailing list