Hello community,

here is the log from the commit of package yast2-tune for openSUSE:Factory 
checked in at 2020-12-21 12:34:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-tune (Old)
 and      /work/SRC/openSUSE:Factory/.yast2-tune.new.5145 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "yast2-tune"

Mon Dec 21 12:34:47 2020 rev:68 rq:856741 version:4.3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-tune/yast2-tune.changes    2020-04-11 
23:45:26.807039539 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-tune.new.5145/yast2-tune.changes  
2020-12-21 12:34:48.666884021 +0100
@@ -1,0 +2,12 @@
+Thu Dec 17 16:04:32 UTC 2020 - Steffen Winterfeldt <[email protected]>
+
+- remove elevator settings (bsc#1178797)
+- 4.3.1
+
+-------------------------------------------------------------------
+Thu Dec 17 15:13:33 UTC 2020 - Steffen Winterfeldt <[email protected]>
+
+- add I/O device autoconfig checkbox on s390 (bsc#1168036)
+- 4.3.0
+
+-------------------------------------------------------------------

Old:
----
  yast2-tune-4.2.3.tar.bz2

New:
----
  yast2-tune-4.3.1.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ yast2-tune.spec ++++++
--- /var/tmp/diff_new_pack.ujuyRa/_old  2020-12-21 12:34:49.214884471 +0100
+++ /var/tmp/diff_new_pack.ujuyRa/_new  2020-12-21 12:34:49.218884474 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package yast2-tune
 #
-# Copyright (c) 2020 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,17 +12,17 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           yast2-tune
-Version:        4.2.3
+Version:        4.3.1
 Release:        0
 Summary:        YaST2 - Hardware Tuning
 License:        GPL-2.0-or-later
 Group:          System/YaST
-Url:            https://github.com/yast/yast-tune
+URL:            https://github.com/yast/yast-tune
 
 Source0:        %{name}-%{version}.tar.bz2
 

++++++ yast2-tune-4.2.3.tar.bz2 -> yast2-tune-4.3.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/.github/workflows/ci.yml 
new/yast2-tune-4.3.1/.github/workflows/ci.yml
--- old/yast2-tune-4.2.3/.github/workflows/ci.yml       1970-01-01 
01:00:00.000000000 +0100
+++ new/yast2-tune-4.3.1/.github/workflows/ci.yml       2020-12-17 
18:50:19.000000000 +0100
@@ -0,0 +1,83 @@
+
+# See 
https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
+
+name: CI
+
+on: [push, pull_request]
+
+jobs:
+  Tests:
+    runs-on: ubuntu-latest
+    container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+
+    steps:
+
+    - name: Git Checkout
+      uses: actions/checkout@v2
+
+    # just for easier debugging...
+    - name: Inspect Installed Packages
+      run: rpm -qa | sort
+
+    - name: Unit Tests
+      run: rake test:unit
+      # enable code coverage reporting
+      env:
+        COVERAGE: 1
+
+    # send the coverage report to coveralls.io
+    - name: Coveralls Report
+      uses: coverallsapp/github-action@master
+      with:
+        github-token: ${{ secrets.GITHUB_TOKEN }}
+
+  # FIXME: Rubocop is not used here
+  # Rubocop:
+  #   runs-on: ubuntu-latest
+  #   container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+
+  #   steps:
+
+  #   - name: Git Checkout
+  #     uses: actions/checkout@v2
+
+  #   - name: Rubocop
+  #     run: rake check:rubocop
+
+  Package:
+    runs-on: ubuntu-latest
+    container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+
+    steps:
+
+    - name: Git Checkout
+      uses: actions/checkout@v2
+
+    - name: Package Build
+      run: yast-ci-ruby -o package
+
+  Yardoc:
+    runs-on: ubuntu-latest
+    container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+
+    steps:
+
+    - name: Git Checkout
+      uses: actions/checkout@v2
+
+    - name: Yardoc
+      run: rake check:doc
+
+  # downloading the Docker image takes some time so bundling several fast
+  # checks into one job avoids that overhead
+  Checks:
+    runs-on: ubuntu-latest
+    container: registry.opensuse.org/yast/head/containers/yast-ruby:latest
+
+    steps:
+
+    - name: Git Checkout
+      uses: actions/checkout@v2
+
+    - name: POT Check
+      run: rake check:pot
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/.travis.yml 
new/yast2-tune-4.3.1/.travis.yml
--- old/yast2-tune-4.2.3/.travis.yml    2020-04-07 12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/.travis.yml    1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-sudo: required
-language: bash
-services:
-  - docker
-
-before_install:
-  - docker build -t yast-tune-image .
-  # list the installed packages (just for easier debugging)
-  - docker run --rm -it yast-tune-image rpm -qa | sort
-
-script:
-  # the "yast-travis-ruby" script is included in the base yastdevel/ruby image
-  # see https://github.com/yast/docker-yast-ruby/blob/master/yast-travis-ruby
-  - docker run -it -e TRAVIS=1 -e TRAVIS_JOB_ID="$TRAVIS_JOB_ID" 
yast-tune-image yast-travis-ruby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/Dockerfile 
new/yast2-tune-4.3.1/Dockerfile
--- old/yast2-tune-4.2.3/Dockerfile     2020-04-07 12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/Dockerfile     1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-FROM registry.opensuse.org/yast/head/containers/yast-ruby:latest
-COPY . /usr/src/app
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/README.md 
new/yast2-tune-4.3.1/README.md
--- old/yast2-tune-4.2.3/README.md      2020-04-07 12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/README.md      2020-12-17 18:50:19.000000000 +0100
@@ -1,5 +1,6 @@
 # YaST - The Tune Module #
 
-[![Travis 
Build](https://travis-ci.org/yast/yast-tune.svg?branch=master)](https://travis-ci.org/yast/yast-tune)
-[![Jenkins 
Build](http://img.shields.io/jenkins/s/https/ci.opensuse.org/yast-tune-master.svg)](https://ci.opensuse.org/view/Yast/job/yast-tune-master/)
-
+[![Workflow 
Status](https://github.com/yast/yast-tune/workflows/CI/badge.svg?branch=master)](
+https://github.com/yast/yast-tune/actions?query=branch%3Amaster)
+[![Jenkins 
Status](https://ci.opensuse.org/buildStatus/icon?job=yast-yast-tune-master)](
+https://ci.opensuse.org/view/Yast/job/yast-yast-tune-master/)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/package/yast2-tune.changes 
new/yast2-tune-4.3.1/package/yast2-tune.changes
--- old/yast2-tune-4.2.3/package/yast2-tune.changes     2020-04-07 
12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/package/yast2-tune.changes     2020-12-17 
18:50:19.000000000 +0100
@@ -1,4 +1,16 @@
 -------------------------------------------------------------------
+Thu Dec 17 16:04:32 UTC 2020 - Steffen Winterfeldt <[email protected]>
+
+- remove elevator settings (bsc#1178797)
+- 4.3.1
+
+-------------------------------------------------------------------
+Thu Dec 17 15:13:33 UTC 2020 - Steffen Winterfeldt <[email protected]>
+
+- add I/O device autoconfig checkbox on s390 (bsc#1168036)
+- 4.3.0
+
+-------------------------------------------------------------------
 Mon Feb 24 15:10:14 CET 2020 - [email protected]
 
 - Using SysctlConfig class: Handle sysctl entries in different
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/package/yast2-tune.spec 
new/yast2-tune-4.3.1/package/yast2-tune.spec
--- old/yast2-tune-4.2.3/package/yast2-tune.spec        2020-04-07 
12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/package/yast2-tune.spec        2020-12-17 
18:50:19.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           yast2-tune
-Version:        4.2.3
+Version:        4.3.1
 Release:        0
 Summary:        YaST2 - Hardware Tuning
 License:        GPL-2.0-or-later
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-tune-4.2.3/src/include/hwinfo/system_settings_dialogs.rb 
new/yast2-tune-4.3.1/src/include/hwinfo/system_settings_dialogs.rb
--- old/yast2-tune-4.2.3/src/include/hwinfo/system_settings_dialogs.rb  
2020-04-07 12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/src/include/hwinfo/system_settings_dialogs.rb  
2020-12-17 18:50:19.000000000 +0100
@@ -31,6 +31,17 @@
 
       @contents = VBox("tab")
 
+      # whether to show I/O device autoconfig checkbox
+      has_autoconf = Arch.s390
+
+      kernel_widget_names = ["sysrq"]
+      kernel_widgets = [VSpacing(1), Left("sysrq")]
+
+      if has_autoconf
+        kernel_widget_names << "autoconf"
+        kernel_widgets << VSpacing(1) << Left("autoconf")
+      end
+
       @tabs_descr = {
         "pci_id"          => {
           "header"       => NewPCIIDDialogCaption(),
@@ -46,12 +57,12 @@
           "contents"     => VBox(
             HBox(
               HSpacing(1),
-              VBox(VSpacing(0.3), Left("elevator"), VSpacing(1), 
Left("sysrq")),
+              VBox(*kernel_widgets),
               HSpacing(1)
             ),
             VStretch()
           ),
-          "widget_names" => ["elevator", "sysrq"]
+          "widget_names" => kernel_widget_names
         }
       }
 
@@ -72,58 +83,6 @@
             "symbol (string, map)"
           )
         },
-        # /usr/src/linux/Documentation/kernel-parameters.txt
-        # http://www.redhat.com/magazine/008jun05/features/schedulers/
-        #
-        # elevator=    [IOSCHED]
-        #              Format: {"cfq"|"deadline"|"noop"}
-        #              See Documentation/block/as-iosched.txt
-        #              and Documentation/block/deadline-iosched.txt for 
details.
-        #
-        #      'deadline' =>   Deadline. Database servers, especially those 
using "TCQ" disks should
-        #                      investigate performance with the 'deadline' IO 
scheduler. Any system with high
-        #                      disk performance requirements should do so, in 
fact.
-        #      'noop' => NOOP
-        #      'cfq' => Completely Fair Queuing (the default)
-        "elevator"                 => {
-          "widget"        => :custom,
-          # combo box label
-          "custom_widget" => ComboBox(
-            Id("elevator"),
-            _("Global &I/O Scheduler"),
-            [
-              # combo box item - I/O scheduler
-              Item(Id(""), _("Not Configured")),
-              # combo box item - I/O scheduler, do not translate the 
abbreviation in brackets
-              Item(Id("cfq"), _("Completely Fair Queuing [cfq]")),
-              # combo box item - I/O scheduler, do not translate the 
abbreviation in brackets
-              Item(Id("noop"), _("NOOP [noop]")),
-              # combo box item - I/O scheduler, do not translate the 
abbreviation in brackets
-              Item(Id("deadline"), _("Deadline [deadline]"))
-            ]
-          ),
-          "handle"        => fun_ref(
-            method(:HandleElevatorSettings),
-            "symbol (string, map)"
-          ),
-          "init"          => fun_ref(
-            method(:InitElevatorSettings),
-            "void (string)"
-          ),
-          "store"         => fun_ref(
-            method(:StoreElevatorSettings),
-            "void (string, map)"
-          ),
-          # help text for the scheduler widget, do not translate 'cfq'
-          "help"          => _(
-            "<p><b><big>Global I/O Scheduler</big></b><br>\n" +
-              "Select the algorithm which orders and sends commands to disk\n" 
+
-              "devices. This is a global option, it will be used for all disk 
devices in the\n" +
-              "system. If the option is not configured, the default scheduler 
(usually 'cfq')\n" +
-              "will be used. See the documentation in the 
/usr/src/linux/Documentation/block\n" +
-              "directory (package kernel-source) for more information.</p>\n"
-          )
-        },
         # .sysconfig.sysctl
         "sysrq"                    => {
           "widget" => :checkbox,
@@ -139,6 +98,17 @@
               "computer, dump kernel information). For further information, 
see\n" +
               "<tt>/usr/src/linux/Documentation/sysrq.txt</tt> (package 
kernel-source).</p>\n"
           )
+        },
+        "autoconf"                    => {
+          "widget" => :checkbox,
+          "label"  => _("Enable I/O device auto-configuration"),
+          "store"  => fun_ref(method(:StoreAutoConfSettings), "void (string, 
map)"),
+          "init"   => fun_ref(method(:InitAutoConfSettings), "void (string)"),
+          "help"   => _(
+            "<p><b><big>Enable I/O device auto-configuration</big></b><br>\n" +
+            "Disable <b>I/O device auto-configuration</b>\n" +
+            "if you don't want any existing I/O auto-configuration data to be 
applied.</p>\n"
+          )
         }
       }
     end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/yast2-tune-4.2.3/src/include/hwinfo/system_settings_ui.rb 
new/yast2-tune-4.3.1/src/include/hwinfo/system_settings_ui.rb
--- old/yast2-tune-4.2.3/src/include/hwinfo/system_settings_ui.rb       
2020-04-07 12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/src/include/hwinfo/system_settings_ui.rb       
2020-12-17 18:50:19.000000000 +0100
@@ -119,44 +119,39 @@
       :next
     end
 
-
-    def HandleElevatorSettings(key, event)
-      event = deep_copy(event)
-      Builtins.y2milestone("Key: %1, Event: %2", key, event)
-      nil
-    end
-
-    def InitElevatorSettings(value)
+    def InitSysRqSettings(key)
       Wizard.DisableBackButton
-      UI.ChangeWidget(Id("elevator"), :Value, SystemSettings.GetIOScheduler)
+      UI.ChangeWidget(Id("sysrq"), :Value, SystemSettings.GetSysRqKeysEnabled)
 
       nil
     end
 
-    def StoreElevatorSettings(key, event)
+    def StoreSysRqSettings(key, event)
       event = deep_copy(event)
       Builtins.y2milestone("Key: %1, Event: %2", key, event)
-      elevator_new = Convert.to_string(UI.QueryWidget(Id("elevator"), :Value))
 
-      SystemSettings.SetIOScheduler(elevator_new)
+      sysrq_new = Convert.to_boolean(UI.QueryWidget(Id("sysrq"), :Value))
+      if SystemSettings.GetSysRqKeysEnabled != sysrq_new
+        SystemSettings.SetSysRqKeysEnabled(sysrq_new)
+      end
 
       nil
     end
 
-    def InitSysRqSettings(key)
+    def InitAutoConfSettings(key)
       Wizard.DisableBackButton
-      UI.ChangeWidget(Id("sysrq"), :Value, SystemSettings.GetSysRqKeysEnabled)
+      UI.ChangeWidget(Id("autoconf"), :Value, SystemSettings.GetAutoConf)
 
       nil
     end
 
-    def StoreSysRqSettings(key, event)
+    def StoreAutoConfSettings(key, event)
       event = deep_copy(event)
       Builtins.y2milestone("Key: %1, Event: %2", key, event)
 
-      sysrq_new = Convert.to_boolean(UI.QueryWidget(Id("sysrq"), :Value))
-      if SystemSettings.GetSysRqKeysEnabled != sysrq_new
-        SystemSettings.SetSysRqKeysEnabled(sysrq_new)
+      autoconf_new = Convert.to_boolean(UI.QueryWidget(Id("autoconf"), :Value))
+      if SystemSettings.GetAutoConf != autoconf_new
+        SystemSettings.SetAutoConf(autoconf_new)
       end
 
       nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/src/modules/SystemSettings.rb 
new/yast2-tune-4.3.1/src/modules/SystemSettings.rb
--- old/yast2-tune-4.2.3/src/modules/SystemSettings.rb  2020-04-07 
12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/src/modules/SystemSettings.rb  2020-12-17 
18:50:19.000000000 +0100
@@ -24,26 +24,14 @@
       Yast.import "Mode"
 
       # Internal Data
-      @elevator      = nil
       @enable_sysrq  = nil
       @kernel_sysrq  = nil
       @sysctl_config = nil
       @sysctl_sysrq  = nil
+      @autoconf      = true
       @modified      = false
     end
 
-    # Known values of the 'elevator' variable
-    ELEVATORS = ["cfq", "noop", "deadline"].freeze
-
-    # Return the possible values to be used as elevators/schedulers
-    #
-    # @return [Array<String>] Know elevators/schedulers
-    #
-    # @see ELEVATORS
-    def GetPossibleElevatorValues
-      ELEVATORS
-    end
-
     # Determine if the module was modified
     def Modified
       log.info("Modified: #{@modified}")
@@ -53,12 +41,11 @@
     # Read system settings
     #
     # @see #read_sysrq
-    # @see #read_scheduler
+    # @see #read_autoconf
     def Read
       read_sysrq
-      ret = read_scheduler
+      read_autoconf
 
-      return false unless ret
       @modified = false
       true
     end
@@ -66,44 +53,20 @@
     # Activate settings
     #
     # @see #activate_sysrq
-    # @see #activate_scheduler
+    # @see #activate_autoconf
     def Activate
       activate_sysrq
-      activate_scheduler
+      activate_autoconf
+
       true
     end
 
     # Write settings to system configuration
     def Write
       write_sysrq
-      write_scheduler
-    end
-
-    # Return the kernel IO scheduler
-    #
-    # The scheduler is specified as the 'elevator' kernel parameter.
-    # If not scheduler is set, it will return an empty string.
-    #
-    # @return [String] IO scheduler name or empty string if not set
-    def GetIOScheduler
-      @elevator
-    end
-
-    # Set IO scheduler
-    #
-    # @param scheduler [String] IO scheduler
-    def SetIOScheduler(scheduler)
-      # empty string = use the default scheduler
-      if valid_scheduler?(scheduler) || scheduler == ""
-        if GetIOScheduler() != scheduler
-          @modified = true
-          @elevator = scheduler
-        end
-      else
-        log.error("unknown IO scheduler '#{scheduler}', use: 
#{GetPossibleElevatorValues()}")
-      end
+      write_autoconf
 
-      nil
+      true
     end
 
     # Determine if SysRq keys are enabled
@@ -131,15 +94,34 @@
       nil
     end
 
-    publish function: :GetPossibleElevatorValues, type: "list <string> ()"
+    # Determine current I/O device autoconf setting
+    #
+    # @return [Boolean] true if enabled; false otherwise.
+    def GetAutoConf
+      log.info "GetAutoConf = #{@autoconf}"
+      @autoconf
+    end
+
+    # Set I/O device autoconf status
+    #
+    # @param value [Boolean] true to enable; false to disable
+    def SetAutoConf(value)
+      if value != @autoconf
+        @modified = true
+        @autoconf = value
+      end
+
+      nil
+    end
+
     publish function: :Modified, type: "boolean ()"
     publish function: :Read, type: "boolean ()"
     publish function: :Activate, type: "boolean ()"
     publish function: :Write, type: "boolean ()"
-    publish function: :GetIOScheduler, type: "string ()"
-    publish function: :SetIOScheduler, type: "void (string)"
     publish function: :GetSysRqKeysEnabled, type: "boolean ()"
     publish function: :SetSysRqKeysEnabled, type: "void (boolean)"
+    publish function: :GetAutoConf, type: "boolean ()"
+    publish function: :SetAutoConf, type: "void (boolean)"
 
   protected
 
@@ -190,39 +172,6 @@
       @sysctl_sysrq
     end
 
-    # Determine if a string is a valid scheduler name
-    #
-    # @return [Boolean] true if it's valid; false otherwise.
-    def valid_scheduler?(elevator)
-      GetPossibleElevatorValues().include?(elevator)
-    end
-
-    # Determine the current scheduler from the system
-    #
-    # @return [String] IO Scheduler name; if it's not valid/set, it will 
return an empty string
-    def current_elevator
-      # get 'elevator' option from the default section
-      elevator_parameter = Bootloader.kernel_param(:common, "elevator")
-      log.info("elevator_parameter: #{elevator_parameter}")
-
-      if elevator_parameter == :missing    # Variable is not set
-        ""
-      elsif elevator_parameter == :present # Variable is set but has not 
parameter
-        log.info("'elevator' variable has to have some value")
-        ""
-      elsif !valid_scheduler?(elevator_parameter.to_s) # Variable is set but 
hasn't any known value
-        log.warn(
-          format("'elevator' variable has to have a value from %s instead of 
being set to %s",
-            GetPossibleElevatorValues(),
-            elevator_parameter
-          )
-        )
-        ""
-      else
-        elevator_parameter.to_s
-      end
-    end
-
     # Activate SysRq keys configuration
     #
     # @see enable_sysrq
@@ -236,73 +185,15 @@
       File.write(KERNEL_SYSRQ_FILE, "#{enable_sysrq}\n")
     end
 
-    # Activate IO scheduler
-    #
-    # @see activate_scheduler
-    def activate_scheduler
-      return unless GetIOScheduler()
-
-      new_elevator = GetIOScheduler() == "" ? :missing : GetIOScheduler()
-      log.info("Activating scheduler: #{new_elevator}")
-      # set the scheduler
-      Bootloader.modify_kernel_params("elevator" => new_elevator)
-      # set bootloader configuration as 'changed' (bsc#968192)
-      Bootloader.proposed_cfg_changed = true
-
-      # activate the scheduler for all disk devices
-      return if new_elevator == :missing
-      Dir["/sys/block/*/queue/scheduler"].each do |f|
-        # skip devices which do not support the selected scheduler,
-        # keep the original scheduler
-        next unless device_supports_scheduler(f, new_elevator)
-
-        log.info("Activating scheduler '#{new_elevator}' for device #{f}")
-        File.write(f, new_elevator)
-      end
-    end
-
-    # read available schedulers for the device
-    # @param device [String] path to device scheduler file
-    # @return [Array<String>] read schedulers from the file
-    def read_device_schedulers(device)
-      schedulers = File.read(device).split(/\s+/).map do |sched|
-        # remove the current scheduler marks [] around the name
-        sched[0] == "[" && sched [-1] == "]" ? sched[1..-2] : sched
-      end
-
-      log.info("Available schedulers for #{device}: #{schedulers}")
-
-      schedulers
-    end
-
-    # does the device support support the scheduler?
-    # @param device [String] path to device scheduler file
-    # @param scheduler [String] name of the requested scheduler
-    # @return [Boolean] true if supported
-    def device_supports_scheduler(device, scheduler)
-      schedulers = read_device_schedulers(device)
-      schedulers.include?(scheduler)
-    end
-
-    # Read IO scheduler configuration updating the module's value
-    #
-    # @see Read
-    #
-    # @return [Boolean] false if there is a problem reading the bootloader; 
true otherwise
-    def read_scheduler
-      # Try to read the bootloader settings in normal mode.
-      # If there is a problem, the user will be warned directly by the 
bootloader module.
-      if Mode.normal
-        bootloader_read = Bootloader.Read
-
-        return false unless bootloader_read
+    # Activate I/O device autoconf setting
+    def activate_autoconf
+      if @autoconf
+        log.info("removing rd.zdev kernel parameter")
+        Bootloader.modify_kernel_params("rd.zdev" => :missing)
+      else
+        log.info("adding rd.zdev=no-auto kernel parameter")
+        Bootloader.modify_kernel_params("rd.zdev" => "no-auto")
       end
-
-      # Set IO scheduler
-      SetIOScheduler(current_elevator)
-      log.info("Global IO scheduler: #{GetIOScheduler()}")
-
-      true
     end
 
     # Read SysRq keys configuration updating the module's value
@@ -333,16 +224,23 @@
       sysctl_config.save unless sysctl_config.conflict?
     end
 
-    # Write IO Scheduler settings
+    # Read I/O device autoconfig settings
+    def read_autoconf
+      rd_zdev = Bootloader.kernel_param(:common, "rd.zdev")
+      log.info "current rd.zdev setting: rd.zdev=#{rd_zdev.inspect}"
+
+      @autoconf = rd_zdev != "no-auto"
+    end
+
+    # Write I/O device autoconfig settings
     #
     # This method only has effect during normal mode. During installation,
     # bootloader configuration is written at the end of the first stage.
     #
     # @see Bootloader#Write
     # @see Write
-    def write_scheduler
+    def write_autoconf
       Bootloader.Write if Mode.normal
-      true
     end
 
   private
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/test/system_settings_test.rb 
new/yast2-tune-4.3.1/test/system_settings_test.rb
--- old/yast2-tune-4.2.3/test/system_settings_test.rb   2020-04-07 
12:54:05.000000000 +0200
+++ new/yast2-tune-4.3.1/test/system_settings_test.rb   2020-12-17 
18:50:19.000000000 +0100
@@ -9,26 +9,20 @@
   KERNEL_SYSRQ_FILE = "/proc/sys/kernel/sysrq"
 
   subject(:settings) { Yast::SystemSettings }
-  let(:scheduler)     { "cfq" }
+  let(:rd_zdev)       { "no-auto" }
   let(:sysctl_config) { CFA::SysctlConfig.new }
 
   before do
     allow(File).to receive(:exist?).and_return(true)
     allow(Yast::Bootloader).to receive(:Read)
     allow(Yast::Bootloader).to receive(:kernel_param)
-      .with(:common, "elevator").and_return(scheduler)
+      .with(:common, "rd.zdev").and_return(rd_zdev)
     allow(CFA::SysctlConfig).to receive(:new).and_return(sysctl_config)
     allow(sysctl_config).to receive(:load)
     allow(sysctl_config).to receive(:save)
     settings.main
   end
 
-  describe "#GetPossibleElevatorValues" do
-    it "returns an array with possible schedulers" do
-      expect(settings.GetPossibleElevatorValues).to match_array(["cfq", 
"noop", "deadline"])
-    end
-  end
-
   describe "#Read" do
     let(:kernel_sysrq)  { "1" }
     let(:sysctl_sysrq)  { "1" }
@@ -39,7 +33,7 @@
       allow(File).to receive(:read).with(KERNEL_SYSRQ_FILE)
         .and_return(kernel_sysrq)
       allow(Yast::Bootloader).to receive(:kernel_param)
-        .with(:common, "elevator").and_return(scheduler)
+        .with(:common, "rd.zdev").and_return(rd_zdev)
       allow(Yast::Mode).to receive(:mode).and_return(mode)
     end
 
@@ -71,93 +65,34 @@
       end
     end
 
-    context "when is in normal mode" do
-      before do
-        allow(Yast::Bootloader).to receive(:Read).and_return(bootloader_read)
-      end
-
-      context "and the bootloader can be read" do
-        let(:bootloader_read) { true }
-
-        it "returns true" do
-          expect(settings.Read).to eq(true)
-        end
-
-        context "when scheduler parameter is missing" do
-          let(:scheduler) { :missing }
-
-          it "unsets IO scheduler" do
-            settings.Read
-            expect(settings.GetIOScheduler).to eq("")
-          end
-        end
-
-        context "when scheduler parameter is present but does not have a 
value" do
-          let(:scheduler) { :present }
-
-          it "unsets IO scheduler" do
-            settings.Read
-            expect(settings.GetIOScheduler).to eq("")
-          end
-        end
-
-        context "when scheduler parameter has a valid value" do
-          it "sets IO scheduler to that value" do
-            settings.Read
-            expect(settings.GetIOScheduler).to eq(scheduler)
-          end
-        end
+    context "when rd.zdev kernel option is set" do
+      let(:rd_zdev) { "no-auto" }
 
-        context "when scheduler parameter has an invalid value" do
-          let(:scheduler) { "some-scheduler" }
-
-          it "unsets IO scheduler" do
-            settings.Read
-            expect(settings.GetIOScheduler).to eq("")
-          end
-        end
-
-        it "reads bootloader configuration" do
-          expect(Yast::Bootloader).to receive(:Read)
-          settings.Read
-        end
-      end
-
-      context "but the bootloader cannot be read" do
-        let(:bootloader_read) { false }
-
-        it "returns false" do
-          expect(settings.Read).to eq(false)
-        end
-
-        it "does not set the scheduler" do
-          expect(subject).to_not receive(:SetIOScheduler)
-        end
+      it "I/O autoconfig is disabled" do
+        settings.Read
+        expect(settings.GetAutoConf).to eq(false)
       end
     end
 
-    context "is not in normal mode" do
-      let(:mode) { "installation" }
+    context "when rd.zdev kernel option is not set" do
+      let(:rd_zdev) { :missing }
 
-      it "does not read bootloader configuration" do
-        expect(Yast::Bootloader).to_not receive(:Read)
+      it "I/O autoconfig is enabled" do
         settings.Read
+        expect(settings.GetAutoConf).to eq(true)
       end
     end
   end
 
   describe "#Activate" do
     let(:sysrq_keys) { false }
-    let(:scheduler)  { "" }
-    let(:disk)       { "/sys/block/sda/queue/scheduler" }
-    let(:disk2)      { "/sys/block/sdb/queue/scheduler" }
 
     before do
       settings.SetSysRqKeysEnabled(sysrq_keys)
-      settings.SetIOScheduler(scheduler)
+      allow(File).to receive(:write).with(KERNEL_SYSRQ_FILE, anything)
       allow(Yast::Bootloader).to receive(:modify_kernel_params)
       allow(Yast::Bootloader).to receive(:proposed_cfg_changed=)
-      allow(Dir).to receive(:[]).with(/scheduler/).and_return([disk, disk2])
+      allow(Dir).to 
receive(:[]).with("/usr/share/YaST2/locale/*").and_return([])
     end
 
     context "when SysRq keys status is unknown" do
@@ -184,55 +119,20 @@
       end
     end
 
-    context "when a scheduler is set" do
-      let(:scheduler) { "cfq" }
-
-      before do
-        allow(File).to receive(:write).with(KERNEL_SYSRQ_FILE, anything)
-        allow(File).to receive(:read).with(disk).and_return("noop deadline 
[cfq]")
-        allow(File).to receive(:read).with(disk2).and_return("noop deadline 
[cfq]")
-      end
-
-      it "updates bootloader configuration" do
+    context "when I/O device autoconfig is enabled" do
+      it "removes rd.zdev kernel option" do
         expect(Yast::Bootloader).to receive(:modify_kernel_params)
-          .with("elevator" => scheduler)
-        expect(Yast::Bootloader).to receive(:proposed_cfg_changed=).with(true)
-        allow(File).to receive(:write)
-        settings.Activate
-      end
-
-      it "activates scheduler for all disk devices" do
-        expect(File).to receive(:write).with(disk, scheduler)
-        expect(File).to receive(:write).with(disk2, scheduler)
-        settings.Activate
-      end
-
-      it "does not activate the scheduler if the device does not support it" do
-        # make the "cfq" scheduler unsupported
-        expect(File).to receive(:read).with(disk2).and_return("[mq-deadline] 
none")
-        expect(File).to receive(:write).with(disk, scheduler)
-        # ensure it is not changed
-        expect(File).to_not receive(:write).with(disk2, scheduler)
+          .with("rd.zdev" => :missing)
+        settings.SetAutoConf(true)
         settings.Activate
       end
     end
 
-    context "when no scheduler is set" do
-      let(:scheduler) { "" }
-
-      before do
-        allow(File).to receive(:write).with(KERNEL_SYSRQ_FILE, anything)
-      end
-
-      it "removes parameter from bootloader configuration" do
+    context "when I/O device autoconfig is disabled" do
+      it "sets rd.zdev kernel option to no-auto" do
         expect(Yast::Bootloader).to receive(:modify_kernel_params)
-          .with("elevator" => :missing)
-        expect(Yast::Bootloader).to receive(:proposed_cfg_changed=).with(true)
-        settings.Activate
-      end
-
-      it "does not activate scheduler" do
-        expect(File).to_not receive(:write).with(disk, anything)
+          .with("rd.zdev" => "no-auto")
+        settings.SetAutoConf(false)
         settings.Activate
       end
     end
@@ -292,39 +192,6 @@
       end
     end
   end
-
-  describe "#SetIOScheduler" do
-    context "when scheduler is a known one" do
-      it "sets the scheduler to the given value" do
-        settings.SetIOScheduler("cfq")
-        expect(settings.GetIOScheduler).to eq("cfq")
-      end
-    end
-
-    context "when scheduler is unknown" do
-      before do
-        settings.SetIOScheduler("cfq")
-      end
-
-      it "does not modify the scheduler" do
-        settings.SetIOScheduler("some-scheduler")
-        expect(settings.GetIOScheduler).to eq("cfq")
-      end
-    end
-
-    context "when new scheduler is different from previous one" do
-      before do
-        allow(Yast::Bootloader).to receive(:kernel_param)
-          .with(:common, "elevator").and_return("cfq")
-        settings.Read
-      end
-
-      it "sets the module as modified" do
-        expect { settings.SetIOScheduler("noop") }.to change { 
settings.Modified }
-          .from(false).to(true)
-      end
-    end
-  end
 
   describe "#SetSysRqKeysEnabled" do
     before do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/yast2-tune-4.2.3/test/test_helper.rb 
new/yast2-tune-4.3.1/test/test_helper.rb
--- old/yast2-tune-4.2.3/test/test_helper.rb    2020-04-07 12:54:05.000000000 
+0200
+++ new/yast2-tune-4.3.1/test/test_helper.rb    2020-12-17 18:50:19.000000000 
+0100
@@ -1,6 +1,15 @@
 ENV["Y2DIR"] = File.expand_path("../../src", __FILE__)
 
 require "yast"
+require "yast/rspec"
+
+RSpec.configure do |config|
+  config.mock_with :rspec do |mocks|
+    # make sure we mock only the existing methods
+    mocks.verify_partial_doubles = true
+  end
+end
+
 
 if ENV["COVERAGE"]
   require "simplecov"
@@ -12,12 +21,20 @@
   # track all ruby files under src
   SimpleCov.track_files("#{src_location}/**/*.rb")
 
-  # use coveralls for on-line code coverage reporting at Travis CI
-  if ENV["TRAVIS"]
-    require "coveralls"
+  # additionally use the LCOV format for on-line code coverage reporting at CI
+  if ENV["CI"] || ENV["COVERAGE_LCOV"]
+    require "simplecov-lcov"
+
+    SimpleCov::Formatter::LcovFormatter.config do |c|
+      c.report_with_single_file = true
+      # this is the default Coveralls GitHub Action location
+      # https://github.com/marketplace/actions/coveralls-github-action
+      c.single_report_path = "coverage/lcov.info"
+    end
+
     SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
       SimpleCov::Formatter::HTMLFormatter,
-      Coveralls::SimpleCov::Formatter
+      SimpleCov::Formatter::LcovFormatter
     ]
   end
 end
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to