diff mbox series

[06/18] block: Implement blk_{pread, pwrite}() using generated_co_wrapper

Message ID 20220517113837.199696-2-afaria@redhat.com
State New
Headers show
Series Make block-backend-io.h API more consistent | expand

Commit Message

Alberto Faria May 17, 2022, 11:38 a.m. UTC
We need to add include/sysemu/block-backend-io.h to the inputs of the
block-gen.c target defined in block/meson.build.

Signed-off-by: Alberto Faria <afaria@redhat.com>
---
 block/block-backend.c             | 23 -----------------------
 block/coroutines.h                |  4 ----
 block/meson.build                 |  1 +
 include/sysemu/block-backend-io.h | 10 ++++++----
 4 files changed, 7 insertions(+), 31 deletions(-)

Comments

Paolo Bonzini May 17, 2022, 2:22 p.m. UTC | #1
On 5/17/22 13:38, Alberto Faria wrote:
> We need to add include/sysemu/block-backend-io.h to the inputs of the
> block-gen.c target defined in block/meson.build.
> 
> Signed-off-by: Alberto Faria <afaria@redhat.com>

Emanuele is looking it cleaning this up, so you two need to coordinate.

Emanuele, can you separate/post the initial patches to clean up the 
includes of block/coroutines.h and block/block-gen.c?

Apart from that, fewer block/coroutines.h declarations is only good stuff.

Thanks,

Paolo

> ---
>   block/block-backend.c             | 23 -----------------------
>   block/coroutines.h                |  4 ----
>   block/meson.build                 |  1 +
>   include/sysemu/block-backend-io.h | 10 ++++++----
>   4 files changed, 7 insertions(+), 31 deletions(-)
> 
> diff --git a/block/block-backend.c b/block/block-backend.c
> index 5b9706c443..c2a4c44a99 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -1567,29 +1567,6 @@ BlockAIOCB *blk_aio_pwrite_zeroes(BlockBackend *blk, int64_t offset,
>                           flags | BDRV_REQ_ZERO_WRITE, cb, opaque);
>   }
>   
> -int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
> -              BdrvRequestFlags flags)
> -{
> -    int ret;
> -    QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
> -    IO_OR_GS_CODE();
> -
> -    blk_inc_in_flight(blk);
> -    ret = blk_do_preadv(blk, offset, bytes, &qiov, flags);
> -    blk_dec_in_flight(blk);
> -
> -    return ret;
> -}
> -
> -int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
> -               const void *buf, BdrvRequestFlags flags)
> -{
> -    QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
> -    IO_OR_GS_CODE();
> -
> -    return blk_pwritev_part(blk, offset, bytes, &qiov, 0, flags);
> -}
> -
>   int64_t blk_getlength(BlockBackend *blk)
>   {
>       IO_CODE();
> diff --git a/block/coroutines.h b/block/coroutines.h
> index 3f41238b33..443ef2f2e6 100644
> --- a/block/coroutines.h
> +++ b/block/coroutines.h
> @@ -112,10 +112,6 @@ bdrv_common_block_status_above(BlockDriverState *bs,
>   int generated_co_wrapper
>   nbd_do_establish_connection(BlockDriverState *bs, bool blocking, Error **errp);
>   
> -int generated_co_wrapper
> -blk_do_preadv(BlockBackend *blk, int64_t offset, int64_t bytes,
> -              QEMUIOVector *qiov, BdrvRequestFlags flags);
> -
>   int generated_co_wrapper
>   blk_do_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
>                       QEMUIOVector *qiov, size_t qiov_offset,
> diff --git a/block/meson.build b/block/meson.build
> index 0b2a60c99b..60bc305597 100644
> --- a/block/meson.build
> +++ b/block/meson.build
> @@ -136,6 +136,7 @@ block_gen_c = custom_target('block-gen.c',
>                               input: files(
>                                         '../include/block/block-io.h',
>                                         '../include/block/block-global-state.h',
> +                                      '../include/sysemu/block-backend-io.h',
>                                         'coroutines.h'
>                                         ),
>                               command: [wrapper_py, '@OUTPUT@', '@INPUT@'])
> diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h
> index 6440e92028..0804ce1c1d 100644
> --- a/include/sysemu/block-backend-io.h
> +++ b/include/sysemu/block-backend-io.h
> @@ -102,10 +102,12 @@ int coroutine_fn blk_co_copy_range(BlockBackend *blk_in, int64_t off_in,
>    * the "I/O or GS" API.
>    */
>   
> -int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
> -              BdrvRequestFlags flags);
> -int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
> -               const void *buf, BdrvRequestFlags flags);
> +int generated_co_wrapper blk_pread(BlockBackend *blk, int64_t offset,
> +                                   int64_t bytes, void *buf,
> +                                   BdrvRequestFlags flags);
> +int generated_co_wrapper blk_pwrite(BlockBackend *blk, int64_t offset,
> +                                    int64_t bytes, const void *buf,
> +                                    BdrvRequestFlags flags);
>   int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
>                                  int64_t bytes, QEMUIOVector *qiov,
>                                  BdrvRequestFlags flags);
Emanuele Giuseppe Esposito May 18, 2022, 1:34 p.m. UTC | #2
Am 17/05/2022 um 16:22 schrieb Paolo Bonzini:
> On 5/17/22 13:38, Alberto Faria wrote:
>> We need to add include/sysemu/block-backend-io.h to the inputs of the
>> block-gen.c target defined in block/meson.build.
>>
>> Signed-off-by: Alberto Faria <afaria@redhat.com>
> 
> Emanuele is looking it cleaning this up, so you two need to coordinate.
> 
> Emanuele, can you separate/post the initial patches to clean up the
> includes of block/coroutines.h and block/block-gen.c?
> 
> Apart from that, fewer block/coroutines.h declarations is only good stuff.
> 

