diff options
Diffstat (limited to 'system/xen/xsa/xsa206-4.8-0006-oxenstored-add-transaction-info-relevant-to-history-.patch')
-rw-r--r-- | system/xen/xsa/xsa206-4.8-0006-oxenstored-add-transaction-info-relevant-to-history-.patch | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/system/xen/xsa/xsa206-4.8-0006-oxenstored-add-transaction-info-relevant-to-history-.patch b/system/xen/xsa/xsa206-4.8-0006-oxenstored-add-transaction-info-relevant-to-history-.patch deleted file mode 100644 index e9f23d62c1..0000000000 --- a/system/xen/xsa/xsa206-4.8-0006-oxenstored-add-transaction-info-relevant-to-history-.patch +++ /dev/null @@ -1,88 +0,0 @@ -From eedcaba31d907b889f571113e7d9739e5ce1e9e5 Mon Sep 17 00:00:00 2001 -From: Jonathan Davies <jonathan.davies@citrix.com> -Date: Tue, 14 Mar 2017 12:17:38 +0000 -Subject: [PATCH 06/15] oxenstored: add transaction info relevant to - history-tracking - -Specifically: - * retain the original store (not just the root) in full transactions - * store commit count at the time of the start of the transaction - -Reported-by: Juergen Gross <jgross@suse.com> -Signed-off-by: Jonathan Davies <jonathan.davies@citrix.com> -Reviewed-by: Thomas Sanders <thomas.sanders@citrix.com> -Reviewed-by: Ian Jackson <ian.jackson@eu.citrix.com> -Reviewed-by: Christian Lindig <christian.lindig@citrix.com> ---- - tools/ocaml/xenstored/process.ml | 2 +- - tools/ocaml/xenstored/transaction.ml | 12 ++++++++---- - 2 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/tools/ocaml/xenstored/process.ml b/tools/ocaml/xenstored/process.ml -index 7b60376..5f92044 100644 ---- a/tools/ocaml/xenstored/process.ml -+++ b/tools/ocaml/xenstored/process.ml -@@ -301,7 +301,7 @@ let transaction_replay c t doms cons = - | Transaction.No -> - error "attempted to replay a non-full transaction"; - false -- | Transaction.Full(id, oldroot, cstore) -> -+ | Transaction.Full(id, oldstore, cstore) -> - let tid = Connection.start_transaction c cstore in - let new_t = Transaction.make tid cstore in - let con = sprintf "r(%d):%s" id (Connection.get_domstr c) in -diff --git a/tools/ocaml/xenstored/transaction.ml b/tools/ocaml/xenstored/transaction.ml -index 6f758ff..b1791b3 100644 ---- a/tools/ocaml/xenstored/transaction.ml -+++ b/tools/ocaml/xenstored/transaction.ml -@@ -73,12 +73,13 @@ let can_coalesce oldroot currentroot path = - - type ty = No | Full of ( - int * (* Transaction id *) -- Store.Node.t * (* Original root *) -+ Store.t * (* Original store *) - Store.t (* A pointer to the canonical store: its root changes on each transaction-commit *) - ) - - type t = { - ty: ty; -+ start_count: int64; - store: Store.t; (* This is the store that we change in write operations. *) - quota: Quota.t; - mutable paths: (Xenbus.Xb.Op.operation * Store.Path.t) list; -@@ -87,10 +88,13 @@ type t = { - mutable write_lowpath: Store.Path.t option; - } - -+let counter = ref 0L -+ - let make id store = -- let ty = if id = none then No else Full(id, Store.get_root store, store) in -+ let ty = if id = none then No else Full(id, Store.copy store, store) in - { - ty = ty; -+ start_count = !counter; - store = if id = none then store else Store.copy store; - quota = Quota.copy store.Store.quota; - paths = []; -@@ -161,7 +165,7 @@ let commit ~con t = - let has_commited = - match t.ty with - | No -> true -- | Full (id, oldroot, cstore) -> (* "cstore" meaning current canonical store *) -+ | Full (id, oldstore, cstore) -> (* "cstore" meaning current canonical store *) - let commit_partial oldroot cstore store = - (* get the lowest path of the query and verify that it hasn't - been modified by others transactions. *) -@@ -204,7 +208,7 @@ let commit ~con t = - if !test_eagain && Random.int 3 = 0 then - false - else -- try_commit oldroot cstore t.store -+ try_commit (Store.get_root oldstore) cstore t.store - in - if has_commited && has_write_ops then - Disk.write t.store; --- -2.1.4 - |