|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Using "xl create" without domain config file
[...]
>>> - if (!S_ISREG(stab.st_mode)) {
>>> - LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "%s is not a plain file",
>>> filename);
>>> + if (S_ISDIR(stab.st_mode)) {
>>> + LIBXL__LOG_ERRNO(ctx, LIBXL__LOG_ERROR, "%s is a directory",
>>> filename);
>>
>> This is not correct. If, for example, /dev/tty is specified, it will
>> go wrong.
>>
>> The reason for the restriction to plain files is that those are the
>> only thing on which stat works to provide the size. If we are to
>> support other objects, we need to change the reading algorithm.
>
> Another alternative would be to special-case the string "/dev/null"
> (in xl, not libxl) and not read a config file at all in that case.
This patch treats /dev/null as a special case.
# HG changeset patch
# Parent 435493696053a079ec17d6e1a63e5f2be3a2c9d0
xl: Allow use of /dev/null with xl create to enable command-line definition
xm allows specifying /dev/null as the domain configuration argument to its
create option; add same functionality to xl. xl treats the configuration
argument /dev/null as a special case. This allows specifying an entire
domain configuration on the command line.
Signed-off-by: W. Michael Petullo <mike@xxxxxxxx>
diff -r 435493696053 tools/libxl/xl_cmdimpl.c
--- a/tools/libxl/xl_cmdimpl.c Fri May 25 08:18:47 2012 +0100
+++ b/tools/libxl/xl_cmdimpl.c Thu Jun 07 22:40:58 2012 -0500
@@ -1454,10 +1454,13 @@ static int create_domain(struct domain_c
if (config_file) {
free(config_data); config_data = 0;
- ret = libxl_read_file_contents(&ctx, config_file,
- &config_data, &config_len);
- if (ret) { fprintf(stderr, "Failed to read config file: %s: %s\n",
- config_file, strerror(errno)); return ERROR_FAIL; }
+ // /dev/null represents special case (read config. from command line)
+ if (strcmp(config_file, "/dev/null")) {
+ ret = libxl_read_file_contents(&ctx, config_file,
+ &config_data, &config_len);
+ if (ret) { fprintf(stderr, "Failed to read config file: %s: %s\n",
+ config_file, strerror(errno)); return
ERROR_FAIL; }
+ }
if (!restore_file && extra_config && strlen(extra_config)) {
if (config_len > INT_MAX - (strlen(extra_config) + 2 + 1)) {
fprintf(stderr, "Failed to attach extra configration\n");
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |