Hello Jens, The 1st two patches fixes ublk device leak or hang issue in case of some failure path, such as, failing to start device. The 3rd patch adds two control commands for setting/getting device parameters in generic way, and easy to extend to add new parameter type. The 4th patch adds two parameter type: basic and discard, and basic parameter covers basic block queue setting or someone which can't be grouped to other types, basic parameter has to be set; discard parameter is optional. The 5th patch cleans UAPI of ublksrv_ctrl_dev_info, and userspace has to be updated for this driver change, so please consider this patchset for v5.20. Verified by all targets in the following branch: https://github.com/ming1/ubdsrv/tree/parameter Also all device data including parameters is exported as json in above tree. V3: - drop device reference after add_disk fails, as suggested by Christoph, 1/5 - simplify the 3rd patch: replace xarray with plain array, remove function table and avoid indirect call, then reduce boiler plate for addressing Christoph's comment V2: - re-organize patches - limit parameter max length - take Christoph's approach to replace bitfields with flags, and use char type to define block size shift - add two fixes, which is triggered when testing set/get parameter commands - cleanup uapi header Ming Lei (5): ublk_drv: cancel device even though disk isn't up ublk_drv: fix ublk device leak in case that add_disk fails ublk_drv: add SET_PARAM/GET_PARAM control command ublk_drv: add two parameter types ublk_drv: cleanup ublksrv_ctrl_dev_info drivers/block/ublk_drv.c | 333 ++++++++++++++++++++++++++++++---- include/uapi/linux/ublk_cmd.h | 57 +++++- 2 files changed, 352 insertions(+), 38 deletions(-) -- 2.31.1