From a0b60af3d601846fe6f647d77811716a41c43d3b Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Jun 2011 22:31:22 +0200 Subject: [PATCH 1/2] dom0: Do not use transactions to access xenstore Unfortunately they aren't reliable... at least for writing ~10 keys at once from python. --- dom0/qvm-core/qubes.py | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/dom0/qvm-core/qubes.py b/dom0/qvm-core/qubes.py index 36fdafaf..03605bd1 100755 --- a/dom0/qvm-core/qubes.py +++ b/dom0/qvm-core/qubes.py @@ -502,9 +502,7 @@ class QubesVm(object): uuid = self.get_uuid() - xs_trans = xs.transaction_start() - start_time = xs.read(xs_trans, "/vm/%s/start_time" % str(uuid)) - xs.transaction_end() + start_time = xs.read('', "/vm/%s/start_time" % str(uuid)) return start_time @@ -585,43 +583,41 @@ class QubesVm(object): domain_path = xs.get_domain_path(xid) # Set Xen Store entires with VM networking info: - xs_trans = xs.transaction_start() - xs.write(xs_trans, "{0}/qubes_vm_type".format(domain_path), + xs.write('', "{0}/qubes_vm_type".format(domain_path), self.type) - xs.write(xs_trans, "{0}/qubes_vm_updateable".format(domain_path), + xs.write('', "{0}/qubes_vm_updateable".format(domain_path), str(self.updateable)) if self.is_netvm(): - xs.write(xs_trans, + xs.write('', "{0}/qubes_netvm_gateway".format(domain_path), self.gateway) - xs.write(xs_trans, + xs.write('', "{0}/qubes_netvm_secondary_dns".format(domain_path), self.secondary_dns) - xs.write(xs_trans, + xs.write('', "{0}/qubes_netvm_netmask".format(domain_path), self.netmask) - xs.write(xs_trans, + xs.write('', "{0}/qubes_netvm_network".format(domain_path), self.network) if self.netvm_vm is not None: - xs.write(xs_trans, "{0}/qubes_ip".format(domain_path), self.ip) - xs.write(xs_trans, "{0}/qubes_netmask".format(domain_path), + xs.write('', "{0}/qubes_ip".format(domain_path), self.ip) + xs.write('', "{0}/qubes_netmask".format(domain_path), self.netvm_vm.netmask) - xs.write(xs_trans, "{0}/qubes_gateway".format(domain_path), + xs.write('', "{0}/qubes_gateway".format(domain_path), self.netvm_vm.gateway) - xs.write(xs_trans, + xs.write('', "{0}/qubes_secondary_dns".format(domain_path), self.netvm_vm.secondary_dns) # Fix permissions - xs.set_permissions(xs_trans, '{0}/device'.format(domain_path), + xs.set_permissions('', '{0}/device'.format(domain_path), [{ 'dom': xid }]) - xs.set_permissions(xs_trans, '{0}/memory'.format(domain_path), + xs.set_permissions('', '{0}/memory'.format(domain_path), [{ 'dom': xid }]) - xs.transaction_end(xs_trans) def get_rootdev(self, source_template=None): if self.template_vm: @@ -1395,11 +1391,9 @@ class QubesProxyVm(QubesNetVm): return super(QubesProxyVm, self).create_xenstore_entries(xid) - xs_trans = xs.start_transaction() - xs.write(xs_trans, "/local/domain/{0}/qubes_iptables_error".format(xid), '') - xs.set_permissions(xs_trans, "/local/domain/{0}/qubes_iptables_error".format(xid), + xs.write('', "/local/domain/{0}/qubes_iptables_error".format(xid), '') + xs.set_permissions('', "/local/domain/{0}/qubes_iptables_error".format(xid), [{ 'dom': xid, 'write': True }]) - xs.end_transaction(xs_trans) self.write_iptables_xenstore_entry() def write_netvm_domid_entry(self, xid = -1): From dbafadc159d0b95b22b15645524cbff8eeb4a4b4 Mon Sep 17 00:00:00 2001 From: Marek Marczykowski Date: Sat, 25 Jun 2011 23:08:52 +0200 Subject: [PATCH 2/2] version 1.6.3-dom0 --- version_dom0 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version_dom0 b/version_dom0 index fdd3be6d..266146b8 100644 --- a/version_dom0 +++ b/version_dom0 @@ -1 +1 @@ -1.6.2 +1.6.3