targetcli /backstores/fileio create fails for LVM devices with uppercase names

Solution Verified - Updated -

Issue

  • Attempting to create a new fileio device through targetcli against an LVM device fails.
  • The error message (for an LVM volume named 'somelvname' with some or all letters in upper case) is:
IOError: [Errno 2] No such file or directory: '/sys/block/somelvmname/size'
  • In more detail, here is the full python traceback for an LVM volume named TESTVG-testlv :
[root@rhel70 ~]# lvs
  LV     VG     Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  testlv TESTVG -wi-ao----   8.00g                                             
  root   rhel   -wi-ao----  13.71g                                             
  swap   rhel   -wi-ao---- 820.00m                                             

[root@rhel70 ~]# targetcli /backstores/fileio create test /dev/mapper/TESTVG-testlv 
Note: block backstore preferred for best results
Traceback (most recent call last):
  File "/usr/bin/targetcli", line 89, in <module>
    main()
  File "/usr/bin/targetcli", line 72, in main
    shell.run_cmdline(" ".join(sys.argv[1:]))
  File "/usr/lib/python2.7/site-packages/configshell/shell.py", line 891, in run_cmdline
    self._execute_command(path, command, pparams, kparams)
  File "/usr/lib/python2.7/site-packages/configshell/shell.py", line 866, in _execute_command
    result = target.execute_command(command, pparams, kparams)
  File "/usr/lib/python2.7/site-packages/targetcli/ui_node.py", line 87, in execute_command
    pparams, kparams)
  File "/usr/lib/python2.7/site-packages/configshell/node.py", line 1417, in execute_command
    result = method(*pparams, **kparams)
  File "/usr/lib/python2.7/site-packages/targetcli/ui_backstore.py", line 355, in ui_command_create
    % (name, so.size))
  File "/usr/lib/python2.7/site-packages/rtslib/tcm.py", line 611, in _get_size
    return (get_blockdev_size(self._parse_info('File')) *
  File "/usr/lib/python2.7/site-packages/rtslib/utils.py", line 127, in get_blockdev_size
    return get_size("/sys/block/%s" % name)
  File "/usr/lib/python2.7/site-packages/rtslib/utils.py", line 120, in get_size
    sect_size = int(fread("%s/size" % path))
  File "/usr/lib/python2.7/site-packages/rtslib/utils.py", line 88, in fread
    with open(path, 'r') as file_fd:
IOError: [Errno 2] No such file or directory: '/sys/block/testvg-testlv/size'

Environment

  • RHEL7.0GA
  • targetcli-2.1.fb34-1.el7.noarch
  • python-rtslib-2.1.fb46-1.el7.noarch
  • lvm2-2.02.105-14.el7.x86_64

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.