Hello community,

here is the log from the commit of package libstorage-ng for openSUSE:Factory 
checked in at 2020-07-09 13:16:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
 and      /work/SRC/openSUSE:Factory/.libstorage-ng.new.3060 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libstorage-ng"

Thu Jul  9 13:16:18 2020 rev:88 rq:819128 version:4.3.34

Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes      
2020-07-01 14:26:08.342664124 +0200
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.3060/libstorage-ng.changes    
2020-07-09 13:16:20.520695864 +0200
@@ -1,0 +2,18 @@
+Tue Jul 7 07:02:14 UTC 2020 - [email protected]
+
+- merge gh#openSUSE/libstorage-ng#760
+- minor code improvements
+- 4.3.34
+
+--------------------------------------------------------------------
+Mon Jul 6 11:12:00 UTC 2020 - [email protected]
+
+- merge gh#openSUSE/libstorage-ng#759
+- experimental support for RAID journal device
+- extended documentation
+- added unit test
+- extended integration tests
+- coding style
+- 4.3.33
+
+--------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.uezmRv/_old  2020-07-09 13:16:21.076697621 +0200
+++ /var/tmp/diff_new_pack.uezmRv/_new  2020-07-09 13:16:21.080697633 +0200
@@ -18,7 +18,7 @@
 
 %define libname %{name}1
 Name:           libstorage-ng
-Version:        4.3.32
+Version:        4.3.34
 Release:        0
 Summary:        Library for storage management
 License:        GPL-2.0-only

++++++ libstorage-ng-4.3.32.tar.xz -> libstorage-ng-4.3.34.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/LIBVERSION 
new/libstorage-ng-4.3.34/LIBVERSION
--- old/libstorage-ng-4.3.32/LIBVERSION 2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/LIBVERSION 2020-07-07 09:02:14.000000000 +0200
@@ -1 +1 @@
-1.41.0
+1.42.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/VERSION 
new/libstorage-ng-4.3.34/VERSION
--- old/libstorage-ng-4.3.32/VERSION    2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/VERSION    2020-07-07 09:02:14.000000000 +0200
@@ -1 +1 @@
-4.3.32
+4.3.34
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/bindings/storage-catches.i 
new/libstorage-ng-4.3.34/bindings/storage-catches.i
--- old/libstorage-ng-4.3.32/bindings/storage-catches.i 2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/bindings/storage-catches.i 2020-07-07 
09:02:14.000000000 +0200
@@ -298,6 +298,9 @@
 %catches(storage::Exception) storage::MdMember::get_md_container() const;
 %catches(storage::HolderAlreadyExists) 
storage::MdSubdevice::create(Devicegraph *devicegraph, const Device *source, 
const Device *target);
 %catches(storage::HolderAlreadyExists) storage::MdUser::create(Devicegraph 
*devicegraph, const Device *source, const Device *target);
+%catches(storage::Exception) storage::MdUser::set_faulty(bool faulty);
+%catches(storage::Exception) storage::MdUser::set_journal(bool journal);
+%catches(storage::Exception) storage::MdUser::set_spare(bool spare);
 %catches(storage::InvalidMountPointPath) 
storage::MountPoint::create(Devicegraph *devicegraph, const std::string &path);
 %catches(storage::Exception) storage::MountPoint::get_filesystem();
 %catches(storage::Exception) storage::MountPoint::get_filesystem() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/doc/status.md 
new/libstorage-ng-4.3.34/doc/status.md
--- old/libstorage-ng-4.3.32/doc/status.md      2020-06-30 14:38:47.000000000 
+0200
+++ new/libstorage-ng-4.3.34/doc/status.md      2020-07-07 09:02:14.000000000 
+0200
@@ -89,7 +89,6 @@
 * LUKS2 integrity (experimental in cryptsetup).
 
 
-
 MD RAID
 -------
 
@@ -101,6 +100,10 @@
 * Handling of /etc/mdadm.conf.
 * IMSM and DDF.
 
+Missing:
+
+* Journal device (untested).
+
 
 DM RAID
 -------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/integration-tests/pools/create-raid5.py 
new/libstorage-ng-4.3.34/integration-tests/pools/create-raid5.py
--- old/libstorage-ng-4.3.32/integration-tests/pools/create-raid5.py    
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/integration-tests/pools/create-raid5.py    
2020-07-07 09:02:14.000000000 +0200
@@ -1,6 +1,6 @@
 #!/usr/bin/python3
 
-# requirements: at least three HDDs with free space
+# requirements: at least three HDDs and one SSD with free space
 
 
 from storage import *
@@ -16,23 +16,29 @@
 
 storage.generate_pools(storage.get_probed())
 
-pool = storage.get_pool("HDDs (512 B)")
+hdds_pool = storage.get_pool("HDDs (512 B)")
+ssds_pool = storage.get_pool("SSDs (512 B)")
 
 staging = storage.get_staging()
 
 try:
-    devices = pool.create_partitions(staging, 3, 2 * GiB)
+    devices = hdds_pool.create_partitions(staging, 3, 2 * GiB)
+    journal = ssds_pool.create_partitions(staging, 1, 128 * MiB)[0]
 except PoolOutOfSpace as exception:
     print(exception.what())
     exit(1)
 
 md = Md.create(staging, Md.find_free_numeric_name(staging))
 md.set_md_level(MdLevel_RAID5)
+md.set_metadata("1.2")
 
 for device in devices:
     md.add_device(device)
     device.set_id(ID_RAID)
 
+md.add_device(journal).set_journal(True)
+journal.set_id(ID_RAID)
+
 print(staging)
 
 commit(storage)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/integration-tests/pools/list.py 
new/libstorage-ng-4.3.34/integration-tests/pools/list.py
--- old/libstorage-ng-4.3.32/integration-tests/pools/list.py    2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/integration-tests/pools/list.py    2020-07-07 
09:02:14.000000000 +0200
@@ -11,11 +11,13 @@
 storage = Storage(environment)
 storage.probe()
 
-storage.generate_pools(storage.get_probed())
+probed = storage.get_probed()
+
+storage.generate_pools(probed)
 
 for name in storage.get_pool_names():
     print(name)
 
     pool = storage.get_pool(name)
-    for device in pool.get_devices(storage.get_probed()):
+    for device in pool.get_devices(probed):
         print("    " + device.get_displayname())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/integration-tests/pools/max-size.py 
new/libstorage-ng-4.3.34/integration-tests/pools/max-size.py
--- old/libstorage-ng-4.3.32/integration-tests/pools/max-size.py        
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/integration-tests/pools/max-size.py        
2020-07-07 09:02:14.000000000 +0200
@@ -11,15 +11,18 @@
 storage = Storage(environment)
 storage.probe()
 
-storage.generate_pools(storage.get_probed())
+probed = storage.get_probed()
+
+storage.generate_pools(probed)
 
 pool = storage.get_pool("HDDs (512 B)")
 
-try:
-    max_size = pool.max_partition_size(storage.get_probed(), 2)
-except PoolOutOfSpace as exception:
-    print(exception.what())
-    exit(1)
+for n in range(1, len(pool.get_devices(probed)) + 1):
+
+    try:
+        max_size = pool.max_partition_size(probed, n)
+    except PoolOutOfSpace as exception:
+        print(exception.what())
+        exit(1)
 
-print(max_size)
-print(byte_to_humanstring(max_size, False, 2, True))
+    print(n, max_size, byte_to_humanstring(max_size, False, 2, True))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/ActiongraphImpl.cc 
new/libstorage-ng-4.3.34/storage/ActiongraphImpl.cc
--- old/libstorage-ng-4.3.32/storage/ActiongraphImpl.cc 2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/ActiongraphImpl.cc 2020-07-07 
09:02:14.000000000 +0200
@@ -482,7 +482,7 @@
        if (mounts.size() > 1)
        {
            // TODO correct sort
-           sort(mounts.begin(), mounts.end(), [this, 
&mounts](vertex_descriptor l, vertex_descriptor r) {
+           sort(mounts.begin(), mounts.end(), [this](vertex_descriptor l, 
vertex_descriptor r) {
                const Action::Mount* ml = dynamic_cast<const 
Action::Mount*>(graph[l].get());
                const Action::Mount* mr = dynamic_cast<const 
Action::Mount*>(graph[r].get());
                return ml->get_path(*this) <= mr->get_path(*this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/CompoundAction/Formatter.cc 
new/libstorage-ng-4.3.34/storage/CompoundAction/Formatter.cc
--- old/libstorage-ng-4.3.32/storage/CompoundAction/Formatter.cc        
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/CompoundAction/Formatter.cc        
2020-07-07 09:02:14.000000000 +0200
@@ -44,9 +44,6 @@
     }
 
 
-    CompoundAction::Formatter::~Formatter() {}
-
-
     string
     CompoundAction::Formatter::string_representation() const
     {
@@ -66,9 +63,9 @@
 
             if (create_action)
             {
-                const Device * device = 
create_action->get_device(_compound_action->get_actiongraph()->get_impl());
+                const Device* device = 
create_action->get_device(_compound_action->get_actiongraph()->get_impl());
 
-                if (device &&  device->get_impl().get_classname() == 
device_classname)
+                if (device && device->get_impl().get_classname() == 
device_classname)
                     return true;
             }
         }
@@ -89,9 +86,9 @@
 
             if (delete_action)
             {
-                Device * device = 
delete_action->get_device(_compound_action->get_actiongraph()->get_impl());
+                const Device* device = 
delete_action->get_device(_compound_action->get_actiongraph()->get_impl());
 
-                if (device &&  device->get_impl().get_classname() == 
device_classname)
+                if (device && device->get_impl().get_classname() == 
device_classname)
                     return true;
             }
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/CompoundAction/Formatter.h 
new/libstorage-ng-4.3.34/storage/CompoundAction/Formatter.h
--- old/libstorage-ng-4.3.32/storage/CompoundAction/Formatter.h 2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/CompoundAction/Formatter.h 2020-07-07 
09:02:14.000000000 +0200
@@ -55,7 +55,8 @@
 
        Formatter(const CompoundAction::Impl* compound_action,
                  const string & device_classname = string() );
-       virtual ~Formatter();
+
+       virtual ~Formatter() {}
 
        string string_representation() const;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/CompoundActionImpl.cc 
new/libstorage-ng-4.3.34/storage/CompoundActionImpl.cc
--- old/libstorage-ng-4.3.32/storage/CompoundActionImpl.cc      2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/CompoundActionImpl.cc      2020-07-07 
09:02:14.000000000 +0200
@@ -49,44 +49,13 @@
 {
 
     CompoundAction::Impl::Impl(const Actiongraph* actiongraph)
-    : actiongraph(actiongraph), target_device(nullptr), commit_actions(0)
-    {}
-
-
-    CompoundAction::Impl::~Impl() {}
-
-
-    const Actiongraph*
-    CompoundAction::Impl::get_actiongraph() const
+       : actiongraph(actiongraph), target_device(nullptr), commit_actions()
     {
-       return actiongraph;
     }
 
 
-    void CompoundAction::Impl::set_target_device(const Device* device)
-    {
-       this->target_device = device;
-    }
-
-
-    const Device* CompoundAction::Impl::get_target_device() const
-    {
-       return target_device;
-    }
-
-    void CompoundAction::Impl::set_commit_actions(vector<const Action::Base*> 
actions)
-    {
-       this->commit_actions = actions;
-    }
-
-
-    vector<const Action::Base*> CompoundAction::Impl::get_commit_actions() 
const
-    {
-       return commit_actions;
-    }
-
-
-    void CompoundAction::Impl::add_commit_action(const Action::Base* action)
+    void
+    CompoundAction::Impl::add_commit_action(const Action::Base* action)
     {
        commit_actions.push_back(action);
     }
@@ -256,7 +225,6 @@
        try
        {
            return action->get_device(actiongraph->get_impl(), RHS);
-
        }
        catch(const DeviceNotFound& exception)
        {
@@ -294,4 +262,3 @@
     }
 
 }
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/CompoundActionImpl.h 
new/libstorage-ng-4.3.34/storage/CompoundActionImpl.h
--- old/libstorage-ng-4.3.32/storage/CompoundActionImpl.h       2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/CompoundActionImpl.h       2020-07-07 
09:02:14.000000000 +0200
@@ -33,7 +33,7 @@
 
 namespace storage
 {
-    
+
     using std::vector;
     using std::string;
 
@@ -48,18 +48,17 @@
     public:
 
        Impl(const Actiongraph* actiongraph);
-       ~Impl();
 
-       const Actiongraph* get_actiongraph() const;
+       const Actiongraph* get_actiongraph() const { return actiongraph; }
 
-       void set_target_device(const Device* device);
-       const Device* get_target_device() const;
+       const Device* get_target_device() const { return target_device; }
+       void set_target_device(const Device* target_device) { 
Impl::target_device = target_device; }
 
-       void set_commit_actions(vector<const Action::Base*> actions);
-       vector<const Action::Base*> get_commit_actions() const; 
+       vector<const Action::Base*> get_commit_actions() const { return 
commit_actions; }
+       void set_commit_actions(vector<const Action::Base*> commit_actions) { 
Impl::commit_actions = commit_actions; }
 
        void add_commit_action(const Action::Base* action);
-    
+
        vector<string> get_commit_actions_as_strings() const;
 
        string sentence() const;
@@ -83,16 +82,15 @@
        static const CompoundAction* find_by_target_device(const Actiongraph* 
actiongraph, const Device* device);
 
     private:
-       
+
        const Actiongraph* actiongraph;
 
        const Device* target_device;
 
        vector<const Action::Base*> commit_actions;
-    
+
     };
 
 }
 
 #endif
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Devices/DiskImpl.cc 
new/libstorage-ng-4.3.34/storage/Devices/DiskImpl.cc
--- old/libstorage-ng-4.3.32/storage/Devices/DiskImpl.cc        2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Devices/DiskImpl.cc        2020-07-07 
09:02:14.000000000 +0200
@@ -24,8 +24,6 @@
 #include <ctype.h>
 
 #include "storage/Devices/DiskImpl.h"
-#include "storage/Devices/MdImpl.h"
-#include "storage/Devices/BcacheImpl.h"
 #include "storage/Devicegraph.h"
 #include "storage/Action.h"
 #include "storage/Storage.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Devices/Md.h 
new/libstorage-ng-4.3.34/storage/Devices/Md.h
--- old/libstorage-ng-4.3.32/storage/Devices/Md.h       2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Devices/Md.h       2020-07-07 
09:02:14.000000000 +0200
@@ -184,13 +184,13 @@
        void set_uuid(const std::string& uuid);
 
        /**
-        * A string like "1.0" for Linux RAID, "imsm" or "ddf" for BIOS RAID
+        * A string like "1.0" or "1.2" for Linux RAID, "imsm" or "ddf" for 
BIOS RAID
         * containers and empty for BIOS RAID members.
         */
        const std::string& get_metadata() const;
 
        /**
-        * Currently create always uses metadata 1.0.
+        * Currently only creating metadata 1.0 is supported. Although others 
might work.
         */
        void set_metadata(const std::string& metadata);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Devices/MdImpl.cc 
new/libstorage-ng-4.3.34/storage/Devices/MdImpl.cc
--- old/libstorage-ng-4.3.32/storage/Devices/MdImpl.cc  2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Devices/MdImpl.cc  2020-07-07 
09:02:14.000000000 +0200
@@ -458,6 +458,7 @@
                MdUser* md_user = MdUser::create(system, a, b);
                md_user->set_spare(device.spare);
                md_user->set_faulty(device.faulty);
+               md_user->set_journal(device.journal);
            });
        }
     }
@@ -793,7 +794,7 @@
 
        return std::count_if(devices.begin(), devices.end(), [](const 
BlkDevice* blk_device) {
            const MdUser* md_user = 
blk_device->get_impl().get_single_out_holder_of_type<const MdUser>();
-           return !md_user->is_spare();
+           return !md_user->is_spare() && !md_user->is_journal();
        });
     }
 
@@ -842,6 +843,7 @@
 
            const MdUser* md_user = 
blk_device->get_impl().get_single_out_holder_of_type<const MdUser>();
            bool spare = md_user->is_spare();
+           bool journal = md_user->is_journal();
 
            // metadata for version 1.0 is 4 KiB block at end aligned to 4 KiB,
            // https://raid.wiki.kernel.org/index.php/RAID_superblock_formats
@@ -859,13 +861,16 @@
            if (rest > 0)
                size -= rest;
 
-           if (!spare)
+           if (!spare && !journal)
            {
                number++;
                sum += size;
            }
 
-           smallest = min(smallest, size);
+           if (!journal)
+           {
+               smallest = min(smallest, size);
+           }
        }
 
        unsigned long long size = 0;
@@ -959,47 +964,59 @@
        // Note: Changing any parameter to "mdadm --create' requires the
        // function calculate_region_and_topology() to be checked!
 
-       string cmd_line = MDADM_BIN " --create " + quote(get_name()) + " --run 
--level=" +
-           boost::to_lower_copy(toString(md_level), locale::classic()) + " 
--metadata=1.0"
-           " --homehost=any";
-
-       if (md_level == MdLevel::RAID1 || md_level == MdLevel::RAID4 ||
-           md_level == MdLevel::RAID5 || md_level == MdLevel::RAID6 ||
-           md_level == MdLevel::RAID10)
-           cmd_line += " --bitmap=internal";
-
-       if (chunk_size > 0)
-           cmd_line += " --chunk=" + to_string(chunk_size / KiB);
-
-       if (md_parity != MdParity::DEFAULT)
-           cmd_line += " --parity=" + toString(md_parity);
-
        // place devices in multimaps to sort them according to the sort-key
 
        multimap<unsigned int, string> devices;
        multimap<unsigned int, string> spares;
+       vector<string> journals;
 
        for (const BlkDevice* blk_device : get_devices())
        {
            const MdUser* md_user = 
blk_device->get_impl().get_single_out_holder_of_type<const MdUser>();
 
-           if (!md_user->is_spare())
-               devices.insert(make_pair(md_user->get_sort_key(), 
blk_device->get_name()));
-           else
+           if (md_user->is_spare())
                spares.insert(make_pair(md_user->get_sort_key(), 
blk_device->get_name()));
+           else if (md_user->is_journal())
+               journals.push_back(blk_device->get_name());
+           else
+               devices.insert(make_pair(md_user->get_sort_key(), 
blk_device->get_name()));
        }
 
+       if (devices.empty())
+           ST_THROW(Exception("no devices"));
+
+       if (journals.size() > 1)
+           ST_THROW(Exception("only one journal device allowed"));
+
+       string cmd_line = MDADM_BIN " --create " + quote(get_name()) + " --run 
--level=" +
+           boost::to_lower_copy(toString(md_level), locale::classic()) + " 
--metadata=" +
+           (metadata.empty() ? "1.0" : metadata) + " --homehost=any";
+
+       if ((md_level == MdLevel::RAID1 || md_level == MdLevel::RAID4 ||
+            md_level == MdLevel::RAID5 || md_level == MdLevel::RAID6 ||
+            md_level == MdLevel::RAID10) && journals.empty())
+           cmd_line += " --bitmap=internal";
+
+       if (chunk_size > 0)
+           cmd_line += " --chunk=" + to_string(chunk_size / KiB);
+
+       if (md_parity != MdParity::DEFAULT)
+           cmd_line += " --parity=" + toString(md_parity);
+
        cmd_line += " --raid-devices=" + to_string(devices.size());
 
        if (!spares.empty())
            cmd_line += " --spare-devices=" + to_string(spares.size());
 
