On Sat, Aug 15, 2026 at 01:48:19AM +0800, Zhang Chen wrote:
> @@ -139,7 +140,16 @@ BlockExport *blk_exp_add(BlockExportOptions *export,
> Error **errp)
> goto fail;
> }
>
> - new_ctx = iothread_get_aio_context(iothread);
> + holder_id = export->id;
> + const IOThreadHolder holder = {
> + .type = IO_THREAD_HOLDER_KIND_BLOCK_EXPORT,
> + .u.block_export.export_id = holder_id,
> + };
> +
> + new_ctx = iothread_ref_and_get_aio_context(iothread, &holder);
> + multithread_count = 1;
This changes behavior in:
ret = drv->create(exp, export, multithread_ctxs, multithread_count, errp);
Now export drivers will see drv->create(exp, export, NULL, 1, errp);
^^^^ ^
Before it was drv->create(exp, export, NULL, 0, errp).
fuse_export_create() has an assertion that fails now:
if (multithread) {
...
} else {
/* Guaranteed by common export code */
assert(mt_count == 0);
...
}
signature.asc
Description: PGP signature
