Hi All.
My name is Naoki Takayama, work for FUJITSU.
I found following disk configuration problem.
When I specify ''file:yy.img,hde,w'' in domain config file as
below,
the vnc connection demands to input the password.
disk = [
''file:xx.img,ioemu:hda,w'',''file:yy.img,hde,w''
]
If I change the ''hde'' to ''hdf'', this problem
does not occur.
This problem is caused by xenstore_parse_domain_config function
in tools/ioemu/xenstore.c
in line 102: hd_index variable is assigned value 4.
in line 123: bs_table array is accsessed by the index(4).
(the vncpasswd variable is overwritten)
Here, bs_table is defined as "BlockDriverState *bs_table[MAX_DISKS]"
in vl.c
and MAX_DISKS is defined as value 4 in vl.h
Does anyone have a suggetion how to fix this problem?
tools/ioemu/xenstore.c
55 void xenstore_parse_domain_config(int domid)
56 {
57 char **e = NULL;
58 char *buf = NULL, *path;
59 char *bpath = NULL, *dev = NULL, *params = NULL, *type = NULL;
60 int i;
61 unsigned int len, num, hd_index;
[snip]
102 hd_index = dev[2] - ''a''; <==
assign value 4.
103 if (hd_index > MAX_DISKS)
104 continue;
105 /* read the type of the device */
106 if (pasprintf(&buf, "%s/device/vbd/%s/device-type",
path, e[i]) == -1)
107 continue;
108 free(type);
109 type = xs_read(xsh, XBT_NULL, buf, &len);
110 /* read params to get the patch of the image -- read it last
111 * so that we have its path in buf when setting up the
112 * watch */
113 if (pasprintf(&buf, "%s/params", bpath) == -1)
114 continue;
115 free(params);
116 params = xs_read(xsh, XBT_NULL, buf, &len);
117 if (params == NULL)
118 continue;
119 if (params[0]) {
120 hd_filename[hd_index] = params; /* strdup() */
121 params = NULL; /* don''t free params on
re-use */
122 }
123 bs_table[hd_index] = bdrv_new(dev); <== overwrite occur
[snip]
--
Naoki Takayama
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Hi, I sent the patch that corrected this problem. Please refer to following URL. http://lists.xensource.com/archives/html/xen-devel/2006-09/msg00383.html --- Begi.net (http://Begi.net) Director of Engineering Department Hiromichi Ito (ito@Begi.net) On 2006/11/14, at 17:00, Naoki Takayama wrote:> Hi All. > > My name is Naoki Takayama, work for FUJITSU. > > I found following disk configuration problem. > When I specify ''file:yy.img,hde,w'' in domain config file as below, > the vnc connection demands to input the password. > > disk = [ ''file:xx.img,ioemu:hda,w'',''file:yy.img,hde,w'' ] > > If I change the ''hde'' to ''hdf'', this problem does not occur. > > > This problem is caused by xenstore_parse_domain_config function > in tools/ioemu/xenstore.c > > in line 102: hd_index variable is assigned value 4. > > in line 123: bs_table array is accsessed by the index(4). > (the vncpasswd variable is overwritten) > > Here, bs_table is defined as "BlockDriverState *bs_table > [MAX_DISKS]" in vl.c > and MAX_DISKS is defined as value 4 in vl.h > > Does anyone have a suggetion how to fix this problem? > > > tools/ioemu/xenstore.c > > 55 void xenstore_parse_domain_config(int domid) > 56 { > 57 char **e = NULL; > 58 char *buf = NULL, *path; > 59 char *bpath = NULL, *dev = NULL, *params = NULL, *type = NULL; > 60 int i; > 61 unsigned int len, num, hd_index; > [snip] > 102 hd_index = dev[2] - ''a''; <== assign value 4. > 103 if (hd_index > MAX_DISKS) > 104 continue; > 105 /* read the type of the device */ > 106 if (pasprintf(&buf, "%s/device/vbd/%s/device-type", > path, e[i]) == -1) > 107 continue; > 108 free(type); > 109 type = xs_read(xsh, XBT_NULL, buf, &len); > 110 /* read params to get the patch of the image -- read it > last > 111 * so that we have its path in buf when setting up the > 112 * watch */ > 113 if (pasprintf(&buf, "%s/params", bpath) == -1) > 114 continue; > 115 free(params); > 116 params = xs_read(xsh, XBT_NULL, buf, &len); > 117 if (params == NULL) > 118 continue; > 119 if (params[0]) { > 120 hd_filename[hd_index] = params; /* strdup() */ > 121 params = NULL; /* don''t free params on > re-use */ > 122 } > 123 bs_table[hd_index] = bdrv_new(dev); <== overwrite occur > [snip] > > -- > Naoki Takayama > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Hiromichi Itou wrote :>Hi, > >I sent the patch that corrected this problem. >Please refer to following URL. > >http://lists.xensource.com/archives/html/xen-devel/2006-09/msg00383.htmlThank you for your reply. I confirmed that the problem was fixed by your patch. (cs:12018) I hope your patch would be applied to xen-unstable tree. Thank you. -- Naoki Takayama _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
On Tue, Nov 14, 2006 at 07:46:07PM +0900, Hiromichi Itou wrote:> Hi, > > I sent the patch that corrected this problem. > Please refer to following URL. > > http://lists.xensource.com/archives/html/xen-devel/2006-09/msg00383.htmlApplied, thank you. Ewan. _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel