|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] xenstore: fix add_change_node()
commit dc6d67804fbf043e53f8f7805c7a39b279a47f5a
Author: Juergen Gross <jgross@xxxxxxxx>
AuthorDate: Thu Oct 27 11:55:52 2016 +0200
Commit: Wei Liu <wei.liu2@xxxxxxxxxx>
CommitDate: Mon Oct 31 10:18:02 2016 +0000
xenstore: fix add_change_node()
add_change_node() in xenstored is used to add a modified node to the
list of changed nodes of one transaction. It is being called with the
recurse parameter set to true when removing a node in order to get
watches for children of the node fired at transaction end, too.
If, however, the node to be deleted had been modified in the same
transaction the recurse parameter of add_change_node() is lost as
an entry already in the list of the changed nodes won't be entered
again.
Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Release-acked-by: Wei Liu <wei.liu2@xxxxxxxxxx>
---
tools/xenstore/xenstored_transaction.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/xenstore/xenstored_transaction.c
b/tools/xenstore/xenstored_transaction.c
index 34720fa..84cb0bf 100644
--- a/tools/xenstore/xenstored_transaction.c
+++ b/tools/xenstore/xenstored_transaction.c
@@ -102,9 +102,13 @@ void add_change_node(struct transaction *trans, const char
*node, bool recurse)
return;
}
- list_for_each_entry(i, &trans->changes, list)
- if (streq(i->node, node))
+ list_for_each_entry(i, &trans->changes, list) {
+ if (streq(i->node, node)) {
+ if (recurse)
+ i->recurse = recurse;
return;
+ }
+ }
i = talloc(trans, struct changed_node);
i->node = talloc_strdup(i, node);
--
generated by git-patchbot for /home/xen/git/xen.git#master
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
https://lists.xenproject.org/xen-changelog
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |