Package: targetcli-fb
Version: 1:3.0.2-2
Severity: normal
Tags: patch
Dear Maintainer,
On Debian testing, targetcli-fb is unable to create a block backstore.
The "create" command under /backstores/block always fails because
targetcli passes the keyword argument "exclusive" to
rtslib_fb.BlockStorageObject(), but the installed class constructor does
not accept this argument.
This makes a central targetcli-fb operation unusable without locally
modifying a file installed by the package.
Steps to reproduce
==================
Create a block backstore using a valid unused block device:
/backstores/block> create name=vol0 dev=/dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_feedcafe09452f116c49
Actual result
=============
targetcli aborts with the following traceback:
Traceback (most recent call last):
File "/usr/bin/targetcli", line 8, in <module>
sys.exit(main())
~~~~^^
File "/usr/lib/python3/dist-packages/targetcli/targetcli_shell.py", line 313, in main
shell.run_interactive()
~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/configshell/shell.py", line 906, in run_interactive
self._cli_loop()
~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/configshell/shell.py", line 733, in _cli_loop
self.run_cmdline(cmdline)
~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3/dist-packages/configshell/shell.py", line 845, in run_cmdline
self._execute_command(path, command, pparams, kparams)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/configshell/shell.py", line 820, in _execute_command
result = target.execute_command(command, pparams, kparams)
File "/usr/lib/python3/dist-packages/configshell/node.py", line 1392, in execute_command
return method(*pparams, **kparams)
File "/usr/lib/python3/dist-packages/targetcli/ui_backstore.py", line 568, in ui_command_create
so = BlockStorageObject(name, dev, readonly=readonly, wwn=wwn,
exclusive=exclusive)
TypeError: BlockStorageObject.__init__() got an unexpected keyword argument 'exclusive'
Cause
=====
The installed targetcli code calls:
so = BlockStorageObject(name, dev, readonly=readonly, wwn=wwn,
exclusive=exclusive)
However, the installed rtslib_fb.BlockStorageObject constructor does not
accept the "exclusive" keyword argument.
Package versions
================
python3 3.14.6-1 amd64
python3-configshell-fb 1:2.0.3-1 all
python3-rtslib-fb 2.2.3-5 all
targetcli-fb 1:3.0.2-2 all
The constructor signature can be checked with:
python3 -c 'from rtslib_fb import BlockStorageObject; import inspect; print(inspect.signature(BlockStorageObject))'
System information
==================
Debian testing
Architecture: amd64
Kernel: Linux target 7.1.8+deb14.1-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 7.1.8-2 (2026-08-15) x86_64 GNU/Linux
libc6: 2.43-4
Proposed patch
==============
Removing the obsolete "exclusive" keyword argument allows block backstore
creation to succeed:
--- a/targetcli/ui_backstore.py
+++ b/targetcli/ui_backstore.py
@@ -565,8 +565,7 @@
- so = BlockStorageObject(name, dev, readonly=readonly, wwn=wwn,
- exclusive=exclusive)
+ so = BlockStorageObject(name, dev, readonly=readonly, wwn=wwn)
After applying this change, the following command succeeds:
/backstores/block> create name=vol0 dev=/dev/disk/by-id/nvme-QEMU_NVMe_Ctrl_feedcafe09452f116c49
Regards,