From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28012 invoked by alias); 5 Jul 2011 18:36:38 -0000 Received: (qmail 27968 invoked by uid 9447); 5 Jul 2011 18:36:37 -0000 Date: Tue, 05 Jul 2011 18:36:00 -0000 Message-ID: <20110705183637.27966.qmail@sourceware.org> From: agk@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib/activate activate.c Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2011-07/txt/msg00008.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2011-07-05 18:36:37 Modified files: lib/activate : activate.c Log message: Always perform preload logic before suspending - not only in the case when we have precommitted metadata. (Necessary to avoid loading tables while suspend in lvchange --refresh.) Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/activate.c.diff?cvsroot=lvm2&r1=1.206&r2=1.207 --- LVM2/lib/activate/activate.c 2011/07/05 01:08:42 1.206 +++ LVM2/lib/activate/activate.c 2011/07/05 18:36:37 1.207 @@ -1168,49 +1168,47 @@ lv_calculate_readahead(lv, NULL); /* - * If VG was precommitted, preload devices for the LV. + * Preload devices for the LV. * If the PVMOVE LV is being removed, it's only present in the old * metadata and not the new, so we must explicitly add the new * tables for all the changed LVs here, as the relationships * are not found by walking the new metadata. */ - if ((lv_pre->vg->status & PRECOMMITTED)) { - if (!(lv_pre->status & LOCKED) && - (lv->status & LOCKED) && - (pvmove_lv = find_pvmove_lv_in_lv(lv))) { - /* Preload all the LVs above the PVMOVE LV */ - dm_list_iterate_items(sl, &pvmove_lv->segs_using_this_lv) { - if (!(lvl_pre = find_lv_in_vg(lv_pre->vg, sl->seg->lv->name))) { - /* FIXME Internal error? */ - log_error("LV %s missing from preload metadata", sl->seg->lv->name); - goto out; - } - if (!_lv_preload(lvl_pre->lv, laopts, &flush_required)) - goto_out; - } - /* Now preload the PVMOVE LV itself */ - if (!(lvl_pre = find_lv_in_vg(lv_pre->vg, pvmove_lv->name))) { + if (!(lv_pre->status & LOCKED) && + (lv->status & LOCKED) && + (pvmove_lv = find_pvmove_lv_in_lv(lv))) { + /* Preload all the LVs above the PVMOVE LV */ + dm_list_iterate_items(sl, &pvmove_lv->segs_using_this_lv) { + if (!(lvl_pre = find_lv_in_vg(lv_pre->vg, sl->seg->lv->name))) { /* FIXME Internal error? */ - log_error("LV %s missing from preload metadata", pvmove_lv->name); + log_error("LV %s missing from preload metadata", sl->seg->lv->name); goto out; } if (!_lv_preload(lvl_pre->lv, laopts, &flush_required)) goto_out; - } else { - if (!_lv_preload(lv_pre, laopts, &flush_required)) - /* FIXME Revert preloading */ - goto_out; + } + /* Now preload the PVMOVE LV itself */ + if (!(lvl_pre = find_lv_in_vg(lv_pre->vg, pvmove_lv->name))) { + /* FIXME Internal error? */ + log_error("LV %s missing from preload metadata", pvmove_lv->name); + goto out; + } + if (!_lv_preload(lvl_pre->lv, laopts, &flush_required)) + goto_out; + } else { + if (!_lv_preload(lv_pre, laopts, &flush_required)) + /* FIXME Revert preloading */ + goto_out; - /* - * Search for existing LVs that have become detached and preload them. - */ - detached.lv_pre = lv_pre; - detached.laopts = laopts; - detached.flush_required = &flush_required; + /* + * Search for existing LVs that have become detached and preload them. + */ + detached.lv_pre = lv_pre; + detached.laopts = laopts; + detached.flush_required = &flush_required; - if (!for_each_sub_lv(cmd, lv, &_preload_detached_lv, &detached)) - goto_out; - } + if (!for_each_sub_lv(cmd, lv, &_preload_detached_lv, &detached)) + goto_out; } if (!monitor_dev_for_events(cmd, lv, laopts, 0))