-       for (const pair<unsigned int, string>& value : devices)
+       for (const pair<const unsigned int, string>& value : devices)
            cmd_line += " " + quote(value.second);
 
-       for (const pair<unsigned int, string>& value : spares)
+       for (const pair<const unsigned int, string>& value : spares)
            cmd_line += " " + quote(value.second);
 
+       if (!journals.empty())
+           cmd_line += " --write-journal=" + quote(journals.front());
+
        wait_for_devices(std::add_const<const 
Md::Impl&>::type(*this).get_devices());
        // wait_for_devices(std::as_const(*this).get_devices()); // C++17
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/Devices/PlainEncryptionImpl.cc 
new/libstorage-ng-4.3.34/storage/Devices/PlainEncryptionImpl.cc
--- old/libstorage-ng-4.3.32/storage/Devices/PlainEncryptionImpl.cc     
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Devices/PlainEncryptionImpl.cc     
2020-07-07 09:02:14.000000000 +0200
@@ -25,7 +25,6 @@
 #include "storage/Devices/PlainEncryptionImpl.h"
 #include "storage/Holders/User.h"
 #include "storage/Devicegraph.h"
-#include "storage/StorageImpl.h"
 #include "storage/SystemInfo/SystemInfo.h"
 #include "storage/UsedFeatures.h"
 #include "storage/EtcCrypttab.h"
@@ -98,7 +97,7 @@
            CmdDmsetupTable::const_iterator it2 = 
cmd_dmsetup_table.find_using(majorminor);
 
            if (it2 != cmd_dmsetup_table.end() && it2->second[0].target != 
"crypt")
-               it2 == cmd_dmsetup_table.end();
+               it2 = cmd_dmsetup_table.end();
 
            const CrypttabEntry* crypttab_entry = 
etc_crypttab.find_by_any_block_device(system_info,
                                                                                
        "", "", majorminor);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/Filesystems/MountPointImpl.h 
new/libstorage-ng-4.3.34/storage/Filesystems/MountPointImpl.h
--- old/libstorage-ng-4.3.32/storage/Filesystems/MountPointImpl.h       
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Filesystems/MountPointImpl.h       
2020-07-07 09:02:14.000000000 +0200
@@ -48,8 +48,10 @@
      * Class to identify an entry in /etc/fstab including the corresponding
      * blk device (via the id of FilesystemUser).
      */
-    struct FstabAnchor
+    class FstabAnchor
     {
+    public:
+
        FstabAnchor() : name(), id(0) {}
 
        FstabAnchor(const string& name, unsigned int id)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/GraphvizImpl.cc 
new/libstorage-ng-4.3.34/storage/GraphvizImpl.cc
--- old/libstorage-ng-4.3.32/storage/GraphvizImpl.cc    2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/GraphvizImpl.cc    2020-07-07 
09:02:14.000000000 +0200
@@ -46,7 +46,6 @@
 #include "storage/Filesystems/MountPoint.h"
 #include "storage/Utils/StorageDefines.h"
 #include "storage/Utils/HumanString.h"
-#include "storage/ActiongraphImpl.h"
 #include "storage/EnvironmentImpl.h"
 
 
@@ -166,7 +165,7 @@
        else if (is_md_user(holder))
        {
            const MdUser* md_user = to_md_user(holder);
-           if (md_user->is_spare() || md_user->is_faulty())
+           if (md_user->is_spare() || md_user->is_faulty() || 
md_user->is_journal())
                ret["style"] = "dotted";
            else
                ret["style"] = "dashed";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/GraphvizImpl.h 
new/libstorage-ng-4.3.34/storage/GraphvizImpl.h
--- old/libstorage-ng-4.3.32/storage/GraphvizImpl.h     2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/GraphvizImpl.h     2020-07-07 
09:02:14.000000000 +0200
@@ -25,8 +25,8 @@
 
 
 #include "storage/Graphviz.h"
-#include "storage/DevicegraphImpl.h"
-#include "storage/ActiongraphImpl.h"
+#include "storage/Devicegraph.h"
+#include "storage/Actiongraph.h"
 
 
 namespace storage
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Holders/MdUser.cc 
new/libstorage-ng-4.3.34/storage/Holders/MdUser.cc
--- old/libstorage-ng-4.3.32/storage/Holders/MdUser.cc  2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Holders/MdUser.cc  2020-07-07 
09:02:14.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2016-2017] SUSE LLC
+ * Copyright (c) [2016-2020] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -100,6 +100,20 @@
     }
 
 
+    bool
+    MdUser::is_journal() const
+    {
+       return get_impl().is_journal();
+    }
+
+
+    void
+    MdUser::set_journal(bool journal)
+    {
+       get_impl().set_journal(journal);
+    }
+
+
     unsigned int
     MdUser::get_sort_key() const
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Holders/MdUser.h 
new/libstorage-ng-4.3.34/storage/Holders/MdUser.h
--- old/libstorage-ng-4.3.32/storage/Holders/MdUser.h   2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Holders/MdUser.h   2020-07-07 
09:02:14.000000000 +0200
@@ -53,23 +53,63 @@
 
        virtual MdUser* clone() const override;
 
+       /**
+        * Return whether the target device is a spare device.
+        */
        bool is_spare() const;
+
+       /**
+        * Set the target device to be a spare device.
+        *
+        * @see is_spare()
+        *
+        * @throw Exception
+        */
        void set_spare(bool spare);
 
+       /**
+        * Return whether the target device is a faulty device.
+        */
        bool is_faulty() const;
+
+       /**
+        * Set the target device to be a faulty device.
+        *
+        * @see is_faulty()
+        *
+        * @throw Exception
+        */
        void set_faulty(bool faulty);
 
        /**
+        * Return whether the target device is a journal device. Only one 
device of an MD
+        * RAID can be a journal device. Only for RAID levels 4, 5 and 6.
+        */
+       bool is_journal() const;
+
+       /**
+        * Set the target device to be a journal device.
+        *
+        * Changing the value is not supported for RAIDs already created 
on-disk. Does
+        * not work with metadata version 1.0.
+        *
+        * @see is_journal()
+        *
+        * @throw Exception
+        */
+       void set_journal(bool journal);
+
+       /**
         * Return the sort key.
         *
-        * When creating a MD RAID the device list passed to the mdadm
-        * command is sorted according to the sort-key. For use-cases
-        * see https://fate.suse.com/313521/.
-        *
-        * The RAID devices and spare devices are sorted
-        * independently. Sorting of devices with the same sort-key is
-        * undefined. Any value is allowed but 0 should mean
-        * unknown/unspecified.
+        * When creating a MD RAID the device list passed to the mdadm command 
is sorted
+        * according to the sort-key. For use-cases see 
https://fate.suse.com/313521/.
+        *
+        * The RAID devices, spare and journal devices are sorted 
independently. Sorting
+        * of devices with the same sort-key is undefined. Any value is allowed 
but 0
+        * should mean unknown/unspecified.
+        *
+        * @see set_sort_key()
         */
        unsigned int get_sort_key() const;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Holders/MdUserImpl.cc 
