[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 06/18] block: Implement blk_{pread, pwrite}() using generated
From: |
Emanuele Giuseppe Esposito |
Subject: |
Re: [PATCH 06/18] block: Implement blk_{pread, pwrite}() using generated_co_wrapper |
Date: |
Wed, 18 May 2022 15:34:21 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 |
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"\
--
2.31.1
>> ---
>> 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);
>
- Re: [PATCH 01/18] block: Make blk_{pread,pwrite}() return 0 on success, (continued)
- [PATCH 02/18] block: Add a 'flags' param to blk_pread(), Alberto Faria, 2022/05/17
- [PATCH 03/18] block: Change blk_{pread,pwrite}() param order, Alberto Faria, 2022/05/17
- [PATCH 04/18] block: Make 'bytes' param of blk_{pread, pwrite}() an int64_t, Alberto Faria, 2022/05/17
- [PATCH 06/18] block: Implement blk_{pread, pwrite}() using generated_co_wrapper, Alberto Faria, 2022/05/17
- [PATCH 05/18] block: Make blk_co_pwrite() take a const buffer, Alberto Faria, 2022/05/17
- [PATCH 07/18] block: Add blk_{preadv,pwritev}(), Alberto Faria, 2022/05/17
- [PATCH 09/18] block: Export blk_pwritev_part() in block-backend-io.h, Alberto Faria, 2022/05/17
- [PATCH 10/18] block: Change blk_pwrite_compressed() param order, Alberto Faria, 2022/05/17