On Fri, Nov 04, 2011 at 01:12:39AM +0000, Alasdair G Kergon wrote:
> Wrong.  It fails upstream too.

Not thoroughly tested, but probably fix along these lines.

I.e. some recursion is missing.

Alasdair

--- lv_manip.c  3 Nov 2011 15:46:51 -0000       1.319
+++ lv_manip.c  4 Nov 2011 01:24:26 -0000
@@ -2749,13 +2749,20 @@
        struct lv_segment *seg;
        uint32_t s;
 
-       if (lv_is_cow(lv) && lv_is_virtual_origin(org = origin_from_cow(lv)))
+       if (lv_is_cow(lv) && lv_is_virtual_origin(org = origin_from_cow(lv))) {
                if (!fn(cmd, org, data))
                        return_0;
+               if (!for_each_sub_lv(cmd, org, fn, data))
+                       return_0;
+       }
 
        dm_list_iterate_items(seg, &lv->segments) {
-               if (seg->log_lv && !fn(cmd, seg->log_lv, data))
-                       return_0;
+               if (seg->log_lv) {
+                       if (!fn(cmd, seg->log_lv, data))
+                               return_0;
+                       if (!for_each_sub_lv(cmd, seg->log_lv, fn, data))
+                               return_0;
+               }
                if (seg->pool_metadata_lv && !fn(cmd, seg->pool_metadata_lv, 
data))
                        return_0;
                for (s = 0; s < seg->area_count; s++) {



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to