new/libstorage-ng-4.3.34/storage/Holders/MdUserImpl.cc
--- old/libstorage-ng-4.3.32/storage/Holders/MdUserImpl.cc      2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Holders/MdUserImpl.cc      2020-07-07 
09:02:14.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2016-2017] SUSE LLC
+ * Copyright (c) [2016-2020] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -33,10 +33,11 @@
 
 
     MdUser::Impl::Impl(const xmlNode* node)
-       : User::Impl(node), spare(false), faulty(false), sort_key(0)
+       : User::Impl(node), spare(false), faulty(false), journal(false), 
sort_key(0)
     {
        getChildValue(node, "spare", spare);
        getChildValue(node, "faulty", faulty);
+       getChildValue(node, "journal", journal);
 
        getChildValue(node, "sort-key", sort_key);
     }
@@ -49,6 +50,7 @@
 
        setChildValueIf(node, "spare", spare, spare);
        setChildValueIf(node, "faulty", faulty, faulty);
+       setChildValueIf(node, "journal", journal, journal);
 
        setChildValueIf(node, "sort-key", sort_key, sort_key != 0);
     }
@@ -62,7 +64,7 @@
        if (!User::Impl::equal(rhs))
            return false;
 
-       return spare == rhs.spare && faulty == rhs.faulty && sort_key == 
rhs.sort_key;
+       return spare == rhs.spare && faulty == rhs.faulty && journal == 
rhs.journal && sort_key == rhs.sort_key;
     }
 
 
@@ -75,6 +77,7 @@
 
        storage::log_diff(log, "spare", spare, rhs.spare);
        storage::log_diff(log, "faulty", faulty, rhs.faulty);
+       storage::log_diff(log, "journal", journal, rhs.journal);
 
        storage::log_diff(log, "sort-key", sort_key, rhs.sort_key);
     }
@@ -91,6 +94,9 @@
        if (faulty)
            out << " faulty";
 
+       if (journal)
+           out << " journal";
+
        if (sort_key != 0)
            out << " sort-key:" << sort_key;
     }
@@ -104,8 +110,7 @@
 
        Impl::spare = spare;
 
-       Md* md = to_md(get_target());
-       md->get_impl().calculate_region_and_topology();
+       recalculate();
     }
 
 
@@ -117,6 +122,25 @@
 
        Impl::faulty = faulty;
 
+       recalculate();
+    }
+
+
+    void
+    MdUser::Impl::set_journal(bool journal)
+    {
+       if (Impl::journal == journal)
+           return;
+
+       Impl::journal = journal;
+
+       recalculate();
+    }
+
+
+    void
+    MdUser::Impl::recalculate()
+    {
        Md* md = to_md(get_target());
        md->get_impl().calculate_region_and_topology();
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/Holders/MdUserImpl.h 
new/libstorage-ng-4.3.34/storage/Holders/MdUserImpl.h
--- old/libstorage-ng-4.3.32/storage/Holders/MdUserImpl.h       2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/Holders/MdUserImpl.h       2020-07-07 
09:02:14.000000000 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) [2016-2017] SUSE LLC
+ * Copyright (c) [2016-2020] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -39,7 +39,7 @@
     public:
 
        Impl()
-           : User::Impl(), spare(false), faulty(false), sort_key(0) {}
+           : User::Impl(), spare(false), faulty(false), journal(false), 
sort_key(0) {}
 
        Impl(const xmlNode* node);
 
@@ -60,18 +60,29 @@
        bool is_faulty() const { return faulty; }
        void set_faulty(bool faulty);
 
+       bool is_journal() const { return journal; }
+       void set_journal(bool journal);
+
        unsigned int get_sort_key() const { return sort_key; }
        void set_sort_key(unsigned int sort_key) { Impl::sort_key = sort_key; }
 
     private:
 
+       // TODO is an enum instead of three booleans more appropriate?
        bool spare;
        bool faulty;
+       bool journal;
 
        unsigned int sort_key;
 
+       void recalculate();
+
     };
 
