/* storage driver metadata are not copied */
def->drv = NULL;
+ /* flag to avoid seclabel remember is not copied */
+ def->seclabelSkipRemember = false;
+
def->path = g_strdup(src->path);
def->fdgroup = g_strdup(src->fdgroup);
def->volume = g_strdup(src->volume);
bool thresholdEventWithIndex;
virStorageSourceFDTuple *fdtuple;
+
+ /* Setting 'seclabelSkipRemember' to true will cause the security driver to
+ * not remember the security label even if it otherwise were to be
+ * remembered. This is needed in cases such as incoming migration for
+ * shared images where the existing security label may no longer be the
+ * correct. The security driver otherwise doesn't have enough information
+ * to do this decision.
+ */
+ bool seclabelSkipRemember;
};
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virStorageSource, virObjectUnref);
*/
remember = isChainTop && !src->readonly && !src->shared;
+ if (src->seclabelSkipRemember)
+ remember = false;
+
return virSecurityDACSetOwnership(mgr, src, NULL, user, group, remember);
}
ret = virSecuritySELinuxFSetFilecon(src->fdtuple->fds[0], use_label);
} else {
+ if (src->seclabelSkipRemember)
+ remember = false;
+
ret = virSecuritySELinuxSetFilecon(mgr, path, use_label, remember);
}