block/raw-format: implement .bdrv_cancel_in_flight handler
authorVladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Fri, 5 Feb 2021 16:37:13 +0000 (19:37 +0300)
committerEric Blake <eblake@redhat.com>
Fri, 12 Feb 2021 15:45:18 +0000 (09:45 -0600)
We are going to cancel in-flight requests on mirror nbd target on job
cancel. Still nbd is often used not directly but as raw-format child.
So, add pass-through handler here.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <20210205163720.887197-4-vsementsov@virtuozzo.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
block/raw-format.c

index 42ec50802bcdbbec43e9a8997956f7c7d13c8faf..7717578ed6ab5fd278858bbbe4a523649de23022 100644 (file)
@@ -575,6 +575,11 @@ static const char *const raw_strong_runtime_opts[] = {
     NULL
 };
 
+static void raw_cancel_in_flight(BlockDriverState *bs)
+{
+    bdrv_cancel_in_flight(bs->file->bs);
+}
+
 BlockDriver bdrv_raw = {
     .format_name          = "raw",
     .instance_size        = sizeof(BDRVRawState),
@@ -608,6 +613,7 @@ BlockDriver bdrv_raw = {
     .bdrv_has_zero_init   = &raw_has_zero_init,
     .strong_runtime_opts  = raw_strong_runtime_opts,
     .mutable_opts         = mutable_opts,
+    .bdrv_cancel_in_flight = raw_cancel_in_flight,
 };
 
 static void bdrv_raw_init(void)