File nbd-server-avoid-per-NBDRequest-nbd_clie.patch of Package qemu.40154
From: Stefan Hajnoczi <stefanha@redhat.com>
Date: Thu, 21 Dec 2023 14:24:50 -0500
Subject: nbd/server: avoid per-NBDRequest nbd_client_get/put() (bsc#1232283)
nbd_trip() processes a single NBD request from start to finish and holds
an NBDClient reference throughout. NBDRequest does not outlive the scope
of nbd_trip(). Therefore it is unnecessary to ref/unref NBDClient for
each NBDRequest.
Removing these nbd_client_get()/nbd_client_put() calls will make
thread-safety easier in the commits that follow.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Message-ID: <20231221192452.1785567-5-stefanha@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
(cherry picked from commit efade66d5872e3bfb906944105145007ff2e26a3)
References: bsc#1232283
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
---
nbd/server.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/nbd/server.c b/nbd/server.c
index efbab1ff963feba037999f29220c..1b54990ea3f5b7d4c9e0d7bda3ae 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1435,7 +1435,6 @@ static NBDRequestData *nbd_request_get(NBDClient *client)
client->nb_requests++;
req = g_new0(NBDRequestData, 1);
- nbd_client_get(client);
req->client = client;
return req;
}
@@ -1451,8 +1450,6 @@ static void nbd_request_put(NBDRequestData *req)
client->nb_requests--;
nbd_client_receive_next_request(client);
-
- nbd_client_put(client);
}
static void blk_aio_attached(AioContext *ctx, void *opaque)