This is the main patch: it just moves headers from block/coroutines.h to
the script (block_gen.c).

This allows you to keep generated_co_wrapper functions in the header
where they originally were (no need to move the function in coroutines.h
and include it everywhere).

Btw @Alberto can you also cc me in the next series? So that I can follow
too.

Thank you,
Emanuele

From 84fcea52c09024adcfe24bb0d6d2ec6842c6826b Mon Sep 17 00:00:00 2001
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Date: Tue, 17 May 2022 13:35:54 -0400
Subject: [PATCH] block-coroutine-wrapper: remove includes from coroutines.h

These includes in coroutines.h are not needed. Instead, they can
be moved in block-gen.c since they are needed by the generated
functions.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
 block/coroutines.h                 | 5 -----
 scripts/block-coroutine-wrapper.py | 3 +++
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/block/coroutines.h b/block/coroutines.h
index b293e943c8..45ecbfcc6a 100644
--- a/block/coroutines.h
+++ b/block/coroutines.h
@@ -25,11 +25,6 @@
 #ifndef BLOCK_COROUTINES_INT_H
 #define BLOCK_COROUTINES_INT_H

-#include "block/block_int.h"
-
-/* For blk_bs() in generated block/block-gen.c */
-#include "sysemu/block-backend.h"
-
 /*
  * I/O API functions. These functions are thread-safe.
  *
diff --git a/scripts/block-coroutine-wrapper.py
b/scripts/block-coroutine-wrapper.py
index 625b03e3ab..39fb1e8a4f 100644
--- a/scripts/block-coroutine-wrapper.py
+++ b/scripts/block-coroutine-wrapper.py
@@ -40,6 +40,9 @@ def gen_header():
  */

 #include "qemu/osdep.h"
+/* For blk_bs() in generated block/block-gen.c */
+#include "sysemu/block-backend.h"
+#include "block/block_int.h"
 #include "block/coroutines.h"
 #include "block/block-gen.h"
 #include "block/block_int.h"\
Paolo Bonzini May 18, 2022, 2:02 p.m. UTC | #3
On 5/18/22 15:34, Emanuele Giuseppe Esposito wrote:
> +/* For blk_bs() in generated block/block-gen.c */
> +#include "sysemu/block-backend.h"
> +#include "block/block_int.h"
>   #include "block/coroutines.h"
>   #include "block/block-gen.h"
>   #include "block/block_int.h"\

This second include of block_int.h is unnecessary.

Paolo
Alberto Faria May 19, 2022, 1:25 p.m. UTC | #4
On Wed, May 18, 2022 at 2:34 PM Emanuele Giuseppe Esposito
<eesposit@redhat.com> wrote:
> This is the main patch: it just moves headers from block/coroutines.h to
> the script (block_gen.c).
>
> This allows you to keep generated_co_wrapper functions in the header
> where they originally were (no need to move the function in coroutines.h
> and include it everywhere).

