mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
Block pull request
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJTIbe5AAoJEJykq7OBq3PI0/AH/jglW+rsN+0/kAr5wIY4BQUn qvzYHBP9xvPtd0cGubTt2N3bZPlb/zTVFe/OOpJmaENrVJY/rPZNF3nKqdrr5uOP WrBbQZi2hkOG82uuiN2BiGh324zOMBNSh3d2WaHmJpxjabZcjN28UOkx5WGlBImu VAHY/HaImOLMkS120GxbMsFziXRLM66o9XWEbA/l0EBOISM6KloX6mtZd7y6MGzA a35JbUueyRo+hvndFEHY2P2XvUc5ZycOYF2yOz59X5QrqhmP6I+Ym4ohtyO2Olga jpoAO7jDpV/7PJwo1xC8j+1jhl3VGdX2L7iWgDUTJ0jY8mV3hQWhy58fOEwYY+k= =0llk -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging Block pull request # gpg: Signature made Thu 13 Mar 2014 13:50:49 GMT using RSA key ID 81AB73C8 # gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" # gpg: aka "Stefan Hajnoczi <stefanha@gmail.com>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 8695 A8BF D3F9 7CDA AC35 775A 9CA4 ABB3 81AB 73C8 * remotes/stefanha/tags/block-pull-request: (24 commits) block/raw-win32: bdrv_parse_filename() for hdev block/raw-posix: Strip protocol prefix on creation block/raw-posix: bdrv_parse_filename() for cdrom block/raw-posix: bdrv_parse_filename() for floppy block/raw-posix: bdrv_parse_filename() for hdev qemu-io: Fix warnings from static code analysis block: Unlink temporary file qcow2: Don't write with BDRV_O_INCOMING qcow2: Keep option in qcow2_invalidate_cache() qmp: add query-iothreads command iothread: stash thread ID away dataplane: replace internal thread with IOThread iothread: add "iothread" qdev property type qdev: make get_pointer() handle temporary strings iothread: add I/O thread object aio: add aio_context_acquire() and aio_context_release() rfifolock: add recursive FIFO lock object: add object_get_canonical_path_component() block: Rewrite the snapshot authorization mechanism for block filters. iotests: Test corruption during COW request ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
57fac92c2d
35 changed files with 943 additions and 138 deletions
54
qom/object.c
54
qom/object.c
|
@ -1102,39 +1102,49 @@ void object_property_add_link(Object *obj, const char *name,
|
|||
g_free(full_type);
|
||||
}
|
||||
|
||||
gchar *object_get_canonical_path_component(Object *obj)
|
||||
{
|
||||
ObjectProperty *prop = NULL;
|
||||
|
||||
g_assert(obj);
|
||||
g_assert(obj->parent != NULL);
|
||||
|
||||
QTAILQ_FOREACH(prop, &obj->parent->properties, node) {
|
||||
if (!object_property_is_child(prop)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (prop->opaque == obj) {
|
||||
return g_strdup(prop->name);
|
||||
}
|
||||
}
|
||||
|
||||
/* obj had a parent but was not a child, should never happen */
|
||||
g_assert_not_reached();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
gchar *object_get_canonical_path(Object *obj)
|
||||
{
|
||||
Object *root = object_get_root();
|
||||
char *newpath = NULL, *path = NULL;
|
||||
char *newpath, *path = NULL;
|
||||
|
||||
while (obj != root) {
|
||||
ObjectProperty *prop = NULL;
|
||||
char *component = object_get_canonical_path_component(obj);
|
||||
|
||||
g_assert(obj->parent != NULL);
|
||||
|
||||
QTAILQ_FOREACH(prop, &obj->parent->properties, node) {
|
||||
if (!object_property_is_child(prop)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (prop->opaque == obj) {
|
||||
if (path) {
|
||||
newpath = g_strdup_printf("%s/%s", prop->name, path);
|
||||
g_free(path);
|
||||
path = newpath;
|
||||
} else {
|
||||
path = g_strdup(prop->name);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (path) {
|
||||
newpath = g_strdup_printf("%s/%s", component, path);
|
||||
g_free(component);
|
||||
g_free(path);
|
||||
path = newpath;
|
||||
} else {
|
||||
path = component;
|
||||
}
|
||||
|
||||
g_assert(prop != NULL);
|
||||
|
||||
obj = obj->parent;
|
||||
}
|
||||
|
||||
newpath = g_strdup_printf("/%s", path);
|
||||
newpath = g_strdup_printf("/%s", path ? path : "");
|
||||
g_free(path);
|
||||
|
||||
return newpath;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue