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);
      ...
  }

Attachment: signature.asc
Description: PGP signature

Reply via email to