X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/09920c53549f6097a007bc6081b6f03b9dc13d9c..d5a515738ee2dec0cdf11d8a14a09abae6c20571:/block/nbd-client.h diff --git a/block/nbd-client.h b/block/nbd-client.h index 1935ffbcaa..cfc90550b9 100644 --- a/block/nbd-client.h +++ b/block/nbd-client.h @@ -17,6 +17,12 @@ #define MAX_NBD_REQUESTS 16 +typedef struct { + Coroutine *coroutine; + uint64_t offset; /* original offset of the request */ + bool receiving; /* waiting for read_reply_co? */ +} NBDClientRequest; + typedef struct NBDClientSession { QIOChannelSocket *sioc; /* The master data channel */ QIOChannel *ioc; /* The current I/O channel which may differ (eg TLS) */ @@ -27,7 +33,7 @@ typedef struct NBDClientSession { Coroutine *read_reply_co; int in_flight; - Coroutine *recv_coroutine[MAX_NBD_REQUESTS]; + NBDClientRequest requests[MAX_NBD_REQUESTS]; NBDReply reply; bool quit; } NBDClientSession; @@ -39,6 +45,7 @@ int nbd_client_init(BlockDriverState *bs, const char *export_name, QCryptoTLSCreds *tlscreds, const char *hostname, + const char *x_dirty_bitmap, Error **errp); void nbd_client_close(BlockDriverState *bs); @@ -55,4 +62,10 @@ void nbd_client_detach_aio_context(BlockDriverState *bs); void nbd_client_attach_aio_context(BlockDriverState *bs, AioContext *new_context); +int coroutine_fn nbd_client_co_block_status(BlockDriverState *bs, + bool want_zero, + int64_t offset, int64_t bytes, + int64_t *pnum, int64_t *map, + BlockDriverState **file); + #endif /* NBD_CLIENT_H */