[PATCH v2] tools: init-dom0less: Replace err() with more informative messages

Michal Orzel posted 1 patch 3 weeks, 2 days ago
Patches applied successfully (tree, apply log)
git fetch https://gitlab.com/xen-project/patchew/xen tags/patchew/20251007062656.4254-1-michal.orzel@amd.com
tools/helpers/init-dom0less.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
[PATCH v2] tools: init-dom0less: Replace err() with more informative messages
Posted by Michal Orzel 3 weeks, 2 days ago
Current use of err() has the following issues:
- without setting errno, on error it results in printing e.g.:
 "init-dom0less: writing to xenstore: Success"
 This is very misleading and difficult to deduct that there was a
 failure.
- does not propagate error codes to the caller.
- skips "init_domain failed" message by exiting early.
- early exit prevents setting up any remaining domains.

Replace err() with more informative messages propagating rc when
possible.

Signed-off-by: Michal Orzel <michal.orzel@amd.com>
---
Changes in v2:
 - return -errno instead of 1 for xs_introduce_domain
 - add another bullet point in commit msg
---
 tools/helpers/init-dom0less.c | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/tools/helpers/init-dom0less.c b/tools/helpers/init-dom0less.c
index a182dce56353..851bbfff15aa 100644
--- a/tools/helpers/init-dom0less.c
+++ b/tools/helpers/init-dom0less.c
@@ -288,24 +288,33 @@ static int init_domain(struct xs_handle *xsh,
 
         rc = xc_dom_gnttab_seed(xch, info->domid, true,
                                 (xen_pfn_t)-1, xenstore_pfn, 0, 0);
-        if (rc)
-               err(1, "xc_dom_gnttab_seed");
+        if (rc) {
+            printf("Failed to seed gnttab entries\n");
+            return rc;
+        }
     }
 
     libxl_uuid_generate(&uuid);
     xc_domain_sethandle(xch, info->domid, libxl_uuid_bytearray(&uuid));
 
     rc = gen_stub_json_config(info->domid, &uuid);
-    if (rc)
-        err(1, "gen_stub_json_config");
+    if (rc) {
+        printf("Failed to create stub json config\n");
+        return rc;
+    }
 
     rc = create_xenstore(xsh, info, uuid, xenstore_pfn, xenstore_evtchn);
-    if (rc)
-        err(1, "writing to xenstore");
+    if (rc) {
+        printf("Failed to write to xenstore\n");
+        return rc;
+    }
 
     rc = xs_introduce_domain(xsh, info->domid, xenstore_pfn, xenstore_evtchn);
-    if (!rc)
-        err(1, "xs_introduce_domain");
+    if (!rc) {
+        printf("Failed to introduce a domain\n");
+        return -errno;
+    }
+
     return 0;
 }
 
-- 
2.43.0
Re: [PATCH v2] tools: init-dom0less: Replace err() with more informative messages
Posted by Jason Andryuk 3 weeks, 2 days ago
On 2025-10-07 02:26, Michal Orzel wrote:
> Current use of err() has the following issues:
> - without setting errno, on error it results in printing e.g.:
>   "init-dom0less: writing to xenstore: Success"
>   This is very misleading and difficult to deduct that there was a
>   failure.
> - does not propagate error codes to the caller.
> - skips "init_domain failed" message by exiting early.
> - early exit prevents setting up any remaining domains.
> 
> Replace err() with more informative messages propagating rc when
> possible.
> 
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

Reviewed-by: Jason Andryuk <jason.andryuk@amd.com>

Thanks,
Jason
Re: [PATCH v2] tools: init-dom0less: Replace err() with more informative messages
Posted by Alejandro Vallejo 3 weeks, 2 days ago
On Tue Oct 7, 2025 at 8:26 AM CEST, Michal Orzel wrote:
> Current use of err() has the following issues:
> - without setting errno, on error it results in printing e.g.:
>  "init-dom0less: writing to xenstore: Success"
>  This is very misleading and difficult to deduct that there was a
>  failure.
> - does not propagate error codes to the caller.
> - skips "init_domain failed" message by exiting early.
> - early exit prevents setting up any remaining domains.
>
> Replace err() with more informative messages propagating rc when
> possible.
>
> Signed-off-by: Michal Orzel <michal.orzel@amd.com>

  Reviewed-by: Alejandro Vallejo <alejandro.garciavallejo@amd.com>

Cheers,
Alejandro