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

[Xen-changelog] Fix the startup behaviour when the tdb file exists. We were attempting to



# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID ac3ceb2d37d17a4c64b6fcccf5d0c1ab5507c557
# Parent  ab300e9fe02b6a48cfd7fda9c50d878e11160297
Fix the startup behaviour when the tdb file exists.  We were attempting to
remove and recreate the /local directory, but the manual_node call only works
if the tdb is empty -- we must use create_node, otherwise the store is
corrupted.

It's not clear to me that the other manual_node calls are safe, but I have only
made this smaller change for the sake of stability.  These other calls should
be reviewed.

Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx>

diff -r ab300e9fe02b -r ac3ceb2d37d1 tools/xenstore/xenstored_core.c
--- a/tools/xenstore/xenstored_core.c   Wed Dec  7 15:41:41 2005
+++ b/tools/xenstore/xenstored_core.c   Wed Dec  7 15:44:38 2005
@@ -823,7 +823,7 @@
        node->num_perms = parent->num_perms;
        node->perms = talloc_memdup(node, parent->perms,
                                    node->num_perms * sizeof(node->perms[0]));
-       if (conn->id)
+       if (conn && conn->id)
                node->perms[0].id = conn->id;
 
        /* No children, no data */
@@ -1441,8 +1441,10 @@
                   balloon driver will pick up stale entries.  In the case of
                   the balloon driver, this can be fatal.
                */
+               char *tlocal = talloc_strdup(talloc_autofree_context(),
+                                            "/local");
                internal_rm("/local");
-               manual_node("/", "local");
+               create_node(NULL, tlocal, NULL, 0);
        }
        else {
                tdb_ctx = tdb_open(tdbname, 7919, TDB_FLAGS, O_RDWR|O_CREAT,

_______________________________________________
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®.