diff --git a/ChangeLog b/ChangeLog index 841e0e6b1..e2b49a89e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2012-03-10 Vladimir Serbinenko + + * grub-core/disk/diskfilter.c (grub_diskfilter_memberlist): Add scanning + of diskfilter for diskfilter on diskfilter support. + 2012-03-10 Vladimir Serbinenko * util/getroot.c (exec_pipe): Ensure that the child is not localised. diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c index f76eabf05..440194ab6 100644 --- a/grub-core/disk/diskfilter.c +++ b/grub-core/disk/diskfilter.c @@ -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)