+
+    static_assert(!std::is_abstract<MdUser>(), "MdUser ought not to be 
abstract.");
+    static_assert(!std::is_abstract<MdUser::Impl>(), "MdUser::Impl ought not 
to be abstract.");
+
 }
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/PoolImpl.cc 
new/libstorage-ng-4.3.34/storage/PoolImpl.cc
--- old/libstorage-ng-4.3.32/storage/PoolImpl.cc        2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/PoolImpl.cc        2020-07-07 
09:02:14.000000000 +0200
@@ -229,7 +229,7 @@
 
        vector<Partition*> partitions;
 
-       for (const Candidate candidate : candidates)
+       for (const Candidate& candidate : candidates)
        {
            Region region = candidate.region;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/SystemInfo/CmdDmraid.cc 
new/libstorage-ng-4.3.34/storage/SystemInfo/CmdDmraid.cc
--- old/libstorage-ng-4.3.32/storage/SystemInfo/CmdDmraid.cc    2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/SystemInfo/CmdDmraid.cc    2020-07-07 
09:02:14.000000000 +0200
@@ -145,7 +145,7 @@
     std::ostream&
     operator<<(std::ostream& s, const CmdDmraid& cmd_dmraid)
     {
-       for (const pair<string, CmdDmraid::Entry>& entry : cmd_dmraid)
+       for (const pair<const string, CmdDmraid::Entry>& entry : cmd_dmraid)
            s << "data[" << entry.first << "] -> " << entry.second << '\n';
 
        return s;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/SystemInfo/CmdMultipath.cc 
new/libstorage-ng-4.3.34/storage/SystemInfo/CmdMultipath.cc
--- old/libstorage-ng-4.3.32/storage/SystemInfo/CmdMultipath.cc 2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/SystemInfo/CmdMultipath.cc 2020-07-07 
09:02:14.000000000 +0200
@@ -182,7 +182,7 @@
     std::ostream&
     operator<<(std::ostream& s, const CmdMultipath& cmd_multipath)
     {
-       for (const pair<string, CmdMultipath::Entry>& entry : cmd_multipath)
+       for (const pair<const string, CmdMultipath::Entry>& entry : 
cmd_multipath)
            s << "data[" << entry.first << "] -> " << entry.second << '\n';
 
        return s;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/storage/SystemInfo/ProcMdstat.cc 
new/libstorage-ng-4.3.34/storage/SystemInfo/ProcMdstat.cc
--- old/libstorage-ng-4.3.32/storage/SystemInfo/ProcMdstat.cc   2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/SystemInfo/ProcMdstat.cc   2020-07-07 
09:02:14.000000000 +0200
@@ -125,10 +125,12 @@
            else
                d = normalizeDevice(tmp);
 
+           // TODO can there be several of the flags?
            bool is_spare = boost::ends_with(tmp, "(S)");
            bool is_faulty = boost::ends_with(tmp, "(F)");
+           bool is_journal = boost::ends_with(tmp, "(J)");
 
-           entry.devices.emplace_back(d, is_spare, is_faulty);
+           entry.devices.emplace_back(d, is_spare, is_faulty, is_journal);
 
            line.erase( 0, tmp.length() );
            if( (pos=line.find_first_not_of( app_ws ))!=string::npos && pos!=0 )
@@ -277,7 +279,7 @@
     std::ostream&
     operator<<(std::ostream& s, const ProcMdstat& proc_mdstat)
     {
-       for (const pair<string, ProcMdstat::Entry>& entry : proc_mdstat.data)
+       for (const pair<const string, ProcMdstat::Entry>& entry : 
proc_mdstat.data)
            s << "data[" << entry.first << "] -> " << entry.second << '\n';
 
        return s;
@@ -328,6 +330,8 @@
            s << "(S)";
        if (device.faulty)
            s << "(F)";
+       if (device.journal)
+           s << "(J)";
 
        return s;
     }
@@ -480,7 +484,7 @@
        s << "devices:" << mdadm_examine.devices << " metadata:" << 
mdadm_examine.metadata
          << " uuid:" << mdadm_examine.uuid << '\n';
 
-       for (const pair<string, MdadmExamine::Entry>& entry : mdadm_examine)
+       for (const pair<const string, MdadmExamine::Entry>& entry : 
mdadm_examine)
            s << "data[" << entry.first << "] -> " << entry.second << '\n';
 
        return s;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.32/storage/SystemInfo/ProcMdstat.h 
new/libstorage-ng-4.3.34/storage/SystemInfo/ProcMdstat.h
--- old/libstorage-ng-4.3.32/storage/SystemInfo/ProcMdstat.h    2020-06-30 
14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/storage/SystemInfo/ProcMdstat.h    2020-07-07 
09:02:14.000000000 +0200
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) [2004-2014] Novell, Inc.
- * Copyright (c) [2017,2019] SUSE LLC
+ * Copyright (c) [2017-2020] SUSE LLC
  *
  * All Rights Reserved.
  *
@@ -47,12 +47,13 @@
 
        struct Device
        {
-           Device(const string& name, bool spare, bool faulty)
-               : name(name), spare(spare), faulty(faulty) {}
+           Device(const string& name, bool spare, bool faulty, bool journal)
+               : name(name), spare(spare), faulty(faulty), journal(journal) {}
 
            string name;
            bool spare;
            bool faulty;
+           bool journal;
 
            bool operator<(const Device& rhs) const { return name < rhs.name; }
 
@@ -126,8 +127,8 @@
        MdLevel level;
 
        /**
-        * Mapping from device name to role (a number or
-        * spare). Faulty devices are also marked as spare by mdadm here.
+        * Mapping from device name to role (a number or spare). Faulty and 
journal
+        * devices are also marked as spare by mdadm here (that might be a bug).
         */
        map<string, string> roles;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/SystemInfo/proc-mdstat.cc 
new/libstorage-ng-4.3.34/testsuite/SystemInfo/proc-mdstat.cc
--- old/libstorage-ng-4.3.32/testsuite/SystemInfo/proc-mdstat.cc        
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/testsuite/SystemInfo/proc-mdstat.cc        
2020-07-07 09:02:14.000000000 +0200
@@ -115,7 +115,7 @@
     };
 
     vector<string> output = {
-       "data[md0] -> md-level:RAID5 md-parity:left-symmetric super:1.2 
chunk-size:524288 size:34326183936 devices:</dev/sda /dev/sdb /dev/sdc 
/dev/sdd(F)>",
+       "data[md0] -> md-level:RAID5 md-parity:left-symmetric super:1.2 
chunk-size:524288 size:34326183936 devices:</dev/sda /dev/sdb /dev/sdc 
/dev/sdd(F)>"
     };
 
     check(input, output);
@@ -133,12 +133,31 @@
     };
 
     vector<string> output = {
-       "data[md_test] -> md-level:RAID0 super:1.2 chunk-size:524288 
size:8192524288 devices:</dev/sda1 /dev/sdb1>",
+       "data[md_test] -> md-level:RAID0 super:1.2 chunk-size:524288 
size:8192524288 devices:</dev/sda1 /dev/sdb1>"
     };
 
     check(input, output);
 }
 
+
+BOOST_AUTO_TEST_CASE(parse6)
+{
+    vector<string> input = {
+       "Personalities : [raid6] [raid5] [raid4] ",
+       "md0 : active raid5 sdd1[4] sde1[3] sdf1[1] sdb1[0](J)",
+       "      4190208 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] 
[UUU]",
+       "      ",
+       "unused devices: <none>"
+    };
+
+    vector<string> output = {
+       "data[md0] -> md-level:RAID5 md-parity:left-symmetric super:1.2 
chunk-size:524288 size:4290772992 devices:</dev/sdb1(J) /dev/sdd1 /dev/sde1 
/dev/sdf1>"
+    };
+
+    check(input, output);
+}
+
+
 BOOST_AUTO_TEST_CASE(parse_inactive_noncontainer)
 {
     vector<string> input = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/Makefile.am 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/Makefile.am
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/Makefile.am      
2020-06-30 14:38:47.000000000 +0200
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/Makefile.am      
2020-07-07 09:02:14.000000000 +0200
@@ -8,7 +8,7 @@
        -lboost_unit_test_framework
 
 check_PROGRAMS =                                                               
\
-       create1.test reduce1.test extend1.test
+       create1.test create2.test reduce1.test extend1.test
 
 AM_DEFAULT_SOURCE_EXT = .cc
 
@@ -16,6 +16,7 @@
 
 EXTRA_DIST =                                                                   
                \
        create1-probed.xml create1-staging.xml create1-expected.txt 
create1-mockup.xml          \
+       create2-probed.xml create2-staging.xml create2-expected.txt 
create2-mockup.xml          \
        reduce1-probed.xml reduce1-staging.xml reduce1-expected.txt 
reduce1-mockup.xml          \
        extend1-probed.xml extend1-staging.xml extend1-expected.txt 
extend1-mockup.xml
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-expected.txt 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-expected.txt
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-expected.txt     
1970-01-01 01:00:00.000000000 +0100
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-expected.txt     
2020-07-07 09:02:14.000000000 +0200
@@ -0,0 +1 @@
+1 - Create MD RAID5 /dev/md0 (3.94 GiB) from /dev/sdb1 (128.00 MiB), /dev/sdd1 
(2.00 GiB), /dev/sde1 (2.00 GiB) and /dev/sdf1 (2.00 GiB) ->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-mockup.xml 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-mockup.xml
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-mockup.xml       
1970-01-01 01:00:00.000000000 +0100
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-mockup.xml       
2020-07-07 09:02:14.000000000 +0200
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<Mockup>
+  <Commands>
+    <Command>
+      <name>/usr/bin/udevadm settle --timeout=20</name>
+    </Command>
+    <Command>
+      <name>/sbin/mdadm --create '/dev/md0' --run --level=raid5 --metadata=1.2 
--homehost=any --raid-devices=3 '/dev/sdd1' '/dev/sde1' '/dev/sdf1' 
--write-journal='/dev/sdb1'</name>
+    </Command>
+    <Command>
+      <name>/sbin/mdadm --detail '/dev/md0' --export</name>
+      <stdout>MD_LEVEL=raid5</stdout>
+      <stdout>MD_DEVICES=3</stdout>
+      <stdout>MD_METADATA=1.2</stdout>
+      <stdout>MD_UUID=549de5a7:46144f48:df2706c3:f6ad1f85</stdout>
+      <stdout>MD_NAME=any:0</stdout>
+      <stdout>MD_DEVICE_dev_sdf1_ROLE=0</stdout>
+      <stdout>MD_DEVICE_dev_sdf1_DEV=/dev/sdf1</stdout>
+      <stdout>MD_DEVICE_dev_sde1_ROLE=2</stdout>
+      <stdout>MD_DEVICE_dev_sde1_DEV=/dev/sde1</stdout>
+      <stdout>MD_DEVICE_dev_sdd1_ROLE=1</stdout>
+      <stdout>MD_DEVICE_dev_sdd1_DEV=/dev/sdd1</stdout>
+      <stdout>MD_DEVICE_dev_sdb1_ROLE=spare</stdout>
+      <stdout>MD_DEVICE_dev_sdb1_DEV=/dev/sdb1</stdout>
+    </Command>
+    <Command>
+      <name>/usr/bin/cat /proc/mdstat</name>
+    </Command>
+  </Commands>
+</Mockup>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-probed.xml 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-probed.xml
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-probed.xml       
1970-01-01 01:00:00.000000000 +0100
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-probed.xml       
2020-07-07 09:02:14.000000000 +0200
@@ -0,0 +1,223 @@
+<?xml version="1.0"?>
+<Devicegraph>
+  <Devices>
+    <Disk>
+      <sid>42</sid>
+      <name>/dev/sdf</name>
+      <sysfs-name>sdf</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata7/host6/target6:0:0/6:0:0:0/block/sdf</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-7</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-7.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>43</sid>
+      <name>/dev/sdd</name>
+      <sysfs-name>sdd</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdd</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-5</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-5.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>44</sid>
+      <name>/dev/sdb</name>
+      <sysfs-name>sdb</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sdb</sysfs-path>
+      <region>
+        <length>16777216</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-3</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-3.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <range>256</range>
+    </Disk>
+    <Disk>
+      <sid>45</sid>
+      <name>/dev/sde</name>
+      <sysfs-name>sde</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata6/host5/target5:0:0/5:0:0:0/block/sde</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-6</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-6.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>46</sid>
+      <name>/dev/sdc</name>
+      <sysfs-name>sdc</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdc</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-4</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-4.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Gpt>
+      <sid>48</sid>
+    </Gpt>
+    <Gpt>
+      <sid>49</sid>
+    </Gpt>
+    <Gpt>
+      <sid>50</sid>
+    </Gpt>
+    <Gpt>
+      <sid>51</sid>
+    </Gpt>
+    <Gpt>
+      <sid>52</sid>
+    </Gpt>
+    <Partition>
+      <sid>58</sid>
+      <name>/dev/sdf1</name>
+      <sysfs-name>sdf1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata7/host6/target6:0:0/6:0:0:0/block/sdf/sdf1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-7-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-7.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>59</sid>
+      <name>/dev/sdd1</name>
+      <sysfs-name>sdd1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdd/sdd1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-5-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-5.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>60</sid>
+      <name>/dev/sde1</name>
+      <sysfs-name>sde1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata6/host5/target5:0:0/5:0:0:0/block/sde/sde1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-6-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-6.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>61</sid>
+      <name>/dev/sdb1</name>
+      <sysfs-name>sdb1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sdb/sdb1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>262144</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-3-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-3.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+  </Devices>
+  <Holders>
+    <User>
+      <source-sid>42</source-sid>
+      <target-sid>48</target-sid>
+    </User>
+    <User>
+      <source-sid>43</source-sid>
+      <target-sid>49</target-sid>
+    </User>
+    <User>
+      <source-sid>44</source-sid>
+      <target-sid>50</target-sid>
+    </User>
+    <User>
+      <source-sid>45</source-sid>
+      <target-sid>51</target-sid>
+    </User>
+    <User>
+      <source-sid>46</source-sid>
+      <target-sid>52</target-sid>
+    </User>
+    <Subdevice>
+      <source-sid>48</source-sid>
+      <target-sid>58</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>49</source-sid>
+      <target-sid>59</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>51</source-sid>
+      <target-sid>60</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>50</source-sid>
+      <target-sid>61</target-sid>
+    </Subdevice>
+  </Holders>
+</Devicegraph>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-staging.xml 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-staging.xml
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2-staging.xml      
1970-01-01 01:00:00.000000000 +0100
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2-staging.xml      
2020-07-07 09:02:14.000000000 +0200
@@ -0,0 +1,260 @@
+<?xml version="1.0"?>
+<Devicegraph>
+  <Devices>
+    <Disk>
+      <sid>42</sid>
+      <name>/dev/sdf</name>
+      <sysfs-name>sdf</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata7/host6/target6:0:0/6:0:0:0/block/sdf</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-7</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-7.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB66a741fa-8159d3bb</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>43</sid>
+      <name>/dev/sdd</name>
+      <sysfs-name>sdd</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdd</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-5</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-5.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB842c10df-262af403</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>44</sid>
+      <name>/dev/sdb</name>
+      <sysfs-name>sdb</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sdb</sysfs-path>
+      <region>
+        <length>16777216</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-3</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-3.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB80113007-2670a94a</udev-id>
+      <range>256</range>
+    </Disk>
+    <Disk>
+      <sid>45</sid>
+      <name>/dev/sde</name>
+      <sysfs-name>sde</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata6/host5/target5:0:0/5:0:0:0/block/sde</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-6</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-6.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB91e98460-bfba3037</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Disk>
+      <sid>46</sid>
+      <name>/dev/sdc</name>
+      <sysfs-name>sdc</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata4/host3/target3:0:0/3:0:0:0/block/sdc</sysfs-path>
+      <region>
+        <length>67108864</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-4</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-4.0</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VBc267c561-c12b81c7</udev-id>
+      <range>256</range>
+      <rotational>true</rotational>
+    </Disk>
+    <Gpt>
+      <sid>48</sid>
+    </Gpt>
+    <Gpt>
+      <sid>49</sid>
+    </Gpt>
+    <Gpt>
+      <sid>50</sid>
+    </Gpt>
+    <Gpt>
+      <sid>51</sid>
+    </Gpt>
+    <Gpt>
+      <sid>52</sid>
+    </Gpt>
+    <Partition>
+      <sid>58</sid>
+      <name>/dev/sdf1</name>
+      <sysfs-name>sdf1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata7/host6/target6:0:0/6:0:0:0/block/sdf/sdf1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-7-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-7.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB66a741fa-8159d3bb-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>59</sid>
+      <name>/dev/sdd1</name>
+      <sysfs-name>sdd1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata5/host4/target4:0:0/4:0:0:0/block/sdd/sdd1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-5-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-5.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB842c10df-262af403-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>60</sid>
+      <name>/dev/sde1</name>
+      <sysfs-name>sde1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata6/host5/target5:0:0/5:0:0:0/block/sde/sde1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>4194304</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-6-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-6.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB91e98460-bfba3037-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Partition>
+      <sid>61</sid>
+      <name>/dev/sdb1</name>
+      <sysfs-name>sdb1</sysfs-name>
+      
<sysfs-path>/devices/pci0000:00/0000:00:0d.0/ata3/host2/target2:0:0/2:0:0:0/block/sdb/sdb1</sysfs-path>
+      <region>
+        <start>2048</start>
+        <length>262144</length>
+        <block-size>512</block-size>
+      </region>
+      <udev-path>pci-0000:00:0d.0-ata-3-part1</udev-path>
+      <udev-path>pci-0000:00:0d.0-ata-3.0-part1</udev-path>
+      <udev-id>ata-VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-0ATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-1ATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <udev-id>scsi-SATA_VBOX_HARDDISK_VB80113007-2670a94a-part1</udev-id>
+      <type>primary</type>
+      <id>253</id>
+    </Partition>
+    <Md>
+      <sid>62</sid>
+      <name>/dev/md0</name>
+      <sysfs-name>md0</sysfs-name>
+      <sysfs-path>/devices/virtual/block/md0</sysfs-path>
+      <region>
+        <length>8255488</length>
+        <block-size>512</block-size>
+      </region>
+      <topology>
+        <optimal-io-size>1048576</optimal-io-size>
+      </topology>
+      <range>256</range>
+      <md-level>RAID5</md-level>
+      <metadata>1.2</metadata>
+      <in-etc-mdadm>false</in-etc-mdadm>
+    </Md>
+  </Devices>
+  <Holders>
+    <User>
+      <source-sid>42</source-sid>
+      <target-sid>48</target-sid>
+    </User>
+    <User>
+      <source-sid>43</source-sid>
+      <target-sid>49</target-sid>
+    </User>
+    <User>
+      <source-sid>44</source-sid>
+      <target-sid>50</target-sid>
+    </User>
+    <User>
+      <source-sid>45</source-sid>
+      <target-sid>51</target-sid>
+    </User>
+    <User>
+      <source-sid>46</source-sid>
+      <target-sid>52</target-sid>
+    </User>
+    <Subdevice>
+      <source-sid>48</source-sid>
+      <target-sid>58</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>49</source-sid>
+      <target-sid>59</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>51</source-sid>
+      <target-sid>60</target-sid>
+    </Subdevice>
+    <Subdevice>
+      <source-sid>50</source-sid>
+      <target-sid>61</target-sid>
+    </Subdevice>
+    <MdUser>
+      <source-sid>58</source-sid>
+      <target-sid>62</target-sid>
+      <sort-key>3</sort-key>
+    </MdUser>
+    <MdUser>
+      <source-sid>59</source-sid>
+      <target-sid>62</target-sid>
+      <sort-key>1</sort-key>
+    </MdUser>
+    <MdUser>
+      <source-sid>60</source-sid>
+      <target-sid>62</target-sid>
+      <sort-key>2</sort-key>
+    </MdUser>
+    <MdUser>
+      <source-sid>61</source-sid>
+      <target-sid>62</target-sid>
+      <journal>true</journal>
+    </MdUser>
+  </Holders>
+</Devicegraph>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2.cc 
new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2.cc
--- old/libstorage-ng-4.3.32/testsuite/dependencies/md/create2.cc       
1970-01-01 01:00:00.000000000 +0100
+++ new/libstorage-ng-4.3.34/testsuite/dependencies/md/create2.cc       
2020-07-07 09:02:14.000000000 +0200
@@ -0,0 +1,22 @@
+
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE libstorage
+
+#include <boost/test/unit_test.hpp>
+
+#include "storage/Utils/Logger.h"
+#include "testsuite/helpers/TsCmp.h"
+
+
+using namespace storage;
+
+
+// Check that mdadm is called with the correct parameters.
+
+BOOST_AUTO_TEST_CASE(actions)
+{
+    set_logger(get_stdout_logger());
+
+    TsCmpActiongraph cmp("create2", true);
+    BOOST_CHECK_MESSAGE(cmp.ok(), cmp);
+}


Reply via email to