summaryrefslogtreecommitdiff
path: root/system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch
diff options
context:
space:
mode:
Diffstat (limited to 'system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch')
-rw-r--r--system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch79
1 files changed, 0 insertions, 79 deletions
diff --git a/system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch b/system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch
deleted file mode 100644
index 40102efceb..0000000000
--- a/system/xen/xsa/xsa206-4.8-0016-oxenstored-trim-history-in-the-frequent_ops-function.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 26b15d4eb7ac71fcab28a7fca664afa0549c135c Mon Sep 17 00:00:00 2001
-From: Thomas Sanders <thomas.sanders@citrix.com>
-Date: Tue, 28 Mar 2017 18:57:52 +0100
-Subject: [PATCH 16/15] oxenstored: trim history in the frequent_ops function
-
-We were trimming the history of commits only at the end of each
-transaction (regardless of how it ended).
-
-Therefore if non-transactional writes were being made but no
-transactions were being ended, the history would grow
-indefinitely. Now we trim the history at regular intervals.
-
-Signed-off-by: Thomas Sanders <thomas.sanders@citrix.com>
----
- tools/ocaml/xenstored/history.ml | 6 +++---
- tools/ocaml/xenstored/transaction.ml | 8 ++++++--
- tools/ocaml/xenstored/xenstored.ml | 1 +
- 3 files changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/tools/ocaml/xenstored/history.ml b/tools/ocaml/xenstored/history.ml
-index 4079588..f39565b 100644
---- a/tools/ocaml/xenstored/history.ml
-+++ b/tools/ocaml/xenstored/history.ml
-@@ -39,7 +39,8 @@ let mark_symbols () =
- (* Keep only enough commit-history to protect the running transactions that we are still tracking *)
- (* There is scope for optimisation here, replacing List.filter with something more efficient,
- * probably on a different list-like structure. *)
--let trim () =
-+let trim ?txn () =
-+ Transaction.trim_short_running_transactions txn;
- history := match Transaction.oldest_short_running_transaction () with
- | None -> [] (* We have no open transaction, so no history is needed *)
- | Some (_, txn) -> (
-@@ -49,8 +50,7 @@ let trim () =
-
- let end_transaction txn con tid commit =
- let success = Connection.end_transaction con tid commit in
-- Transaction.end_transaction txn;
-- trim ();
-+ trim ~txn ();
- success
-
- let push (x: history_record) =
-diff --git a/tools/ocaml/xenstored/transaction.ml b/tools/ocaml/xenstored/transaction.ml
-index da4a3e3..23e7ccf 100644
---- a/tools/ocaml/xenstored/transaction.ml
-+++ b/tools/ocaml/xenstored/transaction.ml
-@@ -106,10 +106,14 @@ let oldest_short_running_transaction () =
- | x :: xs -> last xs
- in last !short_running_txns
-
--let end_transaction txn =
-+let trim_short_running_transactions txn =
- let cutoff = Unix.gettimeofday () -. !Define.conflict_max_history_seconds in
-+ let keep = match txn with
-+ | None -> (function (start_time, _) -> start_time >= cutoff)
-+ | Some t -> (function (start_time, tx) -> start_time >= cutoff && tx != t)
-+ in
- short_running_txns := List.filter
-- (function (start_time, tx) -> start_time >= cutoff && tx != txn)
-+ keep
- !short_running_txns
-
- let make ?(internal=false) id store =
-diff --git a/tools/ocaml/xenstored/xenstored.ml b/tools/ocaml/xenstored/xenstored.ml
-index 92ea99e..c45146d 100644
---- a/tools/ocaml/xenstored/xenstored.ml
-+++ b/tools/ocaml/xenstored/xenstored.ml
-@@ -280,6 +280,7 @@ let _ =
- * than the periodic_ops function *)
- let frequent_ops () =
- if Unix.gettimeofday () > !next_frequent_ops then (
-+ History.trim ();
- Domains.incr_conflict_credit domains;
- advance_next_frequent_ops ()
- ) in
---
-1.7.9.5
-