Hello community,

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

Package is "libstorage-ng"

Fri Jul 24 09:53:02 2020 rev:90 rq:822214 version:4.3.37

Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes      
2020-07-21 15:48:23.576147498 +0200
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.3592/libstorage-ng.changes    
2020-07-24 09:54:04.429286501 +0200
@@ -1,0 +2,16 @@
+Wed Jul 22 10:49:43 UTC 2020 - [email protected]
+
+- merge gh#openSUSE/libstorage-ng#763
+- probe lvm logical volume type from segtype for origins
+- use in-class member initialization
+- 4.3.37
+
+--------------------------------------------------------------------
+Tue Jul 21 14:45:48 UTC 2020 - [email protected]
+
+- merge gh#openSUSE/libstorage-ng#762
+- improve interface for pools
+- coding style
+- 4.3.36
+
+--------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.usoIqf/_old  2020-07-24 09:54:05.797287947 +0200
+++ /var/tmp/diff_new_pack.usoIqf/_new  2020-07-24 09:54:05.801287951 +0200
@@ -18,7 +18,7 @@
 
 %define libname %{name}1
 Name:           libstorage-ng
-Version:        4.3.35
+Version:        4.3.37
 Release:        0
 Summary:        Library for storage management
 License:        GPL-2.0-only

++++++ libstorage-ng-4.3.35.tar.xz -> libstorage-ng-4.3.37.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/LIBVERSION 
new/libstorage-ng-4.3.37/LIBVERSION
--- old/libstorage-ng-4.3.35/LIBVERSION 2020-07-17 10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/LIBVERSION 2020-07-22 12:49:43.000000000 +0200
@@ -1 +1 @@
-1.43.0
+1.44.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/VERSION 
new/libstorage-ng-4.3.37/VERSION
--- old/libstorage-ng-4.3.35/VERSION    2020-07-17 10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/VERSION    2020-07-22 12:49:43.000000000 +0200
@@ -1 +1 @@
-4.3.35
+4.3.37
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/bindings/storage-template.i 
new/libstorage-ng-4.3.37/bindings/storage-template.i
--- old/libstorage-ng-4.3.35/bindings/storage-template.i        2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/bindings/storage-template.i        2020-07-22 
12:49:43.000000000 +0200
@@ -103,3 +103,9 @@
 %template(VectorSimpleEtcFstabEntry) std::vector<SimpleEtcFstabEntry>;
 %template(VectorSimpleEtcCrypttabEntry) std::vector<SimpleEtcCrypttabEntry>;
 
+%template(VectorConstDevicegraphPtr) std::vector<const Devicegraph*>;
+%template(MapStringConstDevicegraphPtr) std::map<std::string, const 
Devicegraph*>;
+
+%template(VectorConstPoolPtr) std::vector<const Pool*>;
+%template(MapStringConstPoolPtr) std::map<std::string, const Pool*>;
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/integration-tests/pools/list.py 
new/libstorage-ng-4.3.37/integration-tests/pools/list.py
--- old/libstorage-ng-4.3.35/integration-tests/pools/list.py    2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/integration-tests/pools/list.py    2020-07-22 
12:49:43.000000000 +0200
@@ -15,9 +15,8 @@
 
 storage.generate_pools(probed)
 
-for name in storage.get_pool_names():
+for name, pool in storage.get_pools().items():
     print(name)
 
-    pool = storage.get_pool(name)
     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.35/integration-tests/pools/max-size.py 
new/libstorage-ng-4.3.37/integration-tests/pools/max-size.py
--- old/libstorage-ng-4.3.35/integration-tests/pools/max-size.py        
2020-07-17 10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/integration-tests/pools/max-size.py        
2020-07-22 12:49:43.000000000 +0200
@@ -17,7 +17,7 @@
 
 pool = storage.get_pool("HDDs (512 B)")
 
-for n in range(1, len(pool.get_devices(probed)) + 1):
+for n in range(1, pool.size(probed) + 1):
 
     try:
         max_size = pool.max_partition_size(probed, n)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/Pool.cc 
new/libstorage-ng-4.3.37/storage/Pool.cc
--- old/libstorage-ng-4.3.35/storage/Pool.cc    2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/storage/Pool.cc    2020-07-22 12:49:43.000000000 
+0200
@@ -46,6 +46,13 @@
     }
 
 
+    size_t
+    Pool::size(const Devicegraph* devicegraph) const
+    {
+       return get_impl().size(devicegraph);
+    }
+
+
     void
     Pool::add_device(const Device* device)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/Pool.h 
new/libstorage-ng-4.3.37/storage/Pool.h
--- old/libstorage-ng-4.3.35/storage/Pool.h     2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/storage/Pool.h     2020-07-22 12:49:43.000000000 
+0200
@@ -103,6 +103,12 @@
        void remove_device(const Device* device);
 
        /**
+        * Get the number of devices of the pool available in the devicegraph. 
It is no
+        * error if devices are not available in the devicegraph.
+        */
+       size_t size(const Devicegraph* devicegraph) const;
+
+       /**
         * Get the devices of the pool available in the devicegraph. It is no 
error if
         * devices are not available in the devicegraph.
         */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/PoolImpl.cc 
new/libstorage-ng-4.3.37/storage/PoolImpl.cc
--- old/libstorage-ng-4.3.35/storage/PoolImpl.cc        2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/PoolImpl.cc        2020-07-22 
12:49:43.000000000 +0200
@@ -57,6 +57,17 @@
     }
 
 
+    size_t
+    Pool::Impl::size(const Devicegraph* devicegraph) const
+    {
+       ST_CHECK_PTR(devicegraph);
+
+       return count_if(devices.begin(), devices.end(), [devicegraph](sid_t sid)
+           { return devicegraph->device_exists(sid); }
+       );
+    }
+
+
     vector<Device*>
     Pool::Impl::get_devices(Devicegraph* devicegraph) const
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/PoolImpl.h 
new/libstorage-ng-4.3.37/storage/PoolImpl.h
--- old/libstorage-ng-4.3.35/storage/PoolImpl.h 2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/storage/PoolImpl.h 2020-07-22 12:49:43.000000000 
+0200
@@ -46,6 +46,8 @@
                void add_device(const Device* device);
        void remove_device(const Device* device);
 
