#1145850 targetcli-fb: cannot create block backstore: BlockStorageObject() rejects exclusive keyword

#1145850#5
Date:
2026-08-27 09:59:15 UTC
From:
To:
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,

#1145850#10
Date:
2026-08-27 19:50:49 UTC
From:
To:
Hi zigo,

Could you update rtslib-fb to 2.2.4, to pick up this change [1]
which the new targetcli-fb apparently relies on?

Thanks,
Chris

[1] https://github.com/open-iscsi/rtslib-fb/commit/03ec9c1841c2e53cfaf70c14d8d03b8a23ffddea