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

[PATCH v20210616 22/36] tools: restore: move mfns array in populate_pfns


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Olaf Hering <olaf@xxxxxxxxx>
  • Date: Wed, 16 Jun 2021 14:51:15 +0200
  • Arc-authentication-results: i=1; strato.com; dkim=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1623847903; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=2Gn1MT0Bi1Jqgmn6EP44HuJomJlyOc6/uRvNu601HFs=; b=TTyH7AS0EYebV694Lh3ak/7t7MpNELS967/d4eOPxKcUOU8PGLBzIivhH89OA/R3jC vz9f3/ke1SiOubqneeASXXLI/T9s4cH05Djx7giPr3m6x2keMKisCzwPZGEWxVQAR0Fd NQHBuTBuHu3HQhcb12hNY/WVcB3lfKHGzlR72v63f6hq6pQ0gGCCYC5XjIf255A6kAk2 ytL2PW6LB09Uc2uWJPWcZ3FsbVFDvaezeOcN9MrP7w9Ix/yrFKelf8PzqLYx8m0GhFdE ivA3x4o+bXEFXA5KeJyyaDr+zpq3J24MmwHK3kvWHp+bIIVIy08xDg2K/iWox1hWyWMS y2eQ==
  • Arc-seal: i=1; a=rsa-sha256; t=1623847903; cv=none; d=strato.com; s=strato-dkim-0002; b=N9SFQiycwUqMVroio62f217jPoVGGdQJPf+D4dC5ewl1zRi6GWZOq5/LTLwxJbNuF1 9BfpbqPX6LQPB4vOcV5UPcNv4ZDrHaYcxfQhfG9hmP7QCeTMYYGIZVZQvtap80KRLHqX Jj4kVAMFAjF+X9iA05oIcmhnXZK1FqFzaoe5/j4wLIjeaNR/glhGnGrD0VQZESX+opfM GDAq4bwCedM48Jo8Na7rwEAciY81rkFfrUNAE78psUmav+Ruz1cWMZRS064C9wXrGOlL 5eBChx/a46rzypa89VzkNt9S1hdPVtwm+OZn3v/VUCEEN2nGbI1CjOUSd/yg7mRIlG58 /AUg==
  • Authentication-results: strato.com; dkim=none
  • Cc: Olaf Hering <olaf@xxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Ian Jackson <iwj@xxxxxxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Wed, 16 Jun 2021 12:52:17 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Remove allocation from hotpath, move populate_pfns mfns array into preallocated 
space.
Use some prefix to avoid conflict with an array used in handle_page_data.

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>
Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
---
 tools/libs/saverestore/common.h  | 2 ++
 tools/libs/saverestore/restore.c | 5 ++---
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/tools/libs/saverestore/common.h b/tools/libs/saverestore/common.h
index 34042c2b90..3cfb23861f 100644
--- a/tools/libs/saverestore/common.h
+++ b/tools/libs/saverestore/common.h
@@ -242,6 +242,8 @@ struct sr_restore_arrays {
     /* process_page_data */
     xen_pfn_t mfns[MAX_BATCH_SIZE];
     int map_errs[MAX_BATCH_SIZE];
+    /* populate_pfns */
+    xen_pfn_t pp_mfns[MAX_BATCH_SIZE];
 };
 
 struct xc_sr_context
diff --git a/tools/libs/saverestore/restore.c b/tools/libs/saverestore/restore.c
index 6eb955423c..0c29478ccb 100644
--- a/tools/libs/saverestore/restore.c
+++ b/tools/libs/saverestore/restore.c
@@ -138,12 +138,12 @@ int populate_pfns(struct xc_sr_context *ctx, unsigned int 
count,
                   const xen_pfn_t *original_pfns, const uint32_t *types)
 {
     xc_interface *xch = ctx->xch;
-    xen_pfn_t *mfns = malloc(count * sizeof(*mfns)),
+    xen_pfn_t *mfns = ctx->restore.m->pp_mfns,
         *pfns = malloc(count * sizeof(*pfns));
     unsigned int i, nr_pfns = 0;
     int rc = -1;
 
-    if ( !mfns || !pfns )
+    if ( !pfns )
     {
         ERROR("Failed to allocate %zu bytes for populating the physmap",
               2 * count * sizeof(*mfns));
@@ -191,7 +191,6 @@ int populate_pfns(struct xc_sr_context *ctx, unsigned int 
count,
 
  err:
     free(pfns);
-    free(mfns);
 
     return rc;
 }



 


Rackspace

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