File xen.trc-get_ioreq_server.patch of Package xen

From: Olaf Hering <olaf@aepfle.de>
Date: Thu, 15 Jun 2023 08:30:31 +0000
Subject: trc get_ioreq_server

Signed-off-by: Olaf Hering <olaf@aepfle.de>
---
 xen/common/ioreq.c | 13 +++++++--
 1 file changed, 10 insertions(+), 3 deletions(-)

--- a/xen/common/ioreq.c
+++ b/xen/common/ioreq.c
@@ -78,28 +78,35 @@ static void set_ioreq_server(struct domain *d, unsigned int id,
     ASSERT(id < MAX_NR_IOREQ_SERVERS);
     ASSERT(!s || !d->ioreq_server.server[id]);
 
     d->ioreq_server.server[id] = s;
 }
 
 #define GET_IOREQ_SERVER(d, id) \
     (d)->ioreq_server.server[id]
 
 static struct ioreq_server *get_ioreq_server(const struct domain *d,
                                              unsigned int id)
 {
-    if ( id >= MAX_NR_IOREQ_SERVERS )
-        return NULL;
+    struct ioreq_server *s = NULL;
+    trc_get_ioreq_server_t trc = {
+        .target = d->domain_id,
+        .id = id,
+    };
+    if ( id < MAX_NR_IOREQ_SERVERS )
+        s = GET_IOREQ_SERVER(d, id);
 
-    return GET_IOREQ_SERVER(d, id);
+    trc.s = TRC_ePTR(s);
+    TRACE_trc(TRC_IOREQ_get_ioreq_server);
+    return s;
 }
 
 /*
  * Iterate over all possible ioreq servers.
  *
  * NOTE: The iteration is backwards such that more recently created
  *       ioreq servers are favoured in ioreq_server_select().
  *       This is a semantic that previously existed when ioreq servers
  *       were held in a linked list.
  */
 #define FOR_EACH_IOREQ_SERVER(d, id, s) \
     for ( (id) = MAX_NR_IOREQ_SERVERS; (id) != 0; ) \
openSUSE Build Service is sponsored by