[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1 of 3 v2] libxl: Look for bootloader in libexec path
On Tue, 2012-05-15 at 11:33 +0100, George Dunlap wrote: > If the full path for a bootloader (such as pygrub or xenpvnetboot) is not > given, check for it first in the libexec path before falling back to the > PATH variable. > > v2: > - Check for the libexec path, and if the bootloader isn't there, fall back to > the explicitly passed value. If the full path isn't specified, this will > case execvp to search using the path given in the PATH variable. > > Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxxxxx> > > diff -r 84ae90427c54 -r 662e2f6be283 tools/libxl/libxl_bootloader.c > --- a/tools/libxl/libxl_bootloader.c Fri May 11 17:46:16 2012 +0100 > +++ b/tools/libxl/libxl_bootloader.c Tue May 15 11:20:53 2012 +0100 > @@ -333,6 +333,7 @@ int libxl_run_bootloader(libxl_ctx *ctx, > > char tempdir_template[] = "/var/run/libxl/bl.XXXXXX"; > char *tempdir; > + const char *bootloader = NULL; > > char *dom_console_xs_path; > char dom_console_slave_tty_path[PATH_MAX]; > @@ -397,6 +398,30 @@ int libxl_run_bootloader(libxl_ctx *ctx, > goto out_close; > } > > + LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Config bootloader path: %s", > + info->u.pv.bootloader); > + > + bootloader = libxl__abs_path(gc, info->u.pv.bootloader, > + libxl__libexec_path()); > + if ( bootloader == NULL ) { Since you seem to be respinning anyway... This can't actually happen any more, since 25181:26f72d923cb9 (libxl: Crash (more sensibly) on malloc failure) > + rc = ERROR_NOMEM; > + goto out_close; > + } else { > + /* Check to see if the file exists in this location; if not, fall > back > + * to checking the path */ > + struct stat st; > + > + LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "Resulting bootloader path: %s", > + bootloader); > + > + if ( lstat(bootloader, &st) ) > + { > + LIBXL__LOG(ctx, LIBXL__LOG_DEBUG, "%s doesn't exist, will search > $PATH", > + bootloader); > + bootloader = info->u.pv.bootloader; > + } > + } > + > /* > * We need to present the bootloader's tty as a pty slave that xenconsole > * can access. Since the bootloader itself needs a pty slave, > @@ -417,7 +442,7 @@ int libxl_run_bootloader(libxl_ctx *ctx, > dom_console_xs_path = libxl__sprintf(gc, "%s/console/tty", > libxl__xs_get_dompath(gc, domid)); > libxl__xs_write(gc, XBT_NULL, dom_console_xs_path, "%s", > dom_console_slave_tty_path); > > - pid = fork_exec_bootloader(&bootloader_fd, info->u.pv.bootloader, args); > + pid = fork_exec_bootloader(&bootloader_fd, bootloader, args); > if (pid < 0) { > goto out_close; > } > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |