master - tests: skip the double log failure test on 2.6
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e4cb88009ac056...
Commit: e4cb88009ac05654ffdb011e3a11fd80bfbe283e
Parent: 249ea4c34c40ed98a649a439c65e4a17c951a2b8
Author: Petr Rockai <prockai(a)redhat.com>
AuthorDate: Sun May 26 18:53:29 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Jun 2 00:50:09 2013 +0200
tests: skip the double log failure test on 2.6
On 2.6 kernels this deadlocks.
---
test/shell/lvconvert-repair-replace.sh | 28 +++++++++++++++-------------
1 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/test/shell/lvconvert-repair-replace.sh b/test/shell/lvconvert-repair-replace.sh
index c85c1cf..73235a4 100644
--- a/test/shell/lvconvert-repair-replace.sh
+++ b/test/shell/lvconvert-repair-replace.sh
@@ -65,19 +65,21 @@ vgremove -ff $vg
# FIXME - exclusive activation for mirrors should work here
test -e LOCAL_CLVMD && exit 0
-# 2-way, mirrored log
-# Double log failure, full replace
-vgcreate $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6"
-lvcreate -aey --mirrorlog mirrored -m 1 --ig -L 1 -n 2way $vg \
- "$dev1" "$dev2" "$dev3":0 "$dev4":0
-aux disable_dev "$dev3" "$dev4"
-lvconvert -y --repair $vg/2way 2>&1 | tee 2way.out
-lvs -a -o +devices $vg | not grep unknown
-not grep "WARNING: Failed" 2way.out
-vgreduce --removemissing $vg
-check mirror $vg 2way
-aux enable_dev "$dev3" "$dev4"
-vgremove -ff $vg
+if kernel_at_least 3 0 0; then
+ # 2-way, mirrored log
+ # Double log failure, full replace
+ vgcreate $vg "$dev1" "$dev2" "$dev3" "$dev4" "$dev5" "$dev6"
+ lvcreate -aey --mirrorlog mirrored -m 1 --ig -L 1 -n 2way $vg \
+ "$dev1" "$dev2" "$dev3":0 "$dev4":0
+ aux disable_dev "$dev3" "$dev4"
+ lvconvert -y --repair $vg/2way 2>&1 | tee 2way.out
+ lvs -a -o +devices $vg | not grep unknown
+ not grep "WARNING: Failed" 2way.out
+ vgreduce --removemissing $vg
+ check mirror $vg 2way
+ aux enable_dev "$dev3" "$dev4"
+ vgremove -ff $vg
+fi
# 3-way, mirrored log
# Single log failure, replace
10 years, 11 months
master - tests: add hide_dev/unhide_dev to aux
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=249ea4c34c40ed...
Commit: 249ea4c34c40ed98a649a439c65e4a17c951a2b8
Parent: 1f73e992ef3e233608322cb804b283c3ecdaa72b
Author: Petr Rockai <prockai(a)redhat.com>
AuthorDate: Sun Apr 28 22:41:15 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Jun 2 00:50:08 2013 +0200
tests: add hide_dev/unhide_dev to aux
Add helper func for easy filter adjustment.
---
test/lib/aux.sh | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/test/lib/aux.sh b/test/lib/aux.sh
index 4339ef4..d09e1b7 100644
--- a/test/lib/aux.sh
+++ b/test/lib/aux.sh
@@ -448,6 +448,22 @@ prepare_vg() {
vgcreate -c n $vg $devs
}
+hide_dev() {
+ filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
+ for dev in $@; do
+ filter=$(echo $filter | sed -e "s:\[:[ \"r|$dev|\", :")
+ done
+ lvmconf "$filter"
+}
+
+unhide_dev() {
+ filter=$(grep ^devices/global_filter CONFIG_VALUES | tail -n 1)
+ for dev in $@; do
+ filter=$(echo $filter | sed -e "s:\"r|$dev|\", ::")
+ done
+ lvmconf "$filter"
+}
+
lvmconf() {
LVM_TEST_LOCKING=${LVM_TEST_LOCKING:-1}
if test "$DM_DEV_DIR" = "/dev"; then
10 years, 11 months
master - lvmetad: no use of persistent filter with lvmetad
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=1f73e992ef3e23...
Commit: 1f73e992ef3e233608322cb804b283c3ecdaa72b
Parent: e7878da9216945c3209a430d8b01038312d911bd
Author: Petr Rockai <prockai(a)redhat.com>
AuthorDate: Mon May 27 01:55:14 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Jun 2 00:49:55 2013 +0200
lvmetad: no use of persistent filter with lvmetad
---
WHATS_NEW | 1 +
lib/commands/toolcontext.c | 6 ++++--
2 files changed, 5 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 748c3fb..ba88915 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Do not use persistent filter with lvmetad.
Update persistent filter functinality for global filter.
Override system's global_filter settings for vgimportclone.
Detect maximum usable size for snapshot for lvresize.
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 965ba4a..af1aa63 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -913,9 +913,11 @@ static int _init_filters(struct cmd_context *cmd, unsigned load_persistent_cache
/*
* Only load persistent filter device cache on startup if it is newer
- * than the config file and this is not a long-lived process.
+ * than the config file and this is not a long-lived process. Also avoid
+ * it when lvmetad is enabled.
*/
- if (load_persistent_cache && !cmd->is_long_lived &&
+ if (!find_config_tree_bool(cmd, global_use_lvmetad_CFG) &&
+ load_persistent_cache && !cmd->is_long_lived &&
!stat(dev_cache, &st) &&
(st.st_ctime > config_file_timestamp(cmd->cft)) &&
!persistent_filter_load(f4, NULL))
10 years, 11 months
master - filters: toplevel filter not persistent
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e7878da9216945...
Commit: e7878da9216945c3209a430d8b01038312d911bd
Parent: 05bf4b8cc3e3d15e79c9964e496dbe396beacb3c
Author: Petr Rockai <prockai(a)redhat.com>
AuthorDate: Mon May 27 00:49:40 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Jun 2 00:48:58 2013 +0200
filters: toplevel filter not persistent
Add a generic dump operation to filters and make the composite filter call
through to its components. Previously, when global filter was set, the code
would treat the toplevel composite filter's private area as if it belonged a
persistent filter, trying to write nonsense into a non-sensical file.
Also deal with NULL cmd->filter gracefully.
---
WHATS_NEW | 1 +
lib/commands/toolcontext.c | 4 ++--
lib/device/dev-cache.h | 1 +
lib/filters/filter-composite.c | 12 ++++++++++++
lib/filters/filter-persistent.c | 6 ++++++
5 files changed, 22 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 56868b7..748c3fb 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Update persistent filter functinality for global filter.
Override system's global_filter settings for vgimportclone.
Detect maximum usable size for snapshot for lvresize.
Creation of snapshot takes at most 100% origin coverage.
diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c
index 5c1719b..965ba4a 100644
--- a/lib/commands/toolcontext.c
+++ b/lib/commands/toolcontext.c
@@ -1650,8 +1650,8 @@ void destroy_toolcontext(struct cmd_context *cmd)
struct dm_config_tree *cft_cmdline;
FILE *new_stream;
- if (cmd->dump_filter)
- persistent_filter_dump(cmd->filter, 1);
+ if (cmd->dump_filter && cmd->filter && cmd->filter->dump)
+ cmd->filter->dump(cmd->filter);
archive_exit(cmd);
backup_exit(cmd);
diff --git a/lib/device/dev-cache.h b/lib/device/dev-cache.h
index 3267c9d..4119d90 100644
--- a/lib/device/dev-cache.h
+++ b/lib/device/dev-cache.h
@@ -26,6 +26,7 @@ struct dev_filter {
int (*passes_filter) (struct dev_filter * f, struct device * dev);
void (*destroy) (struct dev_filter * f);
void (*wipe) (struct dev_filter * f);
+ void (*dump) (struct dev_filter * f);
void *private;
unsigned use_count;
};
diff --git a/lib/filters/filter-composite.c b/lib/filters/filter-composite.c
index 2298000..0d09c04 100644
--- a/lib/filters/filter-composite.c
+++ b/lib/filters/filter-composite.c
@@ -49,6 +49,17 @@ static void _composite_destroy(struct dev_filter *f)
dm_free(f);
}
+static void _dump(struct dev_filter *f)
+{
+ struct dev_filter **filters = (struct dev_filter **) f->private;
+
+ while (*filters) {
+ if ((*filters)->dump)
+ (*filters)->dump(*filters);
+ filters++;
+ }
+}
+
struct dev_filter *composite_filter_create(int n, struct dev_filter **filters)
{
struct dev_filter **filters_copy, *cft;
@@ -72,6 +83,7 @@ struct dev_filter *composite_filter_create(int n, struct dev_filter **filters)
cft->passes_filter = _and_p;
cft->destroy = _composite_destroy;
+ cft->dump = _dump;
cft->use_count = 0;
cft->private = filters_copy;
diff --git a/lib/filters/filter-persistent.c b/lib/filters/filter-persistent.c
index 0d53fce..7288d9d 100644
--- a/lib/filters/filter-persistent.c
+++ b/lib/filters/filter-persistent.c
@@ -274,6 +274,11 @@ out:
return r;
}
+static void _dump(struct dev_filter *f)
+{
+ persistent_filter_dump(f, 1);
+}
+
static int _lookup_p(struct dev_filter *f, struct device *dev)
{
struct pfilter *pf = (struct pfilter *) f->private;
@@ -367,6 +372,7 @@ struct dev_filter *persistent_filter_create(struct dev_filter *real,
f->use_count = 0;
f->private = pf;
f->wipe = _persistent_filter_wipe;
+ f->dump = _dump;
return f;
10 years, 11 months
master - vgimportclone: override global_filter in lvm.conf
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=05bf4b8cc3e3d1...
Commit: 05bf4b8cc3e3d15e79c9964e496dbe396beacb3c
Parent: c5f7d401e5e558ea7dffaa326a27dd432241e639
Author: Petr Rockai <prockai(a)redhat.com>
AuthorDate: Sun Apr 28 22:38:22 2013 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sun Jun 2 00:47:17 2013 +0200
vgimportclone: override global_filter in lvm.conf
The global filter in system's lvm.conf may conflict with the custom filter we
set up in vgimportclone (they can easily fail to intersect). Since we explicitly
avoid talking to lvmetad in vgimportclone, it is safe and reasonable to do so.
---
WHATS_NEW | 1 +
scripts/vgimportclone.sh | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 7589f12..56868b7 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Override system's global_filter settings for vgimportclone.
Detect maximum usable size for snapshot for lvresize.
Creation of snapshot takes at most 100% origin coverage.
Add cow_max_extents() to calc extents for 100% origin coverage.
diff --git a/scripts/vgimportclone.sh b/scripts/vgimportclone.sh
index 520ca02..d6ad75d 100755
--- a/scripts/vgimportclone.sh
+++ b/scripts/vgimportclone.sh
@@ -250,6 +250,7 @@ LVMCONF=${TMP_LVM_SYSTEM_DIR}/lvm.conf
/^[ \t]*scan[ \t]*=/{print "scan = [ \"" DEV "\" ]";next} \
/^[ \t]*cache[ \t]*=/{print "cache = \"" CACHE "\"";next} \
/^[ \t]*use_lvmetad[ \t]*=/{print "use_lvmetad = 0";next} \
+ /^[ \t]*global_filter[ \t]*=/{print "global_filter = [ \"a|.*|\" ]";next} \
/^[ \t]*cache_dir[ \t]*=/{print "cache_dir = \"" CACHE_DIR "\"";next} \
{print $0}' > ${LVMCONF}
10 years, 11 months