render / rpms / qemu

Forked from rpms/qemu a year ago
Clone
Blob Blame History Raw
From d5689766da7a166a7c6cda5b808fea127f7b845a Mon Sep 17 00:00:00 2001
From: Ronnie Sahlberg <ronniesahlberg@gmail.com>
Date: Sun, 26 Jan 2025 12:59:45 +1000
Subject: [PATCH] nfs: Add support for libnfs v2 api

Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
---
 block/nfs.c | 15 ++++++++++++++-
 meson.build |  2 +-
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/block/nfs.c b/block/nfs.c
index 7d34b58750..163e126b11 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -268,11 +268,18 @@ static int coroutine_fn nfs_co_preadv(BlockDriverState *bs, int64_t offset,
     NFSRPC task;
 
     nfs_co_init_task(bs, &task);
-    task.iov = iov;
 
     WITH_QEMU_LOCK_GUARD(&client->mutex) {
+#ifdef LIBNFS_API_V2
+        if (nfs_pread_async(client->context, client->fh,
+                            iov->iov[0].iov_base,
+                            bytes > iov->iov[0].iov_len ? iov->iov[0].iov_len : bytes,
+                            offset, nfs_co_generic_cb, &task) != 0) {
+#else
+        task.iov = iov;
         if (nfs_pread_async(client->context, client->fh,
                             offset, bytes, nfs_co_generic_cb, &task) != 0) {
+#endif            
             return -ENOMEM;
         }
 
@@ -317,9 +324,15 @@ static int coroutine_fn nfs_co_pwritev(BlockDriverState *bs, int64_t offset,
     }
 
     WITH_QEMU_LOCK_GUARD(&client->mutex) {
+#ifdef LIBNFS_API_V2
+        if (nfs_pwrite_async(client->context, client->fh,
+                             buf, bytes, offset,
+                             nfs_co_generic_cb, &task) != 0) {
+#else
         if (nfs_pwrite_async(client->context, client->fh,
                              offset, bytes, buf,
                              nfs_co_generic_cb, &task) != 0) {
+#endif            
             if (my_buffer) {
                 g_free(buf);
             }
-- 
2.47.1