From agk@sourceware.org Tue Jul 4 18:52:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Tue, 04 Jul 2006 18:52:00 -0000 Subject: LVM2/tools vgreduce.c Message-ID: <20060704185159.26630.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-04 18:51:59 Modified files: tools : vgreduce.c Log message: If VG is already consistent with --removemissing, return success not failure. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.48&r2=1.49 --- LVM2/tools/vgreduce.c 2006/05/12 19:16:48 1.48 +++ LVM2/tools/vgreduce.c 2006/07/04 18:51:59 1.49 @@ -476,7 +476,7 @@ log_error("Volume group \"%s\" is already consistent", vg_name); unlock_vg(cmd, vg_name); - return ECMD_FAILED; + return ECMD_PROCESSED; } init_partial(1); From agk@sourceware.org Tue Jul 4 18:57:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Tue, 04 Jul 2006 18:57:00 -0000 Subject: LVM2 ./WHATS_NEW dmeventd/mirror/dmeventd_mirror.c Message-ID: <20060704185727.27529.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-04 18:57:27 Modified files: . : WHATS_NEW dmeventd/mirror: dmeventd_mirror.c Log message: Add mutex to dmeventd_mirror to avoid concurrent execution. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.404&r2=1.405 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/dmeventd/mirror/dmeventd_mirror.c.diff?cvsroot=lvm2&r1=1.6&r2=1.7 --- LVM2/WHATS_NEW 2006/06/14 20:27:15 1.404 +++ LVM2/WHATS_NEW 2006/07/04 18:57:26 1.405 @@ -1,5 +1,7 @@ Version 2.02.07 - ================================= + Add mutex to dmeventd_mirror to avoid concurrent execution. + Fix vgreduce --removemissing to return success if VG is already consistent. Fix return code if VG specified on command line is not found. Fix PV tools to include orphaned PVs in default output again. Fixed unaligned access when using clvm. --- LVM2/dmeventd/mirror/dmeventd_mirror.c 2006/05/11 19:45:53 1.6 +++ LVM2/dmeventd/mirror/dmeventd_mirror.c 2006/07/04 18:57:27 1.7 @@ -31,6 +31,8 @@ #define ME_INSYNC 1 #define ME_FAILURE 2 +static pthread_mutex_t _lock = PTHREAD_MUTEX_INITIALIZER; + /* FIXME: We may need to lock around operations to these */ static int register_count = 0; static struct dm_pool *mem_pool = NULL; @@ -150,6 +152,10 @@ char *target_type = NULL; char *params; + if (pthread_mutex_trylock(&_lock)) { + syslog(LOG_NOTICE, "Another thread is handling an event. Waiting..."); + pthread_mutex_lock(&_lock); + } /* FIXME Move inside libdevmapper */ if (!(dmt = dm_task_create(DM_DEVICE_STATUS))) { syslog(LOG_ERR, "Unable to create dm_task.\n"); @@ -204,6 +210,7 @@ fail: if (dmt) dm_task_destroy(dmt); + pthread_mutex_unlock(&_lock); } int register_device(const char *device) From agk@sourceware.org Tue Jul 4 19:36:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Tue, 04 Jul 2006 19:36:00 -0000 Subject: LVM2 ./WHATS_NEW lib/metadata/metadata.c Message-ID: <20060704193649.27103.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-04 19:36:49 Modified files: . : WHATS_NEW lib/metadata : metadata.c Log message: Add some forgotten memlock checks to _vg_read to protect against full scans. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.405&r2=1.406 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.93&r2=1.94 --- LVM2/WHATS_NEW 2006/07/04 18:57:26 1.405 +++ LVM2/WHATS_NEW 2006/07/04 19:36:48 1.406 @@ -1,5 +1,6 @@ Version 2.02.07 - ================================= + Add some forgotten memlock checks to _vg_read to protect against full scans. Add mutex to dmeventd_mirror to avoid concurrent execution. Fix vgreduce --removemissing to return success if VG is already consistent. Fix return code if VG specified on command line is not found. --- LVM2/lib/metadata/metadata.c 2006/05/11 17:58:58 1.93 +++ LVM2/lib/metadata/metadata.c 2006/07/04 19:36:49 1.94 @@ -993,7 +993,11 @@ if (list_size(&correct_vg->pvs) != list_size(pvids)) { log_debug("Cached VG %s had incorrect PV list", vg->name); - correct_vg = NULL; + + if (memlock()) + inconsistent = 1; + else + correct_vg = NULL; } else list_iterate_items(pvl, &correct_vg->pvs) { if (!str_list_match_item(pvids, pvl->pv->dev->pvid)) { log_debug("Cached VG %s had incorrect PV list", @@ -1008,6 +1012,10 @@ if (!correct_vg) { inconsistent = 0; + if (memlock()) { + stack; + return NULL; + } lvmcache_label_scan(cmd, 2); if (!(fmt = fmt_from_vgname(vgname, vgid))) { stack; @@ -1149,7 +1157,8 @@ if (!consistent) { log_error("Volume group %s metadata is " "inconsistent", vginfo->vgname); - return NULL; + if (!partial_mode()) + return NULL; } return vg; } From agk@sourceware.org Tue Jul 4 19:40:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Tue, 04 Jul 2006 19:40:00 -0000 Subject: LVM2 ./WHATS_NEW lib/misc/sharedlib.c Message-ID: <20060704194027.31307.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-04 19:40:27 Modified files: . : WHATS_NEW lib/misc : sharedlib.c Log message: Use RTLD_GLOBAL when loading shared libraries. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.406&r2=1.407 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/sharedlib.c.diff?cvsroot=lvm2&r1=1.9&r2=1.10 --- LVM2/WHATS_NEW 2006/07/04 19:36:48 1.406 +++ LVM2/WHATS_NEW 2006/07/04 19:40:27 1.407 @@ -1,5 +1,6 @@ Version 2.02.07 - ================================= + Use RTLD_GLOBAL when loading shared libraries. Add some forgotten memlock checks to _vg_read to protect against full scans. Add mutex to dmeventd_mirror to avoid concurrent execution. Fix vgreduce --removemissing to return success if VG is already consistent. --- LVM2/lib/misc/sharedlib.c 2006/05/16 16:48:30 1.9 +++ LVM2/lib/misc/sharedlib.c 2006/07/04 19:40:27 1.10 @@ -47,13 +47,13 @@ log_very_verbose("Opening shared %s library %s", desc, path); - if (!(library = dlopen(path, RTLD_LAZY))) { + if (!(library = dlopen(path, RTLD_LAZY | RTLD_GLOBAL))) { if (silent && ignorelockingfailure()) log_verbose("Unable to open external %s library %s", desc, path); else - log_error("Unable to open external %s library %s", - desc, path); + log_error("Unable to open external %s library %s: %s", + desc, path, dlerror()); } return library; From agk@sourceware.org Tue Jul 4 19:52:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Tue, 04 Jul 2006 19:52:00 -0000 Subject: LVM2/tools vgreduce.c Message-ID: <20060704195248.6493.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-04 19:52:47 Modified files: tools : vgreduce.c Log message: Differentiate between the two 'log device failed' cases in vgreduce. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/vgreduce.c.diff?cvsroot=lvm2&r1=1.49&r2=1.50 --- LVM2/tools/vgreduce.c 2006/07/04 18:51:59 1.49 +++ LVM2/tools/vgreduce.c 2006/07/04 19:52:47 1.50 @@ -286,13 +286,18 @@ list_iterate_items(seg, &mirrored_seg->log_lv->segments) { /* FIXME: The second test shouldn't be required */ if ((seg->segtype == - get_segtype_from_string(vg->cmd, "error")) || - (!strcmp(seg->segtype->name, "error"))) { + get_segtype_from_string(vg->cmd, "error"))) { log_print("The log device for %s/%s has failed.", vg->name, mirrored_seg->lv->name); remove_log = 1; break; } + if (!strcmp(seg->segtype->name, "error")) { + log_print("Log device for %s/%s has failed.", + vg->name, mirrored_seg->lv->name); + remove_log = 1; + break; + } } } From agk@sourceware.org Wed Jul 5 17:26:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Wed, 05 Jul 2006 17:26:00 -0000 Subject: LVM2/lib/misc sharedlib.c Message-ID: <20060705172637.29438.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-05 17:26:36 Modified files: lib/misc : sharedlib.c Log message: add dlerror to another error path Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/misc/sharedlib.c.diff?cvsroot=lvm2&r1=1.10&r2=1.11 --- LVM2/lib/misc/sharedlib.c 2006/07/04 19:40:27 1.10 +++ LVM2/lib/misc/sharedlib.c 2006/07/05 17:26:36 1.11 @@ -49,8 +49,8 @@ if (!(library = dlopen(path, RTLD_LAZY | RTLD_GLOBAL))) { if (silent && ignorelockingfailure()) - log_verbose("Unable to open external %s library %s", - desc, path); + log_verbose("Unable to open external %s library %s: %s", + desc, path, dlerror()); else log_error("Unable to open external %s library %s: %s", desc, path, dlerror()); From agk@sourceware.org Mon Jul 10 19:17:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Mon, 10 Jul 2006 19:17:00 -0000 Subject: LVM2 ./WHATS_NEW lib/activate/dev_manager.c Message-ID: <20060710191740.28438.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-10 19:17:40 Modified files: . : WHATS_NEW lib/activate : dev_manager.c Log message: Don't ignore persistent minor numbers when activating. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.407&r2=1.408 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/activate/dev_manager.c.diff?cvsroot=lvm2&r1=1.111&r2=1.112 --- LVM2/WHATS_NEW 2006/07/04 19:40:27 1.407 +++ LVM2/WHATS_NEW 2006/07/10 19:17:40 1.408 @@ -1,5 +1,6 @@ Version 2.02.07 - ================================= + Don't ignore persistent minor numbers when activating. Use RTLD_GLOBAL when loading shared libraries. Add some forgotten memlock checks to _vg_read to protect against full scans. Add mutex to dmeventd_mirror to avoid concurrent execution. --- LVM2/lib/activate/dev_manager.c 2006/05/16 20:53:13 1.111 +++ LVM2/lib/activate/dev_manager.c 2006/07/10 19:17:40 1.112 @@ -866,8 +866,8 @@ * Major/minor settings only apply to the visible layer. */ if (!(dnode = dm_tree_add_new_dev(dtree, name, dlid, - layer ? (uint32_t) lv->major : UINT32_C(0), - layer ? (uint32_t) lv->minor : UINT32_C(0), + layer ? UINT32_C(0) : (uint32_t) lv->major, + layer ? UINT32_C(0) : (uint32_t) lv->minor, _read_only_lv(lv), (lv->vg->status & PRECOMMITTED) ? 1 : 0, lvlayer))) From agk@sourceware.org Mon Jul 10 19:39:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Mon, 10 Jul 2006 19:39:00 -0000 Subject: LVM2 ./WHATS_NEW tools/lvchange.c Message-ID: <20060710193915.23118.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-10 19:39:14 Modified files: . : WHATS_NEW tools : lvchange.c Log message: Fix activation logic in lvchange --persistent. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.408&r2=1.409 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/lvchange.c.diff?cvsroot=lvm2&r1=1.67&r2=1.68 --- LVM2/WHATS_NEW 2006/07/10 19:17:40 1.408 +++ LVM2/WHATS_NEW 2006/07/10 19:39:14 1.409 @@ -1,5 +1,6 @@ Version 2.02.07 - ================================= + Fix activation logic in lvchange --persistent. Don't ignore persistent minor numbers when activating. Use RTLD_GLOBAL when loading shared libraries. Add some forgotten memlock checks to _vg_read to protect against full scans. --- LVM2/tools/lvchange.c 2006/05/12 19:16:48 1.67 +++ LVM2/tools/lvchange.c 2006/07/10 19:39:14 1.68 @@ -315,14 +315,7 @@ lv->major = arg_int_value(cmd, major_ARG, lv->major); log_verbose("Setting persistent device number to (%d, %d) " "for \"%s\"", lv->major, lv->minor, lv->name); - if (active) { - log_verbose("Re-activating logical volume \"%s\"", - lv->name); - if (!activate_lv(cmd, lv)) { - log_error("%s: reactivation failed", lv->name); - return 0; - } - } + } log_very_verbose("Updating logical volume \"%s\" on disk(s)", lv->name); @@ -333,21 +326,17 @@ backup(lv->vg); - if (!suspend_lv(cmd, lv)) { - log_error("Failed to lock %s", lv->name); - vg_revert(lv->vg); - return 0; - } - if (!vg_commit(lv->vg)) { - resume_lv(cmd, lv); + stack; return 0; } - log_very_verbose("Updating permissions for \"%s\" in kernel", lv->name); - if (!resume_lv(cmd, lv)) { - log_error("Problem reactivating %s", lv->name); - return 0; + if (active) { + log_verbose("Re-activating logical volume \"%s\"", lv->name); + if (!activate_lv(cmd, lv)) { + log_error("%s: reactivation failed", lv->name); + return 0; + } } return 1; From agk@sourceware.org Mon Jul 17 14:32:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Mon, 17 Jul 2006 14:32:00 -0000 Subject: LVM2 VERSION WHATS_NEW Message-ID: <20060717143201.4294.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-17 14:32:00 Modified files: . : VERSION WHATS_NEW Log message: pre-release Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.112&r2=1.113 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.409&r2=1.410 --- LVM2/VERSION 2006/05/12 20:32:10 1.112 +++ LVM2/VERSION 2006/07/17 14:32:00 1.113 @@ -1 +1 @@ -2.02.07-cvs (2006-05-12) +2.02.07-cvs (2006-07-17) --- LVM2/WHATS_NEW 2006/07/10 19:39:14 1.409 +++ LVM2/WHATS_NEW 2006/07/17 14:32:00 1.410 @@ -1,5 +1,5 @@ -Version 2.02.07 - -================================= +Version 2.02.07 - 17th July 2006 +================================ Fix activation logic in lvchange --persistent. Don't ignore persistent minor numbers when activating. Use RTLD_GLOBAL when loading shared libraries. From agk@sourceware.org Mon Jul 17 14:39:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Mon, 17 Jul 2006 14:39:00 -0000 Subject: LVM2 VERSION WHATS_NEW Message-ID: <20060717143954.11844.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-17 14:39:54 Modified files: . : VERSION WHATS_NEW Log message: post-release Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/VERSION.diff?cvsroot=lvm2&r1=1.113&r2=1.114 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.410&r2=1.411 --- LVM2/VERSION 2006/07/17 14:32:00 1.113 +++ LVM2/VERSION 2006/07/17 14:39:54 1.114 @@ -1 +1 @@ -2.02.07-cvs (2006-07-17) +2.02.08-cvs (2006-07-17) --- LVM2/WHATS_NEW 2006/07/17 14:32:00 1.410 +++ LVM2/WHATS_NEW 2006/07/17 14:39:54 1.411 @@ -1,3 +1,6 @@ +Version 2.02.08 - +================================ + Version 2.02.07 - 17th July 2006 ================================ Fix activation logic in lvchange --persistent. From agk@sourceware.org Wed Jul 19 18:55:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Wed, 19 Jul 2006 18:55:00 -0000 Subject: LVM2 ./WHATS_NEW scripts/clvmd_init_rhel4 Message-ID: <20060719185559.30274.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-19 18:55:58 Modified files: . : WHATS_NEW scripts : clvmd_init_rhel4 Log message: Fix clvmd_init_rhel4 'status' exit code. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.411&r2=1.412 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/scripts/clvmd_init_rhel4.diff?cvsroot=lvm2&r1=1.6&r2=1.7 --- LVM2/WHATS_NEW 2006/07/17 14:39:54 1.411 +++ LVM2/WHATS_NEW 2006/07/19 18:55:58 1.412 @@ -1,5 +1,6 @@ Version 2.02.08 - ================================ + Fix clvmd_init_rhel4 'status' exit code. Version 2.02.07 - 17th July 2006 ================================ --- LVM2/scripts/clvmd_init_rhel4 2005/05/11 15:21:44 1.6 +++ LVM2/scripts/clvmd_init_rhel4 2006/07/19 18:55:58 1.7 @@ -119,9 +119,9 @@ status) status clvmd + rtrn=$? vols=$( $LVDISPLAY -C --nohead 2> /dev/null | awk '($3 ~ /....a./) {print $1}' ) echo active volumes: ${vols:-"(none)"} - rtrn=0 ;; *) From agk@sourceware.org Thu Jul 20 20:37:00 2006 From: agk@sourceware.org (agk@sourceware.org) Date: Thu, 20 Jul 2006 20:37:00 -0000 Subject: LVM2 ./WHATS_NEW lib/metadata/mirror.c Message-ID: <20060720203711.25852.qmail@sourceware.org> CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: agk@sourceware.org 2006-07-20 20:37:10 Modified files: . : WHATS_NEW lib/metadata : mirror.c Log message: Fix locking for mimage removal. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/WHATS_NEW.diff?cvsroot=lvm2&r1=1.412&r2=1.413 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.30&r2=1.31 --- LVM2/WHATS_NEW 2006/07/19 18:55:58 1.412 +++ LVM2/WHATS_NEW 2006/07/20 20:37:09 1.413 @@ -1,5 +1,6 @@ Version 2.02.08 - ================================ + Fix locking for mimage removal. Fix clvmd_init_rhel4 'status' exit code. Version 2.02.07 - 17th July 2006 --- LVM2/lib/metadata/mirror.c 2006/05/12 19:47:40 1.30 +++ LVM2/lib/metadata/mirror.c 2006/07/20 20:37:10 1.31 @@ -199,6 +199,12 @@ /* Delete the 'orphan' LVs */ for (m = num_mirrors; m < old_area_count; m++) { + /* LV is now independent of the mirror so must acquire lock. */ + if (!activate_lv(mirrored_seg->lv->vg->cmd, seg_lv(mirrored_seg, m))) { + stack; + return 0; + } + if (!deactivate_lv(mirrored_seg->lv->vg->cmd, seg_lv(mirrored_seg, m))) { stack; return 0; @@ -211,6 +217,11 @@ } if (lv1) { + if (!activate_lv(mirrored_seg->lv->vg->cmd, lv1)) { + stack; + return 0; + } + if (!deactivate_lv(mirrored_seg->lv->vg->cmd, lv1)) { stack; return 0; @@ -223,6 +234,11 @@ } if (log_lv) { + if (!activate_lv(mirrored_seg->lv->vg->cmd, log_lv)) { + stack; + return 0; + } + if (!deactivate_lv(mirrored_seg->lv->vg->cmd, log_lv)) { stack; return 0;