Mailinglist Archive: opensuse-commit (1903 mails)

< Previous Next >
commit libstorage-ng for openSUSE:Factory
Hello community,

here is the log from the commit of package libstorage-ng for openSUSE:Factory
checked in at 2019-04-28 20:00:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
and /work/SRC/openSUSE:Factory/.libstorage-ng.new.5536 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libstorage-ng"

Sun Apr 28 20:00:24 2019 rev:53 rq:698282 version:4.1.117

Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes
2019-04-22 12:24:08.868921631 +0200
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.5536/libstorage-ng.changes
2019-04-28 20:00:27.406898622 +0200
@@ -1,0 +2,37 @@
+Fri Apr 26 14:52:00 UTC 2019 - aschnell@xxxxxxx
+
+- merge gh#openSUSE/libstorage-ng#643
+- extended documentation
+- 4.1.117
+
+--------------------------------------------------------------------
+Fri Apr 26 05:37:31 UTC 2019 - aschnell@xxxxxxxx
+
+- merge gh#openSUSE/libstorage-ng#642
+- added documentation about multiple devices btrfs
+- added example
+- 4.1.116
+
+--------------------------------------------------------------------
+Thu Apr 25 13:00:12 UTC 2019 - aschnell@xxxxxxx
+
+- merge gh#openSUSE/libstorage-ng#641
+- handle mixed mode in output of 'btrfs filesystem df'
+- 4.1.115
+
+--------------------------------------------------------------------
+Thu Apr 25 08:48:39 UTC 2019 - aschnell@xxxxxxx
+
+- merge gh#openSUSE/libstorage-ng#640
+- parse UUID in output of mkfs.btrfs
+- fixed exception message
+- 4.1.114
+
+--------------------------------------------------------------------
+Tue Apr 23 06:39:03 UTC 2019 - lslezak@xxxxxxx
+
+- merge gh#openSUSE/libstorage-ng#639
+- Use the Docker image from OBS
+- 4.1.113
+
+--------------------------------------------------------------------

Old:
----
libstorage-ng-4.1.112.tar.xz

New:
----
libstorage-ng-4.1.117.tar.xz

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

Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.79wwPI/_old 2019-04-28 20:00:28.634897882 +0200
+++ /var/tmp/diff_new_pack.79wwPI/_new 2019-04-28 20:00:28.642897877 +0200
@@ -18,7 +18,7 @@

%define libname %{name}1
Name: libstorage-ng
-Version: 4.1.112
+Version: 4.1.117
Release: 0
Summary: Library for storage management
License: GPL-2.0-only

++++++ libstorage-ng-4.1.112.tar.xz -> libstorage-ng-4.1.117.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libstorage-ng-4.1.112/Dockerfile
new/libstorage-ng-4.1.117/Dockerfile
--- old/libstorage-ng-4.1.112/Dockerfile 2019-04-18 18:02:17.000000000
+0200
+++ new/libstorage-ng-4.1.117/Dockerfile 2019-04-26 16:52:00.000000000
+0200
@@ -1,2 +1,2 @@
-FROM yastdevel/libstorage-ng
+FROM registry.opensuse.org/yast/head/containers/libstorage-ng:latest
COPY . /usr/src/app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libstorage-ng-4.1.112/VERSION
new/libstorage-ng-4.1.117/VERSION
--- old/libstorage-ng-4.1.112/VERSION 2019-04-18 18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/VERSION 2019-04-26 16:52:00.000000000 +0200
@@ -1 +1 @@
-4.1.112
+4.1.117
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libstorage-ng-4.1.112/doc/btrfs-multiple-devices.md
new/libstorage-ng-4.1.117/doc/btrfs-multiple-devices.md
--- old/libstorage-ng-4.1.112/doc/btrfs-multiple-devices.md 1970-01-01
01:00:00.000000000 +0100
+++ new/libstorage-ng-4.1.117/doc/btrfs-multiple-devices.md 2019-04-26
16:52:00.000000000 +0200
@@ -0,0 +1,123 @@
+
+Multiple Devices Btrfs
+======================
+
+
+Create Btrfs
+------------
+
+Before creating a multiple devices btrfs the metadata and data RAID
+level can be set. The value DEFAULT will not pass a RAID level to
+mkfs.btrfs thus mkfs.btrfs will decide the RAID level.
+
+When using the "--mixed" option (via set_mkfs_options()) the metadata
+and data RAID level must be identical.
+
+
+Mounting Degraded Btrfs
+-----------------------
+
+Mounting a degraded btrfs requires the 'degraded' mount option.
+
+Using the 'degraded' mount option in /etc/fstab by default was not recommended
+by btrfs experts (on IRC).
+
+To be decided: What should be done during probing with degraded btrfses?
+
+The 'degraded' option is a nop if no devices are missing.
+
+
+Querying RAID Levels
+--------------------
+
+The RAID levels can be queried using get_{metadata,data}_raid_level().
+
+During a balance job to change the RAID level the RAID level as
+reported by btrfs can be a combination of RAID levels. In that case
+get_{metadata,data}_raid_level() returns only one of the reported RAID
+levels.
+
+
+Changing RAID Levels
+--------------------
+
+Changing the RAID levels required running btrfs balance job.
+
+ btrfs balance start -dconvert=raid1,soft -mconvert=raid1,soft /test
+
+Changing the RAID levels can require copying huge amounts of data so is
+potentially very time consuming. Usually such operations are not supported by
+libstorage-ng.
+
+As a benefit the balance can be started in the background. But this fails if
+there is already a balance job running (without an error message from the
+btrfs command). The system does not provide a way to queue balance jobs and it
+should not be the task of libstorage-ng to implement such a way.
+
+The balance job can also fail due to missing space. When run in the background
+reporting that to the user is not possible (the balance job starts and simply
+fails later).
+
+If the filesystem needs to be mounted temporarily for the balance job,
+starting the balance job in the background would prevent unmounting. Normally
+this should be a minor problem since the philosophy of btrfs is to be always
+mounted. But during installation this could be problematic.
+
+Thus operations requiring a balance job are not supported.
+
+
+Adding a Device
+---------------
+
+Adding a device to an existing btrfs is easy.
+
+ btrfs device add /dev/sdc1 /test
+
+Sometimes after that the RAID levels should be changed, e.g. from DUP
+to RAID1, but that is not supported (see above).
+
+
+Removing a Device
+-----------------
+
+Removing a device from an existing btrfs is at first sight also easy.
+
+ btrfs device delete /dev/sdc1 /test
+
+"It redistributes any extents in use on the device being removed to the other
+devices in the filesystem" [1]. So this also may be very slow.
+
+Even more problematic is to know in advance whether the operation will
+succeed. It may fail due to two reasons:
+
+1. Minimal number of devices for RAID level.
+
+ Should be easy to check in advance.
+
+2. Not enough free space.
+
+ Using 'btrfs filesystem usage /test' it can be checked how much of a device
+ is used. But how likely is the case that only a few GiB are used? And what
+ happens when removing several devices?
+
+For the time being removing devices is not supported.
+
+
+Resizing a Device
+-----------------
+
+The btrfs command to resize a block device used by btrfs defaults to use the
+devid 1. This must be extended to query the devid and pass it the btrfs (since
+btrfs does not accept the device name here).
+
+Shrinking can again be very slow. Additionally 'btrfs inspect-internal
+min-dev-size [--id 1] /test' still reports wrong values.
+
+For the time being shrinking is not supported.
+
+
+References
+----------
+
+[1] https://btrfs.wiki.kernel.org/index.php/Using_Btrfs_with_Multiple_Devices
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libstorage-ng-4.1.112/doc/btrfs.md
new/libstorage-ng-4.1.117/doc/btrfs.md
--- old/libstorage-ng-4.1.112/doc/btrfs.md 2019-04-18 18:02:17.000000000
+0200
+++ new/libstorage-ng-4.1.117/doc/btrfs.md 2019-04-26 16:52:00.000000000
+0200
@@ -34,3 +34,11 @@
objects when the subvol option is the default subvolume. This behaviour looks
more natural in the SUSE btrfs setup - but may change anytime if required.

+
+Modification to btrfs
+---------------------
+
+Modification to a btrfs filesystem need the filesystem to be
+mounted. libstorage-ng will temporarily mount the filesystem if
+needed.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libstorage-ng-4.1.112/storage/Filesystems/BtrfsImpl.cc
new/libstorage-ng-4.1.117/storage/Filesystems/BtrfsImpl.cc
--- old/libstorage-ng-4.1.112/storage/Filesystems/BtrfsImpl.cc 2019-04-18
18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/storage/Filesystems/BtrfsImpl.cc 2019-04-26
16:52:00.000000000 +0200
@@ -410,7 +410,7 @@
{
// TRANSLATORS: error message
error_callback(prober.get_probe_callbacks(), sformat(_("Probing
file system with UUID %s failed"),
-
detected_btrfs.uuid, exception));
+
detected_btrfs.uuid), exception);
}
}
}
@@ -532,6 +532,26 @@


void
+ Btrfs::Impl::parse_mkfs_output(const vector<string>& stdout)
+ {
+ static const regex uuid_regex("UUID:[ \t]+(" UUID_REGEX ")",
regex::extended);
+
+ smatch match;
+
+ for (const string& line : stdout)
+ {
+ if (regex_match(line, match, uuid_regex) && match.size() == 2)
+ {
+ set_uuid(match[1]);
+ return;
+ }
+ }
+
+ ST_THROW(Exception("UUID not found in output of mkfs.btrfs"));
+ }
+
+
+ void
Btrfs::Impl::do_create()
{
string cmd_line = MKFSBTRFSBIN " --force";
@@ -552,9 +572,7 @@

SystemCmd cmd(cmd_line, SystemCmd::DoThrow);

- // TODO uuid is included in mkfs output
-
- probe_uuid();
+ parse_mkfs_output(cmd.stdout());

// This would fit better in do_mount(), but that one is a const method
// which would not allow to set the snapper_config member variable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libstorage-ng-4.1.112/storage/Filesystems/BtrfsImpl.h
new/libstorage-ng-4.1.117/storage/Filesystems/BtrfsImpl.h
--- old/libstorage-ng-4.1.112/storage/Filesystems/BtrfsImpl.h 2019-04-18
18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/storage/Filesystems/BtrfsImpl.h 2019-04-26
16:52:00.000000000 +0200
@@ -141,6 +141,8 @@

virtual void do_pre_mount() const override;

+ void parse_mkfs_output(const vector<string>& stdout);
+
private:

bool configure_snapper;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/libstorage-ng-4.1.112/storage/SystemInfo/CmdBtrfs.cc
new/libstorage-ng-4.1.117/storage/SystemInfo/CmdBtrfs.cc
--- old/libstorage-ng-4.1.112/storage/SystemInfo/CmdBtrfs.cc 2019-04-18
18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/storage/SystemInfo/CmdBtrfs.cc 2019-04-26
16:52:00.000000000 +0200
@@ -294,6 +294,7 @@
{
static const regex metadata_rx("Metadata, ([A-Za-z0-9]+):.*",
regex::extended);
static const regex data_rx("Data, ([A-Za-z0-9]+):.*", regex::extended);
+ static const regex mixed_rx("Data\\+Metadata, ([A-Za-z0-9]+):.*",
regex::extended);

smatch match;

@@ -310,6 +311,12 @@
string tmp = boost::to_upper_copy(match[1].str(),
locale::classic());
data_raid_level = toValueWithFallback(tmp,
BtrfsRaidLevel::UNKNOWN);
}
+
+ if (regex_match(line, match, mixed_rx) && match.size() == 2)
+ {
+ string tmp = boost::to_upper_copy(match[1].str(),
locale::classic());
+ metadata_raid_level = data_raid_level =
toValueWithFallback(tmp, BtrfsRaidLevel::UNKNOWN);
+ }
}

y2mil(*this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libstorage-ng-4.1.112/testsuite/SystemInfo/btrfs-filesystem-df.cc
new/libstorage-ng-4.1.117/testsuite/SystemInfo/btrfs-filesystem-df.cc
--- old/libstorage-ng-4.1.112/testsuite/SystemInfo/btrfs-filesystem-df.cc
2019-04-18 18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/testsuite/SystemInfo/btrfs-filesystem-df.cc
2019-04-26 16:52:00.000000000 +0200
@@ -49,7 +49,6 @@
"System, DUP: total=8.00MiB, used=16.00KiB",
"Metadata, DUP: total=102.25MiB, used=112.00KiB",
"GlobalReserve, single: total=16.00MiB, used=0.00B"
-
};

vector<string> output = {
@@ -57,4 +56,49 @@
};

check(input, output);
+}
+
+
+/*
+ * In mixed mode metadata and data are identical and reported
+ * together.
+ */
+BOOST_AUTO_TEST_CASE(parse2)
+{
+ vector<string> input = {
+ "System, single: total=4.00MiB, used=4.00KiB",
+ "Data+Metadata, single: total=840.00MiB, used=220.00KiB",
+ "GlobalReserve, single: total=16.00MiB, used=0.00B"
+ };
+
+ vector<string> output = {
+ "metadata-raid-level:SINGLE data-raid-level:SINGLE"
+ };
+
+ check(input, output);
+}
+
+
+/*
+ * During a balance job to convert the RAID level several RAID levels
+ * can be reported. Since this is only an interim state is not handle
+ * it all its beauty. Instead just the last reported RAID level is
+ * used.
+ */
+BOOST_AUTO_TEST_CASE(parse3)
+{
+ vector<string> input = {
+ "Data, RAID10: total=4.00GiB, used=3.35GiB",
+ "Data, RAID5: total=3.00GiB, used=509.71MiB",
+ "System, RAID10: total=64.00MiB, used=16.00KiB",
+ "Metadata, RAID10: total=512.00MiB, used=247.55MiB",
+ "Metadata, RAID5: total=288.00MiB, used=5.56MiB",
+ "GlobalReserve, single: total=23.91MiB, used=0.00B"
+ };
+
+ vector<string> output = {
+ "metadata-raid-level:RAID5 data-raid-level:RAID5"
+ };
+
+ check(input, output);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libstorage-ng-4.1.112/testsuite/actions/btrfs1-mockup.xml
new/libstorage-ng-4.1.117/testsuite/actions/btrfs1-mockup.xml
--- old/libstorage-ng-4.1.112/testsuite/actions/btrfs1-mockup.xml
2019-04-18 18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/testsuite/actions/btrfs1-mockup.xml
2019-04-26 16:52:00.000000000 +0200
@@ -5,11 +5,28 @@
<name>/sbin/udevadm settle --timeout=20</name>
</Command>
<Command>
- <name>/sbin/mkfs.btrfs --force --metadata=RAID1 --data=RAID0 --mixed
'/dev/sda' '/dev/sdb' '/dev/sdc' '/dev/sdd'</name>
- </Command>
- <Command>
- <name>/sbin/blkid -c '/dev/null' '/dev/sda'</name>
- <stdout>/dev/sda: UUID="318eac77-bbe5-40b4-a8fd-b30ec45d0003"
UUID_SUB="b62c72f0-2798-4a79-8307-c07a3781fbb2" TYPE="btrfs"</stdout>
+ <name>/sbin/mkfs.btrfs --force --metadata=RAID1 --data=RAID0 --nodiscard
'/dev/sda' '/dev/sdb' '/dev/sdc' '/dev/sdd'</name>
+ <stdout>btrfs-progs v4.19.1 </stdout>
+ <stdout>See http://btrfs.wiki.kernel.org for more information.</stdout>
+ <stdout></stdout>
+ <stdout>Label: (null)</stdout>
+ <stdout>UUID: 318eac77-bbe5-40b4-a8fd-b30ec45d0003</stdout>
+ <stdout>Node size: 16384</stdout>
+ <stdout>Sector size: 4096</stdout>
+ <stdout>Filesystem size: 31.99GiB</stdout>
+ <stdout>Block group profiles:</stdout>
+ <stdout> Data: RAID0 3.20GiB</stdout>
+ <stdout> Metadata: RAID1 1.00GiB</stdout>
+ <stdout> System: RAID1 8.00MiB</stdout>
+ <stdout>SSD detected: no</stdout>
+ <stdout>Incompat features: extref, skinny-metadata</stdout>
+ <stdout>Number of devices: 4</stdout>
+ <stdout>Devices:</stdout>
+ <stdout> ID SIZE PATH</stdout>
+ <stdout> 1 8.00GiB /dev/sda</stdout>
+ <stdout> 2 8.00GiB /dev/sdb</stdout>
+ <stdout> 3 8.00GiB /dev/sdc</stdout>
+ <stdout> 4 8.00GiB /dev/sdd</stdout>
</Command>
</Commands>
</Mockup>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/libstorage-ng-4.1.112/testsuite/actions/btrfs1-staging.xml
new/libstorage-ng-4.1.117/testsuite/actions/btrfs1-staging.xml
--- old/libstorage-ng-4.1.112/testsuite/actions/btrfs1-staging.xml
2019-04-18 18:02:17.000000000 +0200
+++ new/libstorage-ng-4.1.117/testsuite/actions/btrfs1-staging.xml
2019-04-26 16:52:00.000000000 +0200
@@ -81,7 +81,7 @@
<sid>46</sid>
<metadata-raid-level>RAID1</metadata-raid-level>
<data-raid-level>RAID0</data-raid-level>
- <mkfs-options>--mixed</mkfs-options>
+ <mkfs-options>--nodiscard</mkfs-options>
</Btrfs>
<BtrfsSubvolume>
<sid>47</sid>


< Previous Next >
This Thread