Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package yast2-storage-ng for
openSUSE:Factory checked in at 2023-10-22 21:01:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-storage-ng (Old)
and /work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1945 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-storage-ng"
Sun Oct 22 21:01:00 2023 rev:148 rq:1119179 version:5.0.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-storage-ng/yast2-storage-ng.changes
2023-09-28 00:28:14.290613069 +0200
+++
/work/SRC/openSUSE:Factory/.yast2-storage-ng.new.1945/yast2-storage-ng.changes
2023-10-22 21:01:01.491468560 +0200
@@ -1,0 +2,14 @@
+Thu Oct 19 14:46:45 UTC 2023 - Ancor Gonzalez Sosa <[email protected]>
+
+- GuidedProposal: new internal setting to control how existing
+ swap partitions are reused. Relevant for Agama and related to
+ bsc#1175535 and bsc#1215639.
+- 5.0.3
+
+-------------------------------------------------------------------
+Wed Oct 11 08:41:15 UTC 2023 - Ancor Gonzalez Sosa <[email protected]>
+
+- New MdLevel value for linear RAIDs (bsc#1215022)
+- 5.0.2
+
+-------------------------------------------------------------------
Old:
----
yast2-storage-ng-5.0.1.tar.bz2
New:
----
yast2-storage-ng-5.0.3.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-storage-ng.spec ++++++
--- /var/tmp/diff_new_pack.luR8EJ/_old 2023-10-22 21:01:02.435502886 +0200
+++ /var/tmp/diff_new_pack.luR8EJ/_new 2023-10-22 21:01:02.439503032 +0200
@@ -17,7 +17,7 @@
Name: yast2-storage-ng
-Version: 5.0.1
+Version: 5.0.3
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
++++++ yast2-storage-ng-5.0.1.tar.bz2 -> yast2-storage-ng-5.0.3.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/package/yast2-storage-ng.changes
new/yast2-storage-ng-5.0.3/package/yast2-storage-ng.changes
--- old/yast2-storage-ng-5.0.1/package/yast2-storage-ng.changes 2023-09-25
13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/package/yast2-storage-ng.changes 2023-10-20
10:38:38.000000000 +0200
@@ -1,4 +1,18 @@
-------------------------------------------------------------------
+Thu Oct 19 14:46:45 UTC 2023 - Ancor Gonzalez Sosa <[email protected]>
+
+- GuidedProposal: new internal setting to control how existing
+ swap partitions are reused. Relevant for Agama and related to
+ bsc#1175535 and bsc#1215639.
+- 5.0.3
+
+-------------------------------------------------------------------
+Wed Oct 11 08:41:15 UTC 2023 - Ancor Gonzalez Sosa <[email protected]>
+
+- New MdLevel value for linear RAIDs (bsc#1215022)
+- 5.0.2
+
+-------------------------------------------------------------------
Fri Sep 22 08:27:34 UTC 2023 - Ancor Gonzalez Sosa <[email protected]>
- AutoYaST: official support for LUKS2 (jsc#PED-3878, jsc#PED-5518)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-storage-ng-5.0.1/package/yast2-storage-ng.spec
new/yast2-storage-ng-5.0.3/package/yast2-storage-ng.spec
--- old/yast2-storage-ng-5.0.1/package/yast2-storage-ng.spec 2023-09-25
13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/package/yast2-storage-ng.spec 2023-10-20
10:38:38.000000000 +0200
@@ -16,7 +16,7 @@
#
Name: yast2-storage-ng
-Version: 5.0.1
+Version: 5.0.3
Release: 0
Summary: YaST2 - Storage Configuration
License: GPL-2.0-only OR GPL-3.0-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/src/lib/y2storage/autoinst_profile/raid_options_section.rb
new/yast2-storage-ng-5.0.3/src/lib/y2storage/autoinst_profile/raid_options_section.rb
---
old/yast2-storage-ng-5.0.1/src/lib/y2storage/autoinst_profile/raid_options_section.rb
2023-09-25 13:22:58.000000000 +0200
+++
new/yast2-storage-ng-5.0.3/src/lib/y2storage/autoinst_profile/raid_options_section.rb
2023-10-20 10:38:38.000000000 +0200
@@ -90,7 +90,7 @@
# @param md [Md] RAID device
def init_from_raid(md)
@raid_name = md.name unless md.numeric?
- @raid_type = md.md_level.to_s
+ @raid_type = clone_md_level(md).to_s
# A number will be interpreted as KB, so we explicitly set the unit.
@chunk_size = "#{md.chunk_size.to_i}B"
@parity_algorithm = md.md_parity.to_s
@@ -109,6 +109,23 @@
MdParity.find_with_legacy(parity_algorithm)
end
+
+ private
+
+ # MD level to be used at {#init_from_raid}
+ #
+ # This is a temporary method, created in the context of bsc#1215022, to
avoid creating
+ # entries with "<raid_type>linear</raid_type>" in the AutoYaST profile
when cloning the
+ # system. That may lead to the false impression that creation of linear
RAIDs with YaST
+ # is supported.
+ #
+ # In more modern branches, the case of linear RAIDs will probably be
handled differently.
+ #
+ # @param md [Md] RAID device
+ # @return [MdLevel]
+ def clone_md_level(md)
+ md.md_level.is?(:linear) ? MdLevel::UNKNOWN : md.md_level
+ end
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-storage-ng-5.0.1/src/lib/y2storage/md_level.rb
new/yast2-storage-ng-5.0.3/src/lib/y2storage/md_level.rb
--- old/yast2-storage-ng-5.0.1/src/lib/y2storage/md_level.rb 2023-09-25
13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/src/lib/y2storage/md_level.rb 2023-10-20
10:38:38.000000000 +0200
@@ -38,7 +38,9 @@
raid5: N_("RAID5"),
raid6: N_("RAID6"),
raid10: N_("RAID10"),
- container: N_("Container")
+ container: N_("Container"),
+ # TRANSLATOR: RAID level for linear RAIDs
+ linear: N_("Linear")
}
private_constant :TRANSLATIONS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/src/lib/y2storage/proposal/devices_planner.rb
new/yast2-storage-ng-5.0.3/src/lib/y2storage/proposal/devices_planner.rb
--- old/yast2-storage-ng-5.0.1/src/lib/y2storage/proposal/devices_planner.rb
2023-09-25 13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/src/lib/y2storage/proposal/devices_planner.rb
2023-10-20 10:38:38.000000000 +0200
@@ -93,21 +93,40 @@
# @param required_size [DiskSize]
# @return [Partition]
def reusable_swap(required_size)
- return nil if settings.use_lvm || settings.use_encryption
+ return nil unless try_to_reuse_swap?
partitions = available_swap_partitions
- partitions.select! { |part| part.size >= required_size }
+ partitions.select! { |part| can_be_reused?(part, required_size) }
# Use #name in case of #size tie to provide stable sorting
partitions.min_by { |part| [part.size, part.name] }
end
- # Returns all avaiable swap partitions
+ # Returns all available and acceptable swap partitions
#
# @return [Array<Partition>]
def available_swap_partitions
devicegraph.partitions.select(&:swap?)
end
+ # Whether it makes sense to try to reuse existing swap partitions
+ #
+ # @return [Boolean]
+ def try_to_reuse_swap?
+ !settings.use_lvm && !settings.use_encryption && settings.swap_reuse
!= :none
+ end
+
+ # Whether it is acceptable to reuse the given swap partition
+ #
+ # @param partition [Partition]
+ # @param required_size [DiskSize]
+ # @return [Boolean]
+ def can_be_reused?(partition, required_size)
+ return false if partition.size < required_size
+ return true unless settings.swap_reuse == :candidate
+
+ settings.candidate_devices.include?(partition.partitionable.name)
+ end
+
# Delete shadowed subvolumes from each planned device
# @param planned_devices [Array<Planned::Device>] devices that have been
planned
def remove_shadowed_subvolumes(planned_devices)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/src/lib/y2storage/proposal_settings.rb
new/yast2-storage-ng-5.0.3/src/lib/y2storage/proposal_settings.rb
--- old/yast2-storage-ng-5.0.1/src/lib/y2storage/proposal_settings.rb
2023-09-25 13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/src/lib/y2storage/proposal_settings.rb
2023-10-20 10:38:38.000000000 +0200
@@ -62,6 +62,15 @@
# available candidate devices.
attr_accessor :multidisk_first
+ # Criteria to use if it is possible to reuse an existing swap partition
+ #
+ # * :any reuse a suitable swap partition from any disk, default
historical behavior of YaST
+ # * :none do not reuse existing swap partitions
+ # * :candidate reuse a suitable partition only if it is located in a
candidate disk
+ #
+ # @return [:any, :none, :candidate]
+ attr_accessor :swap_reuse
+
# Device name of the disk in which '/' must be placed.
#
# If it's set to nil and {#allocate_volume_mode} is :auto, the proposal
will try
@@ -388,6 +397,7 @@
other_delete_mode: :ondemand,
resize_windows: true,
separate_vgs: false,
+ swap_reuse: :any,
volumes: [],
windows_delete_mode: :ondemand
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/test/data/devicegraphs/autoyast_drive_examples.yml
new/yast2-storage-ng-5.0.3/test/data/devicegraphs/autoyast_drive_examples.yml
---
old/yast2-storage-ng-5.0.1/test/data/devicegraphs/autoyast_drive_examples.yml
2023-09-25 13:22:58.000000000 +0200
+++
new/yast2-storage-ng-5.0.3/test/data/devicegraphs/autoyast_drive_examples.yml
2023-10-20 10:38:38.000000000 +0200
@@ -40,9 +40,9 @@
- partition:
size: 1 GiB
name: /dev/dasdb1
+ id: swap
file_system: swap
- mount_point: swap
- label: swap
+ label: swap_dasdb
- partition:
size: 6 GiB
@@ -73,8 +73,7 @@
name: /dev/sdc2
id: swap
file_system: swap
- mount_point: swap
- label: swap
+ label: swap_sdc
- partition:
size: 20 GiB
@@ -162,7 +161,7 @@
type: logical
id: swap
file_system: swap
- mount_point: swap
+ label: swap_sdd
- partition:
size: 10 GiB
@@ -215,6 +214,7 @@
type: logical
id: swap
file_system: swap
+ label: swap_sdf
- partition:
size: 10 GiB
@@ -265,8 +265,7 @@
name: /dev/sdaa2
id: swap
file_system: swap
- mount_point: swap
- label: swap
+ label: swap_sdaa
- partition:
size: 20 GiB
@@ -328,7 +327,7 @@
name: /dev/sdh3
id: swap
file_system: swap
- mount_point: swap
+ label: swap_sdh
# Btrfs with default_subvolume set to ""
- disk:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/yast2-storage-ng-5.0.1/test/spec_helper.rb
new/yast2-storage-ng-5.0.3/test/spec_helper.rb
--- old/yast2-storage-ng-5.0.1/test/spec_helper.rb 2023-09-25
13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/test/spec_helper.rb 2023-10-20
10:38:38.000000000 +0200
@@ -136,6 +136,9 @@
end
end
+ allow(Y2Storage::HWInfoReader.instance).to receive(:for_device)
+ .and_return Y2Storage::HWInfoDisk.new
+
# Bcache is only supported for x86_64 architecture. Probing the
devicegraph complains if Bcache is
# used with another architecture. Bcache error is avoided here. Otherwise,
x86_84 architecture must
# to be set for every test using Bcache (which has demonstrated to be
quite error prone).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/test/y2storage/hwinfo_reader_test.rb
new/yast2-storage-ng-5.0.3/test/y2storage/hwinfo_reader_test.rb
--- old/yast2-storage-ng-5.0.1/test/y2storage/hwinfo_reader_test.rb
2023-09-25 13:22:58.000000000 +0200
+++ new/yast2-storage-ng-5.0.3/test/y2storage/hwinfo_reader_test.rb
2023-10-20 10:38:38.000000000 +0200
@@ -29,6 +29,9 @@
let(:hwinfo_file) { "hwinfo.txt" }
before do
+ # Disable the global mock that normally prevents calls to hwinfo
+ allow(reader).to receive(:for_device).and_call_original
+
allow(Yast::Execute).to receive(:on_target!)
.with(/hwinfo/, anything, anything, anything).and_return(hwinfo_output)
reader.reset
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/yast2-storage-ng-5.0.1/test/y2storage/proposal_swap_reuse_test.rb
new/yast2-storage-ng-5.0.3/test/y2storage/proposal_swap_reuse_test.rb
--- old/yast2-storage-ng-5.0.1/test/y2storage/proposal_swap_reuse_test.rb
1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-storage-ng-5.0.3/test/y2storage/proposal_swap_reuse_test.rb
2023-10-20 10:38:38.000000000 +0200
@@ -0,0 +1,147 @@
+#!/usr/bin/env rspec
+# Copyright (c) [2023] SUSE LLC
+#
+# All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as published
+# by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, contact SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require_relative "spec_helper"
+require "storage"
+require "y2storage"
+require_relative "#{TEST_PATH}/support/proposal_examples"
+require_relative "#{TEST_PATH}/support/proposal_context"
+
+describe Y2Storage::GuidedProposal do
+ describe "#propose in a system with pre-existing swap partitions" do
+ subject(:proposal) { described_class.new(settings: settings) }
+
+ include_context "proposal"
+ let(:architecture) { :x86 }
+ let(:settings_format) { :ng }
+ let(:control_file_content) do
+ { "partitioning" => { "volumes" => volumes } }
+ end
+
+ let(:scenario) { "autoyast_drive_examples" }
+
+ let(:volumes) { [root_vol, swap_vol] }
+ let(:root_vol) do
+ { "mount_point" => "/", "fs_type" => "xfs", "min_size" => "5 GiB",
"max_size" => "30 GiB" }
+ end
+ let(:swap_vol) do
+ { "mount_point" => "swap", "fs_type" => "swap", "min_size" => "500 MiB",
"max_size" => "2 GiB" }
+ end
+
+ RSpec.shared_examples "reuse best swap" do
+ it "reuses the pre-existing swap with more suitable size" do
+ proposal.propose
+ dasdb1 = proposal.devices.find_by_name("/dev/dasdb1")
+ expect(dasdb1.exists_in_probed?).to eq true
+ expect(dasdb1).to have_attributes(
+ # This proves is mounted as swap
+ filesystem_mountpoint: "swap",
+ # This proves is not re-formatted
+ filesystem_label: "swap_dasdb",
+ size: Y2Storage::DiskSize.GiB(1)
+ )
+ end
+ end
+
+ RSpec.shared_examples "new swap" do
+ it "creates a new swap partition" do
+ proposal.propose
+ swap = proposal.devices.partitions.find { |p| p.filesystem&.mount_path
== "swap" }
+ expect(swap.exists_in_probed?).to eq false
+ # All preexisting partitions have some label
+ expect(swap.filesystem.label).to be_empty
+ end
+ end
+
+ before { settings.candidate_devices = [candidate] }
+
+ context "when swap_reuse is set to :any" do
+ before { settings.swap_reuse = :any }
+
+ context "and there is no swap in the candidate devices" do
+ let(:candidate) { "/dev/sda" }
+
+ include_examples "reuse best swap"
+ end
+
+ context "and there is a swap device (not the best regarding size) in the
candidate devices" do
+ let(:candidate) { "/dev/sdc" }
+
+ include_examples "reuse best swap"
+ end
+
+ context "and the best swap device in the candidate devices" do
+ let(:candidate) { "/dev/dasdb" }
+
+ include_examples "reuse best swap"
+ end
+ end
+
+ context "when swap_reuse is set to :none" do
+ before { settings.swap_reuse = :none }
+
+ context "and there is no swap in the candidate devices" do
+ let(:candidate) { "/dev/sda" }
+
+ include_examples "new swap"
+ end
+
+ context "and there is a swap device (not the biggest one) in the
candidate devices" do
+ let(:candidate) { "/dev/sdc" }
+
+ include_examples "new swap"
+ end
+
+ context "and the biggest swap device in the candidate devices" do
+ let(:candidate) { "/dev/dasdb" }
+
+ include_examples "new swap"
+ end
+ end
+
+ context "when swap_reuse is set to :candidate" do
+ before { settings.swap_reuse = :candidate }
+
+ context "and there is no swap in the candidate devices" do
+ let(:candidate) { "/dev/sda" }
+
+ include_examples "new swap"
+ end
+
+ context "and there is a swap device (not the biggest one) in the
candidate devices" do
+ let(:candidate) { "/dev/sdc" }
+
+ it "reuses the swap partition from the candidate devices" do
+ proposal.propose
+ swap = proposal.devices.partitions.find { |p|
p.filesystem&.mount_path == "swap" }
+ expect(swap.exists_in_probed?).to eq true
+ expect(swap.name).to eq "/dev/sdc2"
+ expect(swap.filesystem.label).to eq "swap_sdc"
+ end
+ end
+
+ context "and the biggest swap device in the candidate devices" do
+ let(:candidate) { "/dev/dasdb" }
+
+ include_examples "reuse best swap"
+ end
+ end
+ end
+end