Thanks. It doesn't look like it will conflict with this series.

> Btw @Alberto can you also cc me in the next series? So that I can follow
> too.

Will do!

Alberto
Hanna Czenczek July 4, 2022, 3:30 p.m. UTC | #5
On 17.05.22 13:38, Alberto Faria wrote:
> We need to add include/sysemu/block-backend-io.h to the inputs of the
> block-gen.c target defined in block/meson.build.
>
> Signed-off-by: Alberto Faria <afaria@redhat.com>
> ---
>   block/block-backend.c             | 23 -----------------------
>   block/coroutines.h                |  4 ----
>   block/meson.build                 |  1 +
>   include/sysemu/block-backend-io.h | 10 ++++++----
>   4 files changed, 7 insertions(+), 31 deletions(-)

Reviewed-by: Hanna Reitz <hreitz@redhat.com>
diff mbox series

Patch

diff --git a/block/block-backend.c b/block/block-backend.c
index 5b9706c443..c2a4c44a99 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -1567,29 +1567,6 @@  BlockAIOCB *blk_aio_pwrite_zeroes(BlockBackend *blk, int64_t offset,
                         flags | BDRV_REQ_ZERO_WRITE, cb, opaque);
 }
 
-int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
-              BdrvRequestFlags flags)
-{
-    int ret;
-    QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
-    IO_OR_GS_CODE();
-
-    blk_inc_in_flight(blk);
-    ret = blk_do_preadv(blk, offset, bytes, &qiov, flags);
-    blk_dec_in_flight(blk);
-
-    return ret;
-}
-
-int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
-               const void *buf, BdrvRequestFlags flags)
-{
-    QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
-    IO_OR_GS_CODE();
-
-    return blk_pwritev_part(blk, offset, bytes, &qiov, 0, flags);
-}
-
 int64_t blk_getlength(BlockBackend *blk)
 {
     IO_CODE();
diff --git a/block/coroutines.h b/block/coroutines.h
index 3f41238b33..443ef2f2e6 100644
--- a/block/coroutines.h
+++ b/block/coroutines.h
@@ -112,10 +112,6 @@  bdrv_common_block_status_above(BlockDriverState *bs,
 int generated_co_wrapper
 nbd_do_establish_connection(BlockDriverState *bs, bool blocking, Error **errp);
 
-int generated_co_wrapper
-blk_do_preadv(BlockBackend *blk, int64_t offset, int64_t bytes,
-              QEMUIOVector *qiov, BdrvRequestFlags flags);
-
 int generated_co_wrapper
 blk_do_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
                     QEMUIOVector *qiov, size_t qiov_offset,
diff --git a/block/meson.build b/block/meson.build
index 0b2a60c99b..60bc305597 100644
--- a/block/meson.build
+++ b/block/meson.build
@@ -136,6 +136,7 @@  block_gen_c = custom_target('block-gen.c',
                             input: files(
                                       '../include/block/block-io.h',
                                       '../include/block/block-global-state.h',
+                                      '../include/sysemu/block-backend-io.h',
                                       'coroutines.h'
                                       ),
                             command: [wrapper_py, '@OUTPUT@', '@INPUT@'])
diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h
index 6440e92028..0804ce1c1d 100644
--- a/include/sysemu/block-backend-io.h
+++ b/include/sysemu/block-backend-io.h
@@ -102,10 +102,12 @@  int coroutine_fn blk_co_copy_range(BlockBackend *blk_in, int64_t off_in,
  * the "I/O or GS" API.
  */
 
-int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
-              BdrvRequestFlags flags);
-int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
-               const void *buf, BdrvRequestFlags flags);
+int generated_co_wrapper blk_pread(BlockBackend *blk, int64_t offset,
+                                   int64_t bytes, void *buf,
+                                   BdrvRequestFlags flags);
+int generated_co_wrapper blk_pwrite(BlockBackend *blk, int64_t offset,
+                                    int64_t bytes, const void *buf,
+                                    BdrvRequestFlags flags);
 int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
                                int64_t bytes, QEMUIOVector *qiov,
                                BdrvRequestFlags flags);