Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:Update
xen.17119
bdrv_open2_flags_2.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bdrv_open2_flags_2.patch of Package xen.17119
Index: xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c =================================================================== --- xen-4.5.0-testing.orig/tools/qemu-xen-traditional-dir-remote/xenstore.c +++ xen-4.5.0-testing/tools/qemu-xen-traditional-dir-remote/xenstore.c @@ -134,7 +134,8 @@ static void insert_media(void *opaque) else format = &bdrv_raw; - bdrv_open2(bs, media_filename[i], 0, format); + /* Temporary BDRV_O_RDWR */ + bdrv_open2(bs, media_filename[i], BDRV_O_RDWR, format); #ifdef CONFIG_STUBDOM { char *buf, *backend, *params_path, *params; @@ -509,7 +510,8 @@ void xenstore_parse_domain_config(int hv } for (i = 0; i < num; i++) { - format = NULL; /* don't know what the format is yet */ + flags = 0; + format = NULL; /* don't know what the format is yet */ /* read the backend path */ xenstore_get_backend_path(&bpath, "vbd", danger_path, hvm_domid, e_danger[i]); if (bpath == NULL) @@ -595,6 +597,17 @@ void xenstore_parse_domain_config(int hv format = &bdrv_raw; } + /* read the mode of the device */ + if (pasprintf(&buf, "%s/mode", bpath) == -1) + continue; + free(mode); + mode = xs_read(xsh, XBT_NULL, buf, &len); + + if (!strcmp(mode, "r") || !strcmp(mode, "ro")) + flags |= BDRV_O_RDONLY; + if (!strcmp(mode, "w") || !strcmp(mode, "rw")) + flags |= BDRV_O_RDWR; + #if 0 /* Phantom VBDs are disabled because the use of paths * from guest-controlled areas in xenstore is unsafe. @@ -662,7 +675,7 @@ void xenstore_parse_domain_config(int hv #ifdef CONFIG_STUBDOM if (pasprintf(&danger_buf, "%s/device/vbd/%s", danger_path, e_danger[i]) == -1) continue; - if (bdrv_open2(bs, danger_buf, BDRV_O_CACHE_WB /* snapshot and write-back */, &bdrv_raw) == 0) { + if (bdrv_open2(bs, danger_buf, flags|BDRV_O_CACHE_WB /* snapshot and write-back */, &bdrv_raw) == 0) { if (pasprintf(&buf, "%s/params", bpath) == -1) continue; free(params);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor