[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen stable-4.16] tools/ocaml/xenstored: fix live update exception



commit 8837acbcda63bf3f6321642d83089a9d3fb57d80
Author:     Edwin Török <edvin.torok@xxxxxxxxxx>
AuthorDate: Fri Oct 21 08:59:25 2022 +0100
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Mon Dec 12 11:04:12 2022 +0000

    tools/ocaml/xenstored: fix live update exception
    
    During live update we will load the /tool/xenstored path from the previous 
binary,
    and then try to mkdir /tool again which will fail with EEXIST.
    Check for existence of the path before creating it.
    
    The write call to /tool/xenstored should not need any changes
    (and we do want to overwrite any previous path, in case it changed).
    
    Prior to 7110192b1df6 live update would work only if the binary path was
    specified, and with 7110192b1df6 and this live update also works when
    no binary path is specified in `xenstore-control live-update`.
    
    Fixes: 7110192b1df6 ("tools/oxenstored: Fix Oxenstored Live Update")
    Signed-off-by: Edwin Török <edvin.torok@xxxxxxxxxx>
    Acked-by: Christian Lindig <christian.lindig@xxxxxxxxxx>
    Release-acked-by: Henry Wang <Henry.Wang@xxxxxxx>
    (cherry picked from commit f838b956779ff8a0b94636462f3c6d95c3adeb73)
---
 tools/ocaml/xenstored/xenstored.ml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tools/ocaml/xenstored/xenstored.ml 
b/tools/ocaml/xenstored/xenstored.ml
index 3e9f6ce5b2..ffd43a4eee 100644
--- a/tools/ocaml/xenstored/xenstored.ml
+++ b/tools/ocaml/xenstored/xenstored.ml
@@ -419,7 +419,9 @@ let _ =
        ) in
 
        (* required for xenstore-control to detect availability of live-update 
*)
-       Store.mkdir store Perms.Connection.full_rights (Store.Path.of_string 
"/tool");
+       let tool_path = Store.Path.of_string "/tool" in
+       if not (Store.path_exists store tool_path) then
+               Store.mkdir store Perms.Connection.full_rights tool_path;
        Store.write store Perms.Connection.full_rights
                (Store.Path.of_string "/tool/xenstored") Sys.executable_name;
 
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.16



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.