+       size_t size(const Devicegraph* devicegraph) const;
+
        vector<Device*> get_devices(Devicegraph* devicegraph) const;
        vector<const Device*> get_devices(const Devicegraph* devicegraph) const;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/Storage.cc 
new/libstorage-ng-4.3.37/storage/Storage.cc
--- old/libstorage-ng-4.3.35/storage/Storage.cc 2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/storage/Storage.cc 2020-07-22 12:49:43.000000000 
+0200
@@ -145,6 +145,13 @@
     }
 
 
+    map<string, const Devicegraph*>
+    Storage::get_devicegraphs() const
+    {
+       return get_impl().get_devicegraphs();
+    }
+
+
     Devicegraph*
     Storage::create_devicegraph(const string& name)
     {
@@ -307,6 +314,13 @@
     }
 
 
+    map<string, const Pool*>
+    Storage::get_pools() const
+    {
+       return get_impl().get_pools();
+    }
+
+
     Pool*
     Storage::get_pool(const string& name)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/Storage.h 
new/libstorage-ng-4.3.37/storage/Storage.h
--- old/libstorage-ng-4.3.35/storage/Storage.h  2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/storage/Storage.h  2020-07-22 12:49:43.000000000 
+0200
@@ -310,7 +310,15 @@
        /**
         * Get the names of all devicegraphs.
         */
-       std::vector<std::string> get_devicegraph_names() const;
+       std::vector<std::string> get_devicegraph_names() const ST_DEPRECATED;
+
+       /**
+        * Get all devicegraphs with their names.
+        *
+        * Note: There is no non-const version since that would provide 
non-const access
+        * to the probed devicegraph.
+        */
+       std::map<std::string, const Devicegraph*> get_devicegraphs() const;
 
        /**
         * Return a devicegraph by name.
@@ -495,7 +503,12 @@
        /**
         * Get the names of all pools.
         */
-       std::vector<std::string> get_pool_names() const;
+       std::vector<std::string> get_pool_names() const ST_DEPRECATED;
+
+       /**
+        * Get all pools with their names.
+        */
+       std::map<std::string, const Pool*> get_pools() const;
 
        /**
         * Return a pool by name.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/StorageImpl.cc 
new/libstorage-ng-4.3.37/storage/StorageImpl.cc
--- old/libstorage-ng-4.3.35/storage/StorageImpl.cc     2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/StorageImpl.cc     2020-07-22 
12:49:43.000000000 +0200
@@ -237,7 +237,7 @@
        if (name == "probed")
            ST_THROW(Exception(sformat("invalid devicegraph name '%s'", name)));
 
-       map<string, Devicegraph>::iterator it = devicegraphs.find(name);
+       devicegraphs_t::iterator it = devicegraphs.find(name);
        if (it == devicegraphs.end())
            ST_THROW(Exception(sformat("devicegraph '%s' not found", name)));
 
@@ -248,7 +248,7 @@
     const Devicegraph*
     Storage::Impl::get_devicegraph(const string& name) const
     {
-       map<string, Devicegraph>::const_iterator it = devicegraphs.find(name);
+       devicegraphs_t::const_iterator it = devicegraphs.find(name);
        if (it == devicegraphs.end())
            ST_THROW(Exception(sformat("devicegraph '%s' not found", name)));
 
@@ -296,8 +296,20 @@
     {
        vector<string> ret;
 
-       for (const map<string, Devicegraph>::value_type& it : devicegraphs)
-           ret.push_back(it.first);
+       for (const devicegraphs_t::value_type& tmp : devicegraphs)
+           ret.push_back(tmp.first);
+
+       return ret;
+    }
+
+
+    map<string, const Devicegraph*>
+    Storage::Impl::get_devicegraphs() const
+    {
+       map<string, const Devicegraph*> ret;
+
+       for (const devicegraphs_t::value_type& tmp : devicegraphs)
+           ret[tmp.first] = &tmp.second;
 
        return ret;
     }
@@ -316,13 +328,13 @@
     {
        verify_devicegraph_name(name);
 
-       pair<map<string, Devicegraph>::iterator, bool> tmp =
+       pair<devicegraphs_t::iterator, bool> tmp =
            devicegraphs.emplace(piecewise_construct, forward_as_tuple(name),
                                 forward_as_tuple(&storage));
        if (!tmp.second)
            ST_THROW(Exception(sformat("devicegraph '%s' already exists", 
name)));
 
-       map<string, Devicegraph>::iterator it = tmp.first;
+       devicegraphs_t::iterator it = tmp.first;
 
        return &it->second;
     }
@@ -352,11 +364,11 @@
     void
     Storage::Impl::restore_devicegraph(const string& name)
     {
-       map<string, Devicegraph>::iterator it1 = devicegraphs.find(name);
+       devicegraphs_t::iterator it1 = devicegraphs.find(name);
        if (it1 == devicegraphs.end())
            ST_THROW(Exception(sformat("devicegraph '%s' not found", name)));
 
-       map<string, Devicegraph>::iterator it2 = devicegraphs.find("staging");
+       devicegraphs_t::iterator it2 = devicegraphs.find("staging");
        if (it2 == devicegraphs.end())
            ST_THROW(Exception(sformat("devicegraph '%s' not found", name)));
 
@@ -389,7 +401,7 @@
 
        map<sid_t, set<string>> all_sids_with_types;
 
-       for (const map<string, Devicegraph>::value_type& key_value : 
devicegraphs)
+       for (const devicegraphs_t::value_type& key_value : devicegraphs)
        {
            const Devicegraph& devicegraph = key_value.second;
 
@@ -459,13 +471,24 @@
     {
        ST_CHECK_PTR(devicegraph);
 
-       // TODO more types, e.g. dasd, multipath, pmem, nvme?
+       // TODO more types, e.g. dasd, multipath, nvme?
        // TODO check partition table?
        // TODO do not add already existing devices
 
        for (const Disk* disk : Disk::get_all(devicegraph))
        {
-           string name = disk->is_rotational() ? "HDDs" : "SSDs";
+           // Ignore disks with size zero - maybe some card reader.
+           if (disk->get_size() == 0)
+               continue;
+
+           string name;
+           if (disk->is_pmem())
+               name = "PMEMs";
+           else if (!disk->is_rotational())
+               name = "SSDs";
+           else
+               name = "HDDs";
+
            name += " (" + 
byte_to_humanstring(disk->get_region().get_block_size(), false, 2, true) + ")";
 
            Pool* pool = exists_pool(name) ? get_pool(name) : create_pool(name);
@@ -487,13 +510,13 @@
     {
        verify_pool_name(name);
 
-       pair<map<string, Pool>::iterator, bool> tmp =
+       pair<pools_t::iterator, bool> tmp =
            pools.emplace(piecewise_construct, forward_as_tuple(name),
                          forward_as_tuple());
        if (!tmp.second)
            ST_THROW(Exception(sformat("pool '%s' already exists", name)));
 
-       map<string, Pool>::iterator it = tmp.first;
+       pools_t::iterator it = tmp.first;
 
        return &it->second;
     }
@@ -519,8 +542,20 @@
     {
        vector<string> ret;
 
-       for (const map<string, Pool>::value_type& it : pools)
-           ret.push_back(it.first);
+       for (const pools_t::value_type& tmp : pools)
+           ret.push_back(tmp.first);
+
+       return ret;
+    }
+
+
+    map<string, const Pool*>
+    Storage::Impl::get_pools() const
+    {
+       map<string, const Pool*> ret;
+
+       for (const pools_t::value_type& tmp : pools)
+           ret[tmp.first] = &tmp.second;
 
        return ret;
     }
@@ -529,7 +564,7 @@
     Pool*
     Storage::Impl::get_pool(const string& name)
     {
-       map<string, Pool>::iterator it = pools.find(name);
+       pools_t::iterator it = pools.find(name);
        if (it == pools.end())
            ST_THROW(Exception(sformat("pool '%s' not found", name)));
 
@@ -540,7 +575,7 @@
     const Pool*
     Storage::Impl::get_pool(const string& name) const
     {
-       map<string, Pool>::const_iterator it = pools.find(name);
+       pools_t::const_iterator it = pools.find(name);
        if (it == pools.end())
            ST_THROW(Exception(sformat("pool '%s' not found", name)));
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/StorageImpl.h 
new/libstorage-ng-4.3.37/storage/StorageImpl.h
--- old/libstorage-ng-4.3.35/storage/StorageImpl.h      2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/StorageImpl.h      2020-07-22 
12:49:43.000000000 +0200
@@ -76,7 +76,9 @@
        bool equal_devicegraph(const string& lhs, const string& rhs) const;
 
        bool exist_devicegraph(const string& name) const;
+
        vector<string> get_devicegraph_names() const;
+       map<string, const Devicegraph*> get_devicegraphs() const;
 
        Devicegraph* get_devicegraph(const string& name);
        const Devicegraph* get_devicegraph(const string& name) const;
@@ -118,6 +120,7 @@
        bool exists_pool(const string& name) const;
 
        vector<string> get_pool_names() const;
+       map<string, const Pool*> get_pools() const;
 
        Pool* get_pool(const string& name);
        const Pool* get_pool(const string& name) const;
@@ -158,9 +161,11 @@
 
        Lock lock;
 
-       map<string, Devicegraph> devicegraphs;
+       using devicegraphs_t = map<string, Devicegraph>;
+       devicegraphs_t devicegraphs;
 
-       map<string, Pool> pools;
+       using pools_t = map<string, Pool>;
+       pools_t pools;
 
        MountByType default_mount_by;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLsscsi.h 
new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLsscsi.h
--- old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLsscsi.h     2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLsscsi.h     2020-07-22 
12:49:43.000000000 +0200
@@ -46,9 +46,7 @@
 
        struct Entry
        {
-           Entry() : transport(Transport::UNKNOWN) {}
-
-           Transport transport;
+           Transport transport = Transport::UNKNOWN;
        };
 
        friend std::ostream& operator<<(std::ostream& s, const Lsscsi& lsscsi);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLvm.cc 
new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLvm.cc
--- old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLvm.cc       2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLvm.cc       2020-07-22 
12:49:43.000000000 +0200
@@ -211,10 +211,10 @@
            case 't': lv.lv_type = LvType::THIN_POOL; break;
            case 'V': lv.lv_type = LvType::THIN; break;
            case 'r': lv.lv_type = LvType::RAID; break;
-           case 'o': lv.lv_type = LvType::NORMAL; break;
            case 's': lv.lv_type = LvType::SNAPSHOT; break;
            case 'm': lv.lv_type = LvType::MIRROR; break;
 
+           case 'o':
            case 'C':
            {
                string segtype;
@@ -228,6 +228,12 @@
                    lv.lv_type = LvType::CACHE;
                else if (segtype == "writecache")
                    lv.lv_type = LvType::WRITECACHE;
+               else if (segtype == "mirror")
+                   lv.lv_type = LvType::MIRROR;
+               else if (boost::starts_with(segtype, "raid"))
+                   lv.lv_type = LvType::RAID;
+               else if (segtype == "linear" || segtype == "striped")
+                   lv.lv_type = LvType::NORMAL;
            }
            break;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLvm.h 
new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLvm.h
--- old/libstorage-ng-4.3.35/storage/SystemInfo/CmdLvm.h        2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/SystemInfo/CmdLvm.h        2020-07-22 
12:49:43.000000000 +0200
@@ -42,7 +42,7 @@
     {
     protected:
 
-       virtual ~CmdLvm() {}
+       virtual ~CmdLvm() = default;
 
        void parse(const vector<string>& lines, const char* tag);
        virtual void parse(json_object* object) = 0;
@@ -58,16 +58,14 @@
 
        struct Pv
        {
-           Pv() : pv_name(), pv_uuid(), vg_name(), vg_uuid(), pe_start(0), 
missing(false), duplicate(false) {}
-
            string pv_name;
            string pv_uuid;
            string vg_name;
            string vg_uuid;
-           unsigned long long pe_start;
+           unsigned long long pe_start = 0;
 
-           bool missing;
-           bool duplicate;
+           bool missing = false;
+           bool duplicate = false;
        };
 
        friend std::ostream& operator<<(std::ostream& s, const CmdPvs& cmd_pvs);
@@ -101,29 +99,22 @@
 
        struct Segment
        {
-           Segment() : stripes(0), stripe_size(0), chunk_size(0) {}
-
-           unsigned long stripes;
-           unsigned long long stripe_size;
-           unsigned long long chunk_size;
+           unsigned long stripes = 0;
+           unsigned long long stripe_size = 0;
+           unsigned long long chunk_size = 0;
        };
 
        struct Lv
        {
-           Lv() : lv_name(), lv_uuid(), vg_name(), vg_uuid(), 
lv_type(LvType::UNKNOWN),
-                  role(Role::PRIVATE), active(false), size(0), origin_size(0), 
pool_name(),
-                  pool_uuid(), origin_name(), origin_uuid(), data_name(), 
data_uuid(),
-                  metadata_name(), metadata_uuid() {}
-
            string lv_name;
            string lv_uuid;
            string vg_name;
            string vg_uuid;
-           LvType lv_type;
-           Role role;
-           bool active;
-           unsigned long long size;
-           unsigned long long origin_size;
+           LvType lv_type = LvType::UNKNOWN;
+           Role role = Role::PRIVATE;
+           bool active = false;
+           unsigned long long size = 0;
+           unsigned long long origin_size = 0;
            string pool_name;
            string pool_uuid;
            string origin_name;
@@ -165,13 +156,11 @@
 
        struct Vg
        {
-           Vg() : vg_name(), vg_uuid(), extent_size(0), extent_count(0), 
free_extent_count(0) {}
-
            string vg_name;
            string vg_uuid;
-           unsigned long extent_size;
-           unsigned long extent_count;
-           unsigned long free_extent_count;
+           unsigned long extent_size = 0;
+           unsigned long extent_count = 0;
+           unsigned long free_extent_count = 0;
        };
 
        friend std::ostream& operator<<(std::ostream& s, const CmdVgs& cmd_vgs);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libstorage-ng-4.3.35/storage/SystemInfo/CmdUdevadm.cc 
new/libstorage-ng-4.3.37/storage/SystemInfo/CmdUdevadm.cc
--- old/libstorage-ng-4.3.35/storage/SystemInfo/CmdUdevadm.cc   2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/SystemInfo/CmdUdevadm.cc   2020-07-22 
12:49:43.000000000 +0200
@@ -42,8 +42,7 @@
 
 
     CmdUdevadmInfo::CmdUdevadmInfo(const string& file)
-       : file(file), path(), name(), majorminor(0), 
device_type(DeviceType::UNKNOWN),
-         by_path_links(), by_id_links(), by_part_label_links(), 
by_part_uuid_links()
+       : file(file)
     {
        // Without emptying the udev queue 'udevadm info' can display old data
        // or even complain about unknown devices. Even during probing this
@@ -94,7 +93,7 @@
            if (boost::starts_with(line, "E: DEVTYPE="))
                device_type = toValueWithFallback(line.substr(strlen("E: 
DEVTYPE=")), DeviceType::UNKNOWN);
 
-           for (Link link : links)
+           for (const Link& link : links)
                if (boost::starts_with(line, link.name))
                    link.variable.push_back(line.substr(strlen(link.name)));
        }
@@ -107,7 +106,7 @@
 
        majorminor = makedev(major, minor);
 
-       for (Link link : links)
+       for (const Link& link : links)
            sort(link.variable.begin(), link.variable.end());
 
        y2mil(*this);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/storage/SystemInfo/CmdUdevadm.h 
new/libstorage-ng-4.3.37/storage/SystemInfo/CmdUdevadm.h
--- old/libstorage-ng-4.3.35/storage/SystemInfo/CmdUdevadm.h    2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/storage/SystemInfo/CmdUdevadm.h    2020-07-22 
12:49:43.000000000 +0200
@@ -73,9 +73,9 @@
        string path;
        string name;
 
-       dev_t majorminor;
+       dev_t majorminor = 0;
 
-       DeviceType device_type;
+       DeviceType device_type = DeviceType::UNKNOWN;
 
        vector<string> by_path_links;
        vector<string> by_id_links;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/testsuite/SystemInfo/lvs.cc 
new/libstorage-ng-4.3.37/testsuite/SystemInfo/lvs.cc
--- old/libstorage-ng-4.3.35/testsuite/SystemInfo/lvs.cc        2020-07-17 
10:03:20.000000000 +0200
+++ new/libstorage-ng-4.3.37/testsuite/SystemInfo/lvs.cc        2020-07-22 
12:49:43.000000000 +0200
@@ -179,13 +179,13 @@
     };
 
     vector<string> output = {
-       "lv:{ lv-name:[cache1-volume] 
lv-uuid:su0ZFA-ejBI-M3VL-gQDD-UNcu-W0o8-2aBdtj vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:true size:1073741824 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache1-volume] 
lv-uuid:su0ZFA-ejBI-M3VL-gQDD-UNcu-W0o8-2aBdtj vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:normal role:private 
active:true size:1073741824 segments:<stripes:1> }",
        "lv:{ lv-name:[cache1_corig] 
lv-uuid:ZzFhN5-b2N6-dL4F-H42U-dAP9-laF2-EU1F3p vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:normal role:private 
active:true size:10737418240 segments:<stripes:1> }",
        "lv:{ lv-name:[cache2-pool] 
lv-uuid:DfS7Ct-j41n-oz2e-C8vE-RuSt-blac-NjJwkW vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:cache-pool role:private 
active:false size:1073741824 data-name:[cache2-pool_cdata] 
data-uuid:Rkyj1k-9Ahg-mBQP-n820-bKvE-ZAzU-fwXJ6Q 
metadata-name:[cache2-pool_cmeta] 
metadata-uuid:3b8V9E-3Scj-Ox8j-6pss-QZIM-80jx-hDXYEi segments:<stripes:1 
chunk-size:65536> }",
-       "lv:{ lv-name:[cache2-pool_cdata] 
lv-uuid:Rkyj1k-9Ahg-mBQP-n820-bKvE-ZAzU-fwXJ6Q vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:true size:1073741824 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache2-pool_cdata] 
lv-uuid:Rkyj1k-9Ahg-mBQP-n820-bKvE-ZAzU-fwXJ6Q vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:normal role:private 
active:true size:1073741824 segments:<stripes:1> }",
        "lv:{ lv-name:[cache2-pool_cmeta] 
lv-uuid:3b8V9E-3Scj-Ox8j-6pss-QZIM-80jx-hDXYEi vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:true size:8388608 segments:<stripes:1> }",
        "lv:{ lv-name:[cache2_corig] 
lv-uuid:qhafQi-Nznt-WJCP-bMpl-Hx1x-w8tb-kt0EEa vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:normal role:private 
active:true size:10737418240 segments:<stripes:1> }",
-       "lv:{ lv-name:[cache3-pool_cdata] 
lv-uuid:BnZkZ2-gkl8-7nL8-dsai-meu0-vhht-OYteZH vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:false size:1073741824 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache3-pool_cdata] 
lv-uuid:BnZkZ2-gkl8-7nL8-dsai-meu0-vhht-OYteZH vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:normal role:private 
active:false size:1073741824 segments:<stripes:1> }",
        "lv:{ lv-name:[cache3-pool_cmeta] 
lv-uuid:fSwqC3-OCBQ-UYSF-hV5Z-6NRB-TQL0-y3wYzS vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:false size:8388608 segments:<stripes:1> }",
        "lv:{ lv-name:[lvol0_pmspare] 
lv-uuid:vLO1sd-Slsj-VY6P-sTzJ-ZEya-0hFZ-uAJTuq vg-name:test 
vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:unknown role:private 
active:false size:8388608 segments:<stripes:1> }",
        "lv:{ lv-name:cache1 lv-uuid:R3wAkS-5BJp-VwEe-DS9r-gBJG-jlgB-MvwUGG 
vg-name:test vg-uuid:55auVT-aQ8G-MPiA-uXy1-dvJa-XNOs-6BWsXC lv-type:cache 
role:public active:true size:10737418240 pool-name:[cache1-volume] 
pool-uuid:su0ZFA-ejBI-M3VL-gQDD-UNcu-W0o8-2aBdtj segments:<stripes:1 
chunk-size:65536> }",
@@ -298,4 +298,91 @@
     };
 
     check(input, output);
+}
+
+
+BOOST_AUTO_TEST_CASE(parse9)
+{
+    // Several logical volumes with snapshots that are reported as origin by 
lvs, so the
+    // type (normal, raid, cache, ...) depends on the segtype.
+
+    vector<string> input = {
+       "  {",
+       "      \"report\": [",
+       "          {",
+       "              \"lv\": [",
+       "                  {\"lv_name\":\"cache1\", 
\"lv_uuid\":\"hOiWKM-Cy45-OTvw-d4vR-inXD-bol2-zw7ses\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-C---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"10737418240\", 
\"segtype\":\"cache\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"65536\", \"pool_lv\":\"[cache1-volume]\", 
\"pool_lv_uuid\":\"3Roi9q-GIIJ-yFvy-F5fc-wazU-kMdX-4CaVJh\", 
\"origin\":\"[cache1_corig]\", 
\"origin_uuid\":\"1Uy23z-t5Re-WfZX-c0B6-jHhR-JuF4-W7JbX4\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"cache1-snap\", 
\"lv_uuid\":\"BMgF2x-ft26-EuK4-PfPv-BHEr-MMAP-a9Uscw\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"10737418240\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"cache1\", 
\"origin_uuid\":\"hOiWKM-Cy45-OTvw-d4vR-inXD-bol2-zw7ses\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[cache1-volume]\", 
\"lv_uuid\":\"3Roi9q-GIIJ-yFvy-F5fc-wazU-kMdX-4CaVJh\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private\", \"lv_attr\":\"Cwi-aoC---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[cache1_corig]\", 
\"lv_uuid\":\"1Uy23z-t5Re-WfZX-c0B6-jHhR-JuF4-W7JbX4\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,cache,origin,cacheorigin\", \"lv_attr\":\"owi-aoC---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"cache2\", 
\"lv_uuid\":\"kyQmHp-8HiZ-PtK0-7TxV-FcVV-iRWi-8nugzx\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-C---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"10737418240\", 
\"segtype\":\"cache\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"65536\", \"pool_lv\":\"[cache2-pool]\", 
\"pool_lv_uuid\":\"CAFMIn-I6Sf-MecC-Ml9y-8rHu-2e14-jkRfng\", 
\"origin\":\"[cache2_corig]\", 
\"origin_uuid\":\"pwFXSG-PJ9U-jTgO-PL3z-7SCZ-hZ0D-RlUFT6\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[cache2-pool]\", 
\"lv_uuid\":\"CAFMIn-I6Sf-MecC-Ml9y-8rHu-2e14-jkRfng\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private\", \"lv_attr\":\"Cwi---C---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"\", \"segtype\":\"cache-pool\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"65536\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"[cache2-pool_cdata]\", 
\"data_lv_uuid\":\"PyuiGz-CB7m-H81T-w4Am-7bM3-92O1-Ja391A\", 
\"metadata_lv\":\"[cache2-pool_cmeta]\", 
\"metadata_lv_uuid\":\"LOIc6h-R7ji-atV0-IcMz-1d0K-1vyw-cIbMj5\"},",
+       "                  {\"lv_name\":\"[cache2-pool_cdata]\", 
\"lv_uuid\":\"PyuiGz-CB7m-H81T-w4Am-7bM3-92O1-Ja391A\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,cache,pool,data\", \"lv_attr\":\"Cwi-ao----\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[cache2-pool_cmeta]\", 
\"lv_uuid\":\"LOIc6h-R7ji-atV0-IcMz-1d0K-1vyw-cIbMj5\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,cache,pool,metadata\", \"lv_attr\":\"ewi-ao----\", 
\"lv_size\":\"8388608\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"cache2-snap\", 
\"lv_uuid\":\"occp3W-hd5C-4Upb-MJ08-bj0W-6qSK-DEolsv\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"10737418240\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"cache2\", 
\"origin_uuid\":\"kyQmHp-8HiZ-PtK0-7TxV-FcVV-iRWi-8nugzx\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[cache2_corig]\", 
\"lv_uuid\":\"pwFXSG-PJ9U-jTgO-PL3z-7SCZ-hZ0D-RlUFT6\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,cache,origin,cacheorigin\", \"lv_attr\":\"owi-aoC---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"linear\", 
\"lv_uuid\":\"Uc5EDE-fVaz-9N6M-rkYh-iq4n-kHZu-3qOjxX\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-s---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"10737418240\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"0\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", 
\"origin_uuid\":\"\", \"data_lv\":\"\", \"data_lv_uuid\":\"\", 
\"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"linear-snap\", 
\"lv_uuid\":\"XNxQEY-xgXk-ztle-9vtN-ayma-tWVL-xEDNR5\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"10737418240\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"linear\", 
\"origin_uuid\":\"Uc5EDE-fVaz-9N6M-rkYh-iq4n-kHZu-3qOjxX\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[lvol0_pmspare]\", 
\"lv_uuid\":\"c9k6dk-qgwV-ZUU1-et7J-jS6b-nKby-THgkio\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,pool,spare\", \"lv_attr\":\"ewi-------\", 
\"lv_size\":\"8388608\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"mirror\", 
\"lv_uuid\":\"iW0JIT-d1Dz-DEGS-b1uM-1d7h-gBx7-yLHVY9\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-m---\", 
\"lv_size\":\"2147483648\", \"origin_size\":\"2147483648\", 
\"segtype\":\"mirror\", \"stripes\":\"2\", \"stripe_size\":\"0\", 
\"chunk_size\":\"0\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", 
\"origin_uuid\":\"\", \"data_lv\":\"\", \"data_lv_uuid\":\"\", 
\"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"mirror-snap\", 
\"lv_uuid\":\"jv03Ag-gctg-E2lF-GtGZ-nNRe-7N3d-ZaEggG\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"2147483648\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"mirror\", 
\"origin_uuid\":\"iW0JIT-d1Dz-DEGS-b1uM-1d7h-gBx7-yLHVY9\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[mirror_mimage_0]\", 
\"lv_uuid\":\"ey2DSj-J6ge-WQvp-MGvP-q6WB-G0ko-zwJb71\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,mirror,image\", \"lv_attr\":\"iwi-aom---\", 
\"lv_size\":\"2147483648\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[mirror_mimage_1]\", 
\"lv_uuid\":\"bl5iiI-iLz0-CgZJ-EoD2-vMvo-brhj-MbKzhq\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,mirror,image\", \"lv_attr\":\"iwi-aom---\", 
\"lv_size\":\"2147483648\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[mirror_mlog]\", 
\"lv_uuid\":\"Jgxglt-c14Y-l4cb-xOHI-fT50-Zm9n-cV8urT\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,mirror,log\", \"lv_attr\":\"lwi-aom---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"raid6\", 
\"lv_uuid\":\"n1rm7u-BtXa-srwK-pUaL-TZvf-9hZr-Jah84M\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-r---\", 
\"lv_size\":\"2151677952\", \"origin_size\":\"2151677952\", 
\"segtype\":\"raid6\", \"stripes\":\"5\", \"stripe_size\":\"65536\", 
\"chunk_size\":\"0\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", 
\"origin_uuid\":\"\", \"data_lv\":\"\", \"data_lv_uuid\":\"\", 
\"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"raid6-snap\", 
\"lv_uuid\":\"ylBCXu-Sm7u-8jbz-qHd8-lVsK-fq1T-ReBZUO\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"2151677952\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"raid6\", 
\"origin_uuid\":\"n1rm7u-BtXa-srwK-pUaL-TZvf-9hZr-Jah84M\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rimage_0]\", 
\"lv_uuid\":\"1V6IID-fOXI-KeRv-ovjy-UzAC-wnST-rFv2ln\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,image\", \"lv_attr\":\"iwi-aor---\", 
\"lv_size\":\"717225984\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rimage_1]\", 
\"lv_uuid\":\"RWGZnn-g1Ju-iIHm-AwB5-9f8j-Y0Q8-c2TZKW\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,image\", \"lv_attr\":\"iwi-aor---\", 
\"lv_size\":\"717225984\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rimage_2]\", 
\"lv_uuid\":\"NfgHNx-k4YK-cW20-MKbK-9iQ3-NchX-psNNVt\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,image\", \"lv_attr\":\"iwi-aor---\", 
\"lv_size\":\"717225984\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rimage_3]\", 
\"lv_uuid\":\"pFymCC-OT6c-51wn-CaB7-Qr3h-87Sf-nns82A\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,image\", \"lv_attr\":\"iwi-aor---\", 
\"lv_size\":\"717225984\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rimage_4]\", 
\"lv_uuid\":\"S9pGmS-MKxJ-EJg4-1GHj-7Lvy-h7Ij-iCM61C\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,image\", \"lv_attr\":\"iwi-aor---\", 
\"lv_size\":\"717225984\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rmeta_0]\", 
\"lv_uuid\":\"TDZuIK-nm3E-N4Ug-VGuW-BVTt-0Q8y-YyZdgw\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,metadata\", \"lv_attr\":\"ewi-aor---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rmeta_1]\", 
\"lv_uuid\":\"8Ytd8Q-dZEs-8Fzo-TkIY-3w4N-A8SH-FArGcD\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,metadata\", \"lv_attr\":\"ewi-aor---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rmeta_2]\", 
\"lv_uuid\":\"LcgnBT-Hb5O-JsT9-rJn4-azZa-X9ln-0ZL22x\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,metadata\", \"lv_attr\":\"ewi-aor---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rmeta_3]\", 
\"lv_uuid\":\"cJGldu-kR6W-jN1t-4RkQ-vzsK-exDX-7XT2Mz\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,metadata\", \"lv_attr\":\"ewi-aor---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"[raid6_rmeta_4]\", 
\"lv_uuid\":\"9tnCbg-rhqO-P6RU-oycL-Lmw9-MT3z-17DYeU\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"private,raid,metadata\", \"lv_attr\":\"ewi-aor---\", 
\"lv_size\":\"4194304\", \"origin_size\":\"\", \"segtype\":\"linear\", 
\"stripes\":\"1\", \"stripe_size\":\"0\", \"chunk_size\":\"0\", 
\"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", \"origin_uuid\":\"\", 
\"data_lv\":\"\", \"data_lv_uuid\":\"\", \"metadata_lv\":\"\", 
\"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"striped\", 
\"lv_uuid\":\"wwaG9y-0eO6-YV8V-oodX-esnr-H6ou-14lrvj\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,origin,thickorigin\", \"lv_attr\":\"owi-a-s---\", 
\"lv_size\":\"10737418240\", \"origin_size\":\"10737418240\", 
\"segtype\":\"striped\", \"stripes\":\"2\", \"stripe_size\":\"65536\", 
\"chunk_size\":\"0\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", \"origin\":\"\", 
\"origin_uuid\":\"\", \"data_lv\":\"\", \"data_lv_uuid\":\"\", 
\"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"},",
+       "                  {\"lv_name\":\"striped-snap\", 
\"lv_uuid\":\"sDdckH-L9qv-3s3B-90fY-236h-pjH5-41Ac07\", \"vg_name\":\"test\", 
\"vg_uuid\":\"hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz\", 
\"lv_role\":\"public,snapshot,thicksnapshot\", \"lv_attr\":\"swi-a-s---\", 
\"lv_size\":\"1073741824\", \"origin_size\":\"10737418240\", 
\"segtype\":\"linear\", \"stripes\":\"1\", \"stripe_size\":\"0\", 
\"chunk_size\":\"4096\", \"pool_lv\":\"\", \"pool_lv_uuid\":\"\", 
\"origin\":\"striped\", 
\"origin_uuid\":\"wwaG9y-0eO6-YV8V-oodX-esnr-H6ou-14lrvj\", \"data_lv\":\"\", 
\"data_lv_uuid\":\"\", \"metadata_lv\":\"\", \"metadata_lv_uuid\":\"\"}",
+       "              ]",
+       "          }",
+       "      ]",
+       "  }"
+    };
+
+    vector<string> output = {
+       "lv:{ lv-name:[cache1-volume] 
lv-uuid:3Roi9q-GIIJ-yFvy-F5fc-wazU-kMdX-4CaVJh vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal role:private 
active:true size:1073741824 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache1_corig] 
lv-uuid:1Uy23z-t5Re-WfZX-c0B6-jHhR-JuF4-W7JbX4 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal role:private 
active:true size:10737418240 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache2-pool] 
lv-uuid:CAFMIn-I6Sf-MecC-Ml9y-8rHu-2e14-jkRfng vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:cache-pool role:private 
active:false size:1073741824 data-name:[cache2-pool_cdata] 
data-uuid:PyuiGz-CB7m-H81T-w4Am-7bM3-92O1-Ja391A 
metadata-name:[cache2-pool_cmeta] 
metadata-uuid:LOIc6h-R7ji-atV0-IcMz-1d0K-1vyw-cIbMj5 segments:<stripes:1 
chunk-size:65536> }",
+       "lv:{ lv-name:[cache2-pool_cdata] 
lv-uuid:PyuiGz-CB7m-H81T-w4Am-7bM3-92O1-Ja391A vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal role:private 
active:true size:1073741824 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache2-pool_cmeta] 
lv-uuid:LOIc6h-R7ji-atV0-IcMz-1d0K-1vyw-cIbMj5 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:8388608 segments:<stripes:1> }",
+       "lv:{ lv-name:[cache2_corig] 
lv-uuid:pwFXSG-PJ9U-jTgO-PL3z-7SCZ-hZ0D-RlUFT6 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal role:private 
active:true size:10737418240 segments:<stripes:1> }",
+       "lv:{ lv-name:[lvol0_pmspare] 
lv-uuid:c9k6dk-qgwV-ZUU1-et7J-jS6b-nKby-THgkio vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:false size:8388608 segments:<stripes:1> }",
+       "lv:{ lv-name:[mirror_mimage_0] 
lv-uuid:ey2DSj-J6ge-WQvp-MGvP-q6WB-G0ko-zwJb71 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:2147483648 segments:<stripes:1> }",
+       "lv:{ lv-name:[mirror_mimage_1] 
lv-uuid:bl5iiI-iLz0-CgZJ-EoD2-vMvo-brhj-MbKzhq vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:2147483648 segments:<stripes:1> }",
+       "lv:{ lv-name:[mirror_mlog] 
lv-uuid:Jgxglt-c14Y-l4cb-xOHI-fT50-Zm9n-cV8urT vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rimage_0] 
lv-uuid:1V6IID-fOXI-KeRv-ovjy-UzAC-wnST-rFv2ln vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:717225984 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rimage_1] 
lv-uuid:RWGZnn-g1Ju-iIHm-AwB5-9f8j-Y0Q8-c2TZKW vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:717225984 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rimage_2] 
lv-uuid:NfgHNx-k4YK-cW20-MKbK-9iQ3-NchX-psNNVt vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:717225984 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rimage_3] 
lv-uuid:pFymCC-OT6c-51wn-CaB7-Qr3h-87Sf-nns82A vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:717225984 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rimage_4] 
lv-uuid:S9pGmS-MKxJ-EJg4-1GHj-7Lvy-h7Ij-iCM61C vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:717225984 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rmeta_0] 
lv-uuid:TDZuIK-nm3E-N4Ug-VGuW-BVTt-0Q8y-YyZdgw vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rmeta_1] 
lv-uuid:8Ytd8Q-dZEs-8Fzo-TkIY-3w4N-A8SH-FArGcD vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rmeta_2] 
lv-uuid:LcgnBT-Hb5O-JsT9-rJn4-azZa-X9ln-0ZL22x vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rmeta_3] 
lv-uuid:cJGldu-kR6W-jN1t-4RkQ-vzsK-exDX-7XT2Mz vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:[raid6_rmeta_4] 
lv-uuid:9tnCbg-rhqO-P6RU-oycL-Lmw9-MT3z-17DYeU vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:unknown role:private 
active:true size:4194304 segments:<stripes:1> }",
+       "lv:{ lv-name:cache1 lv-uuid:hOiWKM-Cy45-OTvw-d4vR-inXD-bol2-zw7ses 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:cache 
role:public active:true size:10737418240 origin-size:10737418240 
pool-name:[cache1-volume] pool-uuid:3Roi9q-GIIJ-yFvy-F5fc-wazU-kMdX-4CaVJh 
origin-name:[cache1_corig] origin-uuid:1Uy23z-t5Re-WfZX-c0B6-jHhR-JuF4-W7JbX4 
segments:<stripes:1 chunk-size:65536> }",
+       "lv:{ lv-name:cache1-snap 
lv-uuid:BMgF2x-ft26-EuK4-PfPv-BHEr-MMAP-a9Uscw vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot role:public 
active:true size:1073741824 origin-size:10737418240 origin-name:cache1 
origin-uuid:hOiWKM-Cy45-OTvw-d4vR-inXD-bol2-zw7ses segments:<stripes:1 
chunk-size:4096> }",
+       "lv:{ lv-name:cache2 lv-uuid:kyQmHp-8HiZ-PtK0-7TxV-FcVV-iRWi-8nugzx 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:cache 
role:public active:true size:10737418240 origin-size:10737418240 
pool-name:[cache2-pool] pool-uuid:CAFMIn-I6Sf-MecC-Ml9y-8rHu-2e14-jkRfng 
origin-name:[cache2_corig] origin-uuid:pwFXSG-PJ9U-jTgO-PL3z-7SCZ-hZ0D-RlUFT6 
segments:<stripes:1 chunk-size:65536> }",
+       "lv:{ lv-name:cache2-snap 
lv-uuid:occp3W-hd5C-4Upb-MJ08-bj0W-6qSK-DEolsv vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot role:public 
active:true size:1073741824 origin-size:10737418240 origin-name:cache2 
origin-uuid:kyQmHp-8HiZ-PtK0-7TxV-FcVV-iRWi-8nugzx segments:<stripes:1 
chunk-size:4096> }",
+       "lv:{ lv-name:linear lv-uuid:Uc5EDE-fVaz-9N6M-rkYh-iq4n-kHZu-3qOjxX 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal 
role:public active:true size:10737418240 origin-size:10737418240 
segments:<stripes:1> }",
+       "lv:{ lv-name:linear-snap 
lv-uuid:XNxQEY-xgXk-ztle-9vtN-ayma-tWVL-xEDNR5 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot role:public 
active:true size:1073741824 origin-size:10737418240 origin-name:linear 
origin-uuid:Uc5EDE-fVaz-9N6M-rkYh-iq4n-kHZu-3qOjxX segments:<stripes:1 
chunk-size:4096> }",
+       "lv:{ lv-name:mirror lv-uuid:iW0JIT-d1Dz-DEGS-b1uM-1d7h-gBx7-yLHVY9 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:mirror 
role:public active:true size:2147483648 origin-size:2147483648 
segments:<stripes:2> }",
+       "lv:{ lv-name:mirror-snap 
lv-uuid:jv03Ag-gctg-E2lF-GtGZ-nNRe-7N3d-ZaEggG vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot role:public 
active:true size:1073741824 origin-size:2147483648 origin-name:mirror 
origin-uuid:iW0JIT-d1Dz-DEGS-b1uM-1d7h-gBx7-yLHVY9 segments:<stripes:1 
chunk-size:4096> }",
+       "lv:{ lv-name:raid6 lv-uuid:n1rm7u-BtXa-srwK-pUaL-TZvf-9hZr-Jah84M 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:raid 
role:public active:true size:2151677952 origin-size:2151677952 
segments:<stripes:5 stripe-size:65536> }",
+       "lv:{ lv-name:raid6-snap lv-uuid:ylBCXu-Sm7u-8jbz-qHd8-lVsK-fq1T-ReBZUO 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot 
role:public active:true size:1073741824 origin-size:2151677952 
origin-name:raid6 origin-uuid:n1rm7u-BtXa-srwK-pUaL-TZvf-9hZr-Jah84M 
segments:<stripes:1 chunk-size:4096> }",
+       "lv:{ lv-name:striped lv-uuid:wwaG9y-0eO6-YV8V-oodX-esnr-H6ou-14lrvj 
vg-name:test vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:normal 
role:public active:true size:10737418240 origin-size:10737418240 
segments:<stripes:2 stripe-size:65536> }",
+       "lv:{ lv-name:striped-snap 
lv-uuid:sDdckH-L9qv-3s3B-90fY-236h-pjH5-41Ac07 vg-name:test 
vg-uuid:hW15Gj-YaBO-Y7yK-Xdc0-L04A-UyJk-2cg3Wz lv-type:snapshot role:public 
active:true size:1073741824 origin-size:10737418240 origin-name:striped 
origin-uuid:wwaG9y-0eO6-YV8V-oodX-esnr-H6ou-14lrvj segments:<stripes:1 
chunk-size:4096> }"
+    };
+
+    check(input, output);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libstorage-ng-4.3.35/testsuite/probe.cc 
new/libstorage-ng-4.3.37/testsuite/probe.cc
--- old/libstorage-ng-4.3.35/testsuite/probe.cc 2020-07-17 10:03:20.000000000 
+0200
+++ new/libstorage-ng-4.3.37/testsuite/probe.cc 2020-07-22 12:49:43.000000000 
+0200
@@ -21,7 +21,7 @@
     storage.probe();
     storage.check();
 
-    BOOST_CHECK_EQUAL(storage.get_devicegraph_names().size(), 3);
+    BOOST_CHECK_EQUAL(storage.get_devicegraphs().size(), 3);
 
     const Devicegraph* probed = storage.get_probed();
 


Reply via email to