Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-122305

[RHEL10] Anaconda crashes when installing on iSCSI with LUN ID >= 256

Linking RHIVOS CVEs to...Migration: Automation ...RHELPRIO AssignedTeam ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Critical Critical
    • rhel-10.2
    • rhel-9.6, rhel-10.0
    • python-blivet
    • None
    • python-blivet-3.13.0-3.el10
    • None
    • Low
    • Patch, Upstream, TestCaseProvided, EasyFix
    • Customer Facing, Customer Reported
    • rhel-storage-management
    • 11
    • 0
    • False
    • False
    • Hide

      None

      Show
      None
    • No
    • None
    • Bug Fix
    • Hide

      Cause:
      Starting installation on a system with iSCSI with LUN ID >= 256

      Consequence:
      Due to a bug in parsing the LUN ID the installer crashes and installation cannot continue on such systems.

      Fix:
      Logic for parsing iSCSI LUN IDs was fixed to also work with IDs >= 256.

      Result:
      System can be installed on systems with iSCSI with LUN ID >= 256 without issues.
      Show
      Cause: Starting installation on a system with iSCSI with LUN ID >= 256 Consequence: Due to a bug in parsing the LUN ID the installer crashes and installation cannot continue on such systems. Fix: Logic for parsing iSCSI LUN IDs was fixed to also work with IDs >= 256. Result: System can be installed on systems with iSCSI with LUN ID >= 256 without issues.
    • Proposed
    • Unspecified
    • Unspecified
    • Unspecified
    • None

      What were you trying to do that didn't work?

      When installing a system with the harddisk on iSCSI and its LUN is >= 256, a backtrace shows up when converting the LUN string to integer:

      Traceback (most recent call first):
        File "/usr/lib/python3.9/site-packages/dasbus/client/handler.py", line 497, in _handle_method_error
          raise exception from None
        File "/usr/lib/python3.9/site-packages/dasbus/client/handler.py", line 477, in _get_method_reply
          return self._handle_method_error(error)
        File "/usr/lib/python3.9/site-packages/dasbus/client/handler.py", line 444, in _call_method
          return self._get_method_reply(
        File "/usr/lib64/python3.9/site-packages/pyanaconda/modules/common/task/__init__.py", line 47, in sync_run_task
          task_proxy.Finish()
        File "/usr/lib64/python3.9/site-packages/pyanaconda/ui/lib/storage.py", line 261, in try_populate_devicetree
          sync_run_task(task_proxy)
        File "/usr/lib64/python3.9/site-packages/pyanaconda/ui/gui/spokes/advstorage/iscsi.py", line 107, in run
          try_populate_devicetree()
        File "/usr/lib64/python3.9/site-packages/pyanaconda/ui/gui/spokes/advanced_storage.py", line 811, in _run_dialog_and_refresh
          dialog.run()
        File "/usr/lib64/python3.9/site-packages/pyanaconda/ui/gui/spokes/advanced_storage.py", line 784, in on_add_iscsi_clicked
          self._run_dialog_and_refresh(dialog)
      dasbus.error.DBusError: invalid literal for int() with base 10: '0x0101000000000000'
      
      Local variables in innermost frame:
      self: <dasbus.client.handler.ClientObjectHandler object at 0x7fe1fae99460>
      error: g-io-error-quark: GDBus.Error:not.known.Error.ValueError: invalid literal for int() with base 10: '0x0101000000000000' (36)
      name: not.known.Error.ValueError
      cls: <class 'dasbus.error.DBusError'>
      message: invalid literal for int() with base 10: '0x0101000000000000'
      exception: invalid literal for int() with base 10: '0x0101000000000000'
      

      The reason for this is the LUN string isn't decimal, but hexadecimal.
      This hexadecimal comes from systemd udev code:

       58 static int format_lun_number(sd_device *dev, char **path) {
       :
       72         if (lun < 256)
       73                 /* address method 0, peripheral device addressing with bus id of zero */
       74                 path_prepend(path, "lun-%lu", lun);
       75         else
       76                 /* handle all other lun addressing methods by using a variant of the original lun format */
       77                 path_prepend(path, "lun-0x%04lx%04lx00000000", lun & 0xffff, (lun >> 16) & 0xffff);
      

      What is the impact of this issue to you?

      Customers cannot install RHEL9 or RHEL10

      Please provide the package NVR for which the bug is seen:

      python3-blivet-3.6.0-23.el9_6.noarch
      python3-blivet-3.10.0-16.el10_0.noarch
      Upstream python-blivet (see PR 1425 for a fix)

      How reproducible is this bug?

      Always

      Steps to reproduce

      1. Configure a iSCSI target presenting a LUN with ID >= 256

      Expected results

      Can install

      Actual results

      Traceback.

              vtrefny@redhat.com Vojtěch Trefný
              rhn-support-rmetrich Renaud Métrich
              Vojtěch Trefný Vojtěch Trefný
              Release Test Team Release Test Team
              Angana Chakraborty Angana Chakraborty
              Votes:
              0 Vote for this issue
              Watchers:
              8 Start watching this issue

                Created:
                Updated: