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
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=363656

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) {