summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '0016-tools-oxenstored-Rename-some-port-variables-to-remot.patch')
-rw-r--r--0016-tools-oxenstored-Rename-some-port-variables-to-remot.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/0016-tools-oxenstored-Rename-some-port-variables-to-remot.patch b/0016-tools-oxenstored-Rename-some-port-variables-to-remot.patch
new file mode 100644
index 0000000..4f168d6
--- /dev/null
+++ b/0016-tools-oxenstored-Rename-some-port-variables-to-remot.patch
@@ -0,0 +1,144 @@
+From fd0d9b05970986545656c8f6f688f70f3e78a29b Mon Sep 17 00:00:00 2001
+From: Andrew Cooper <andrew.cooper3@citrix.com>
+Date: Wed, 30 Nov 2022 03:17:28 +0000
+Subject: [PATCH 16/89] tools/oxenstored: Rename some 'port' variables to
+ 'remote_port'
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This will make the logic clearer when we plumb local_port through these
+functions.
+
+While doing this, rearrange the construct in Domains.create0 to separate the
+remote port handling from the interface handling. (The interface logic is
+dubious in several ways, but not altered by this cleanup.)
+
+Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
+Reviewed-by: Edwin Török <edvin.torok@citrix.com>
+Acked-by: Christian Lindig <christian.lindig@citrix.com>
+(cherry picked from commit 31fbee749a75621039ca601eaee7222050a7dd83)
+---
+ tools/ocaml/xenstored/domains.ml | 26 ++++++++++++--------------
+ tools/ocaml/xenstored/process.ml | 12 ++++++------
+ tools/ocaml/xenstored/xenstored.ml | 8 ++++----
+ 3 files changed, 22 insertions(+), 24 deletions(-)
+
+diff --git a/tools/ocaml/xenstored/domains.ml b/tools/ocaml/xenstored/domains.ml
+index 17fe2fa257..26018ac0dd 100644
+--- a/tools/ocaml/xenstored/domains.ml
++++ b/tools/ocaml/xenstored/domains.ml
+@@ -122,9 +122,9 @@ let cleanup doms =
+ let resume _doms _domid =
+ ()
+
+-let create doms domid mfn port =
++let create doms domid mfn remote_port =
+ let interface = Xenctrl.map_foreign_range xc domid (Xenmmap.getpagesize()) mfn in
+- let dom = Domain.make domid mfn port interface doms.eventchn in
++ let dom = Domain.make domid mfn remote_port interface doms.eventchn in
+ Hashtbl.add doms.table domid dom;
+ Domain.bind_interdomain dom;
+ dom
+@@ -133,18 +133,16 @@ let xenstored_kva = ref ""
+ let xenstored_port = ref ""
+
+ let create0 doms =
+- let port, interface =
+- (
+- let port = Utils.read_file_single_integer !xenstored_port
+- and fd = Unix.openfile !xenstored_kva
+- [ Unix.O_RDWR ] 0o600 in
+- let interface = Xenmmap.mmap fd Xenmmap.RDWR Xenmmap.SHARED
+- (Xenmmap.getpagesize()) 0 in
+- Unix.close fd;
+- port, interface
+- )
+- in
+- let dom = Domain.make 0 Nativeint.zero port interface doms.eventchn in
++ let remote_port = Utils.read_file_single_integer !xenstored_port in
++
++ let interface =
++ let fd = Unix.openfile !xenstored_kva [ Unix.O_RDWR ] 0o600 in
++ let interface = Xenmmap.mmap fd Xenmmap.RDWR Xenmmap.SHARED (Xenmmap.getpagesize()) 0 in
++ Unix.close fd;
++ interface
++ in
++
++ let dom = Domain.make 0 Nativeint.zero remote_port interface doms.eventchn in
+ Hashtbl.add doms.table 0 dom;
+ Domain.bind_interdomain dom;
+ Domain.notify dom;
+diff --git a/tools/ocaml/xenstored/process.ml b/tools/ocaml/xenstored/process.ml
+index 72a79e9328..b2973aca2a 100644
+--- a/tools/ocaml/xenstored/process.ml
++++ b/tools/ocaml/xenstored/process.ml
+@@ -558,10 +558,10 @@ let do_transaction_end con t domains cons data =
+ let do_introduce con t domains cons data =
+ if not (Connection.is_dom0 con)
+ then raise Define.Permission_denied;
+- let (domid, mfn, port) =
++ let (domid, mfn, remote_port) =
+ match (split None '\000' data) with
+- | domid :: mfn :: port :: _ ->
+- int_of_string domid, Nativeint.of_string mfn, int_of_string port
++ | domid :: mfn :: remote_port :: _ ->
++ int_of_string domid, Nativeint.of_string mfn, int_of_string remote_port
+ | _ -> raise Invalid_Cmd_Args;
+ in
+ let dom =
+@@ -569,18 +569,18 @@ let do_introduce con t domains cons data =
+ let edom = Domains.find domains domid in
+ if (Domain.get_mfn edom) = mfn && (Connections.find_domain cons domid) != con then begin
+ (* Use XS_INTRODUCE for recreating the xenbus event-channel. *)
+- edom.remote_port <- port;
++ edom.remote_port <- remote_port;
+ Domain.bind_interdomain edom;
+ end;
+ edom
+ else try
+- let ndom = Domains.create domains domid mfn port in
++ let ndom = Domains.create domains domid mfn remote_port in
+ Connections.add_domain cons ndom;
+ Connections.fire_spec_watches (Transaction.get_root t) cons Store.Path.introduce_domain;
+ ndom
+ with _ -> raise Invalid_Cmd_Args
+ in
+- if (Domain.get_remote_port dom) <> port || (Domain.get_mfn dom) <> mfn then
++ if (Domain.get_remote_port dom) <> remote_port || (Domain.get_mfn dom) <> mfn then
+ raise Domain_not_match
+
+ let do_release con t domains cons data =
+diff --git a/tools/ocaml/xenstored/xenstored.ml b/tools/ocaml/xenstored/xenstored.ml
+index 55071b49ec..1f11f576b5 100644
+--- a/tools/ocaml/xenstored/xenstored.ml
++++ b/tools/ocaml/xenstored/xenstored.ml
+@@ -167,10 +167,10 @@ let from_channel_f chan global_f socket_f domain_f watch_f store_f =
+ global_f ~rw
+ | "socket" :: fd :: [] ->
+ socket_f ~fd:(int_of_string fd)
+- | "dom" :: domid :: mfn :: port :: []->
++ | "dom" :: domid :: mfn :: remote_port :: []->
+ domain_f (int_of_string domid)
+ (Nativeint.of_string mfn)
+- (int_of_string port)
++ (int_of_string remote_port)
+ | "watch" :: domid :: path :: token :: [] ->
+ watch_f (int_of_string domid)
+ (unhexify path) (unhexify token)
+@@ -209,10 +209,10 @@ let from_channel store cons doms chan =
+ else
+ warn "Ignoring invalid socket FD %d" fd
+ in
+- let domain_f domid mfn port =
++ let domain_f domid mfn remote_port =
+ let ndom =
+ if domid > 0 then
+- Domains.create doms domid mfn port
++ Domains.create doms domid mfn remote_port
+ else
+ Domains.create0 doms
+ in
+--
+2.40.0
+