]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/diskfilter.c (grub_diskfilter_memberlist): Add scanning
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 10 Mar 2012 12:07:39 +0000 (13:07 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 10 Mar 2012 12:07:39 +0000 (13:07 +0100)
of diskfilter for diskfilter on diskfilter support.

ChangeLog
grub-core/disk/diskfilter.c

index 841e0e6b152e695e1ab971145b99475f0098a445..e2b49a89e94a4e9331393e1909dd09b23952aa01 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-03-10  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/diskfilter.c (grub_diskfilter_memberlist): Add scanning
+       of diskfilter for diskfilter on diskfilter support.
+
 2012-03-10  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * util/getroot.c (exec_pipe): Ensure that the child is not localised.
index f76eabf05da480ec6b4c1ae3486b0a569cf75443..440194ab6613cead37046875f7ef9a0bc2ca09be 100644 (file)
@@ -260,6 +260,8 @@ grub_diskfilter_memberlist (grub_disk_t disk)
   struct grub_diskfilter_pv *pv;
   grub_disk_pull_t pull;
   grub_disk_dev_t p;
+  struct grub_diskfilter_vg *vg;
+  struct grub_diskfilter_lv *lv2 = NULL;
 
   if (!lv->vg->pvs)
     return NULL;
@@ -278,6 +280,19 @@ grub_diskfilter_memberlist (grub_disk_t disk)
            pv = pv->next;
        }
 
+  for (vg = array_list; pv && vg; vg = vg->next)
+    {
+      if (vg->lvs)
+       for (lv2 = vg->lvs; pv && lv2; lv2 = lv2->next)
+         if (!lv2->scanned && lv2->fullname && lv2->became_readable_at)
+           {
+             scan_disk (lv2->fullname);
+             lv2->scanned = 1;
+             while (pv && pv->disk)
+               pv = pv->next;
+           }
+    }
+
   for (pv = lv->vg->pvs; pv; pv = pv->next)
     {
       if (!pv->disk)