|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V5 29/32] xl: use "libxl-json" format
On Tue, May 20, 2014 at 03:23:26PM +0100, Ian Campbell wrote:
[...]
> > @@ -1787,13 +1770,10 @@ static int handle_domain_death(uint32_t *r_domid,
> > break;
> >
> > case LIBXL_ACTION_ON_SHUTDOWN_RESTART_RENAME:
> > - reload_domain_config(*r_domid, config_data, config_len);
> > restart = 2;
> > break;
> >
> > case LIBXL_ACTION_ON_SHUTDOWN_RESTART:
> > - reload_domain_config(*r_domid, config_data, config_len);
>
> Why is it not equally necessary to reload the JSON config at this point
> if it exists?
>
Because domain configuration is loaded in the caller of
handle_domain_death now.
> (commit message should explain this, and in general anywhere that the
> need to reload/refresh the config differs, because my expectation was of
> a more straight forward substitution of reload_domain_config for the new
> function).
>
No problem.
> > -
> > restart = 1;
> > /* fall-through */
> > case LIBXL_ACTION_ON_SHUTDOWN_DESTROY:
> [...]
> > - parse_config_data(config_source, config_data, config_len, &d_config);
> > + if (config_in_json) {
> > + char *config_c = config_data;
> > + if (config_c[config_len-1] != '\0') {
> > + config_c = xrealloc(config_c, config_len + 1);
> > + config_c[config_len] = '\0';
>
> I think this is somewhere that arranging via the protocol that things
> must be null terminated might make sense.
>
Sure, if I can manage to arrange saving extra "\0" at the end of stream.
> > + /* If we're doing migration, the domain name was appended with
> > + * "--incoming" a few lines above. So we need to remove that
> > + * suffix in the stored configuration.
>
> It's not possible to save this before we do that appending?
>
The save is done by libxl, when we create domain. At this point we are
still in xl.
> Or should we not be updating the domain config as we do the renaming at
> the end?
>
I agree that libxl_domain_rename is a better place to update stored
domain name.
> > + */
> > + if (migrate_fd >= 0) {
> > + libxl_domain_config d;
> > + int xlen = strlen("--incoming");
> > + int orig_len;
> > +
> > + ret = libxl_load_domain_configuration(ctx, domid, &d);
> > + if (ret) {
> > + perror("cannot load config data");
> > + ret = ERROR_FAIL;
> > + goto error_out;
> > + }
> > +
> > + orig_len = strlen(d.c_info.name);
> > + d.c_info.name = xrealloc(d.c_info.name, orig_len - xlen);
> > + d.c_info.name[orig_len - xlen] = 0;
>
> Since the new name is always shorter you could do this simply by
> sticking a \0 in the middle without needing to realloc.
Ack.
But this hunk will be gone if we make libxl_domain_rename capable of
storing new domain name.
>
> > @@ -3102,22 +3119,18 @@ static void list_domains_details(const
> > libxl_dominfo *info, int nb_domain)
> > s = yajl_gen_status_ok;
> >
> > for (i = 0; i < nb_domain; i++) {
> > + libxl_domain_config_init(&d_config);
> > /* no detailed info available on dom0 */
> > if (info[i].domid == 0)
> > continue;
> > - rc = libxl_userdata_retrieve(ctx, info[i].domid, "xl", &data,
> > &len);
> > + rc = libxl_load_domain_configuration(ctx, info[i].domid,
> > &d_config);
>
> If a domain was created with xl.old will we not now fail to list details
> of it here?
>
Don't you need to restart if you install new tool? Is this a valid
usecase?
Wei.
> Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |