[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] blktap: fix blktapctrl abort



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1264158045 0
# Node ID e1d61c5a008d5127acd864d7eff1cae472f7fe01
# Parent  9c6ba538ce75f73c40208aa445eeee38dcc453d8
blktap: fix blktapctrl abort

On rebooting a hvm, the blktapctrl daemon has died.

gdb shows the following call trace:
(gdb) where
#0  0x00000039d1830155 in raise () from /lib64/libc.so.6
#1  0x00000039d1831bf0 in abort () from /lib64/libc.so.6
#2  0x00000039d186a38b in __libc_message () from /lib64/libc.so.6
#3  0x00000039d1871634 in _int_free () from /lib64/libc.so.6
#4  0x00000039d1874c5c in free () from /lib64/libc.so.6
#5  0x0000003320a01bdd in ueblktap_probe (h=3D0x6073b0,=20
    w=<value optimized out>, bepath_im=<value optimized out>) at
    xenbus.c:270
#6  0x0000003320a020e0 in xs_fire_next_watch (h=3D0x6073b0) at
xs_api.c:355
#7  0x0000000000401785 in main (argc=3D<value optimized out>,
    argv=<value optimized out>) at blktapctrl.c:907

There is a case that "/local/domain/0/backend/tap/<dom_id>" exists but
"/local/domain/<dom_id>/vm" is not in the xenstore.

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>
---
 tools/blktap/lib/xenbus.c |    6 ++++++
 1 files changed, 6 insertions(+)

diff -r 9c6ba538ce75 -r e1d61c5a008d tools/blktap/lib/xenbus.c
--- a/tools/blktap/lib/xenbus.c Fri Jan 22 10:59:51 2010 +0000
+++ b/tools/blktap/lib/xenbus.c Fri Jan 22 11:00:45 2010 +0000
@@ -232,8 +232,11 @@ static int check_sharing(struct xs_handl
                        ret = -1;
                        break;
                }
+               cur_dom_uuid = NULL;
                xs_gather(h, path, "vm", NULL, &cur_dom_uuid, NULL);
                free(path);
+               if (!cur_dom_uuid)
+                       continue;
 
                if (!strcmp(cur_dom_uuid, dom_uuid)) {
                        free(cur_dom_uuid);
@@ -256,8 +259,11 @@ static int check_sharing(struct xs_handl
                                ret = -1;
                                break;
                        }
+                       params = NULL;
                        xs_gather(h, path, "params", NULL, &params, NULL);
                        free(path);
+                       if (!params)
+                               continue;
 
                        image_path[1] = get_image_path(params);
                        if (!strcmp(image_path[0], image_path[1])) {

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.