Sagi Grimberg <sagi@xxxxxxxxxxx> writes: >>>> diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig >>>> index fdb81f2794cd..d218089cdbec 100644 >>>> --- a/drivers/block/Kconfig >>>> +++ b/drivers/block/Kconfig >>>> @@ -408,6 +408,12 @@ config BLK_DEV_RBD >>>> If unsure, say N. >>>> +config BLK_DEV_UBLK >>>> + bool "Userspace block driver" >>> >>> Really? why compile this to the kernel and not tristate as loadable >>> module? >> So far, this is only one reason: task_work_add() is required, which >> isn't exported for modules. > > So why not exporting it? > Doesn't seem like a good justification to build it into the kernel. Sagi, If I understand correctly, the task_work_add function is quite a core API that we probably want to avoid exposing directly to (out-of-tree) modules? I agree, though, it would be great to have this buildable as a module for general use cases. Would it make sense to have it exposed through a thin built-in wrapper, specific to UBD, which is exported, and therefore able to invoke that function? Is it a reasonable approach? -- Gabriel Krisman Bertazi