All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yonggang Luo <luoyonggang@gmail.com>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Yonggang Luo <luoyonggang@gmail.com>
Subject: [PATCH v4 06/12] block: Fixes nfs on msys2/mingw
Date: Thu,  3 Sep 2020 16:31:41 +0800	[thread overview]
Message-ID: <20200903083147.707-7-luoyonggang@gmail.com> (raw)
In-Reply-To: <20200903083147.707-1-luoyonggang@gmail.com>

Signed-off-by: Yonggang Luo <luoyonggang@gmail.com>
---
 block/nfs.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/block/nfs.c b/block/nfs.c
index 61a249a9fc..34b2cd5708 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -24,7 +24,9 @@
 
 #include "qemu/osdep.h"
 
+#if !defined(_WIN32)
 #include <poll.h>
+#endif
 #include "qemu/config-file.h"
 #include "qemu/error-report.h"
 #include "qapi/error.h"
@@ -51,6 +53,12 @@
 #define QEMU_NFS_MAX_PAGECACHE_SIZE (8388608 / NFS_BLKSIZE)
 #define QEMU_NFS_MAX_DEBUG_LEVEL 2
 
+#if defined (_WIN32)
+#define nfs_stat __stat64
+#else
+#define nfs_stat stat
+#endif
+
 typedef struct NFSClient {
     struct nfs_context *context;
     struct nfsfh *fh;
@@ -58,7 +66,7 @@ typedef struct NFSClient {
     bool has_zero_init;
     AioContext *aio_context;
     QemuMutex mutex;
-    blkcnt_t st_blocks;
+    int64_t st_size;
     bool cache_used;
     NFSServer *server;
     char *path;
@@ -70,7 +78,7 @@ typedef struct NFSRPC {
     int ret;
     int complete;
     QEMUIOVector *iov;
-    struct stat *st;
+    struct nfs_stat *st;
     Coroutine *co;
     NFSClient *client;
 } NFSRPC;
@@ -419,7 +427,7 @@ static int64_t nfs_client_open(NFSClient *client, BlockdevOptionsNfs *opts,
                                int flags, int open_flags, Error **errp)
 {
     int64_t ret = -EINVAL;
-    struct stat st;
+    struct nfs_stat st;
     char *file = NULL, *strp = NULL;
 
     qemu_mutex_init(&client->mutex);
@@ -545,7 +553,7 @@ static int64_t nfs_client_open(NFSClient *client, BlockdevOptionsNfs *opts,
     }
 
     ret = DIV_ROUND_UP(st.st_size, BDRV_SECTOR_SIZE);
-    client->st_blocks = st.st_blocks;
+    client->st_size = st.st_size;
     client->has_zero_init = S_ISREG(st.st_mode);
     *strp = '/';
     goto out;
@@ -729,11 +737,11 @@ static int64_t nfs_get_allocated_file_size(BlockDriverState *bs)
 {
     NFSClient *client = bs->opaque;
     NFSRPC task = {0};
-    struct stat st;
+    struct nfs_stat st;
 
     if (bdrv_is_read_only(bs) &&
         !(bs->open_flags & BDRV_O_NOCACHE)) {
-        return client->st_blocks * 512;
+        return client->st_size;
     }
 
     task.bs = bs;
@@ -746,7 +754,7 @@ static int64_t nfs_get_allocated_file_size(BlockDriverState *bs)
     nfs_set_events(client);
     BDRV_POLL_WHILE(bs, !task.complete);
 
-    return (task.ret < 0 ? task.ret : st.st_blocks * 512);
+    return (task.ret < 0 ? task.ret : st.st_size);
 }
 
 static int coroutine_fn
@@ -778,7 +786,7 @@ static int nfs_reopen_prepare(BDRVReopenState *state,
                               BlockReopenQueue *queue, Error **errp)
 {
     NFSClient *client = state->bs->opaque;
-    struct stat st;
+    struct nfs_stat st;
     int ret = 0;
 
     if (state->flags & BDRV_O_RDWR && bdrv_is_read_only(state->bs)) {
@@ -800,7 +808,7 @@ static int nfs_reopen_prepare(BDRVReopenState *state,
                        nfs_get_error(client->context));
             return ret;
         }
-        client->st_blocks = st.st_blocks;
+        client->st_size = st.st_size;
     }
 
     return 0;
-- 
2.28.0.windows.1



  parent reply	other threads:[~2020-09-03  8:37 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-03  8:31 [PATCH v4 00/12] Green the msys2 CI make Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 01/12] configure: fixes dtc not cloned when running msys2 CI Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 02/12] meson: Convert undefsym.sh to undefsym.py Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 03/12] tcg: Fixes dup_const link error Yonggang Luo
2020-09-03 17:20   ` Richard Henderson
2020-09-03 21:19     ` 罗勇刚(Yonggang Luo)
2020-09-03 23:29       ` Richard Henderson
2020-09-03  8:31 ` [PATCH v4 04/12] tests: handling signal on win32 properly Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 05/12] configure: Fix include and linkage issue on msys2 Yonggang Luo
2020-09-03  8:31 ` Yonggang Luo [this message]
2020-09-03 14:40   ` [PATCH v4 06/12] block: Fixes nfs on msys2/mingw Thomas Huth
2020-09-03  8:31 ` [PATCH v4 07/12] osdep: These function are only available on Non-Win32 system Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 08/12] ci: fixes msys2 build by upgrading capstone to 4.0.2 Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 09/12] stubs: qemu_notify_event have no need to stub Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 10/12] meson: Fixes qapi tests Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 11/12] tests: Disable test-image-locking that not works under Win32 Yonggang Luo
2020-09-03  8:31 ` [PATCH v4 12/12] ci: Enable msys2 ci in cirrus Yonggang Luo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200903083147.707-7-luoyonggang@gmail.com \
    --to=luoyonggang@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.