|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 8/9] libxl: soft reset support
Wei Liu <wei.liu2@xxxxxxxxxx> writes:
> (I've skipped the internal implementation since I don't know what's
> required to fulfil soft reset.)
>
> On Wed, Dec 03, 2014 at 06:16:20PM +0100, Vitaly Kuznetsov wrote:
> [...]
>> + libxl__domain_create_state *dcs);
>>
>> /* Each time the dm needs to be saved, we must call suspend and then save */
>> _hidden int libxl__domain_suspend_device_model(libxl__gc *gc,
>> diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
>> index 53611dc..eb833f0 100644
>> --- a/tools/libxl/xl_cmdimpl.c
>> +++ b/tools/libxl/xl_cmdimpl.c
>> @@ -2043,7 +2043,8 @@ static void reload_domain_config(uint32_t domid,
>> }
>>
>> /* Returns 1 if domain should be restarted,
>> - * 2 if domain should be renamed then restarted, or 0
>> + * 2 if domain should be renamed then restarted,
>> + * 3 if domain performed soft reset, or 0
>> * Can update r_domid if domain is destroyed etc */
>> static int handle_domain_death(uint32_t *r_domid,
>> libxl_event *event,
>> @@ -2069,6 +2070,9 @@ static int handle_domain_death(uint32_t *r_domid,
>> case LIBXL_SHUTDOWN_REASON_WATCHDOG:
>> action = d_config->on_watchdog;
>> break;
>> + case LIBXL_SHUTDOWN_REASON_SOFT_RESET:
>> + LOG("Domain performed soft reset.");
>> + return 3;
>
> Would it be useful to provide "on_soft_reset" option in xl? Will the
> admin be interested in performing some other action when domain does
> soft reset? Say, for security reason admin want to prohibit domain from
> soft resetting itself.
>
Makes sense, let's add it.
>> default:
>> LOG("Unknown shutdown reason code %d. Destroying domain.",
>> event->u.domain_shutdown.shutdown_reason);
>> @@ -2285,6 +2289,7 @@ static void
>> evdisable_disk_ejects(libxl_evgen_disk_eject **diskws,
>> static uint32_t create_domain(struct domain_create *dom_info)
>> {
>> uint32_t domid = INVALID_DOMID;
>> + uint32_t domid_old = INVALID_DOMID;
>>
>> libxl_domain_config d_config;
>>
>> @@ -2510,7 +2515,18 @@ start:
>> * restore/migrate-receive it again.
>> */
>> restoring = 0;
>> - }else{
>> + } else if (domid_old != INVALID_DOMID) {
>> + /* Do soft reset */
>> + d_config.b_info.nodemap.size = 0;
>
> What's the reason for doing this?
>
> If you encounter problem with this it should probably be fixed in
> libxl.
Ah, sorry, I forgot about this hackaround (which was required since
194e7183 if I'm not mistaken). The root cause is that
reload_domain_config() was missing on soft_reset path and we were
hitting "Can run NUMA placement only if the domain does not have any
NUMA node affinity set already" clause.
I will fix this along with "on_soft_reset" implementation.
>
> Wei.
>
>> + ret = libxl_domain_soft_reset(ctx, &d_config,
>> + &domid, domid_old,
>> + 0, 0);
>> +
>> + if ( ret ) {
>> + goto error_out;
>> + }
>> + domid_old = INVALID_DOMID;
>> + } else {
>> ret = libxl_domain_create_new(ctx, &d_config, &domid,
>> 0, autoconnect_console_how);
>> }
>> @@ -2574,6 +2590,8 @@ start:
>> event->u.domain_shutdown.shutdown_reason,
>> event->u.domain_shutdown.shutdown_reason);
>> switch (handle_domain_death(&domid, event, &d_config)) {
>> + case 3:
>> + domid_old = domid;
>> case 2:
>> if (!preserve_domain(&domid, event, &d_config)) {
>> /* If we fail then exit leaving the old domain in
>> place. */
>> --
>> 1.9.3
>>
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@xxxxxxxxxxxxx
>> http://lists.xen.org/xen-devel
--
Vitaly
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |