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.
This commit is contained in:
Alexander Motin
2020-07-28 22:32:50 +00:00
parent 3008333d44
commit 3b11655c7e
+24
View File
@@ -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) {