master - flags: add read and print of segtype flag
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=0299a7af1ec1eeb1138...
Commit: 0299a7af1ec1eeb11388ed15c4c78f224fee76b2
Parent: 1bb0c5197f00594e50fb2b8a92f96633f32a9817
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 29 14:20:05 2017 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 29 14:49:41 2017 +0200
flags: add read and print of segtype flag
Allow storing LV status bits with segment type name field.
Switching to this since this field has better support for compatibility
with older version of lvm2 - since such unknown segtype will not cause
complete invisiblity of metadata from older lvm2 code - just the
particular LV will become unusable with unknown type of segment.
---
WHATS_NEW | 1 +
lib/format_text/flags.c | 58 +++++++++++++++++++++++++++++++++++++++
lib/format_text/import-export.h | 3 ++
3 files changed, 62 insertions(+), 0 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index f38c23c..de65e0e 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.172 -
===============================
+ Support storing status flags via segtype name field.
Stop using '--yes' mode when fsadm runs without terminal.
Extend validation of filesystems resized by fsadm.
Enhance lvconvert automatic settings of possible (raid) LV types.
diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c
index 871eeab..64bad1c 100644
--- a/lib/format_text/flags.c
+++ b/lib/format_text/flags.c
@@ -213,3 +213,61 @@ int read_flags(uint64_t *status, enum pv_vg_lv_e type, int mask, const struct dm
*status |= s;
return 1;
}
+
+/*
+ * Parse extra status flags from segment "type" string.
+ * These flags are seen as INCOMPATIBLE by any older lvm2 code.
+ * All flags separated by '+' are trimmed from passed string.
+ * All UNKNOWN flags will again cause the "UNKNOWN" segtype.
+ *
+ * Note: using these segtype status flags instead of actual
+ * status flags ensures wanted incompatiblity.
+ */
+int read_segtype_lvflags(uint64_t *status, char *segtype_str)
+{
+ unsigned i;
+ const struct flag *flags = _lv_flags;
+ char *delim;
+ char *flag;
+
+ if (!(delim = strchr(segtype_str, '+')))
+ return 1; /* No flags */
+
+ *delim = '\0'; /* Cut away 1st. '+' */
+ do {
+ flag = delim + 1;
+ if ((delim = strchr(segtype_str, '+')))
+ *delim = '\0';
+
+ for (i = 0; flags[i].description; i++)
+ if ((flags[i].kind & SEGTYPE_FLAG) &&
+ !strcmp(flags[i].description, flag)) {
+ *status |= flags[i].mask;
+ break;
+ }
+
+ if (!flags[i].description) {
+ log_error("Unknown flag %s passed with segment type %s.",
+ flag, segtype_str);
+ return 0; /* Unknown flag is incompatible */
+ }
+ } while (delim); /* Till no more flags in type appear */
+
+ return 1;
+}
+
+int print_segtype_lvflags(char *buffer, size_t size, uint64_t status)
+{
+ unsigned i;
+ const struct flag *flags = _lv_flags;
+
+ buffer[0] = 0;
+ for (i = 0; flags[i].mask; i++)
+ if ((flags[i].kind & SEGTYPE_FLAG) &&
+ (status & flags[i].mask) &&
+ !emit_to_buffer(&buffer, &size, "+%s",
+ flags[i].description))
+ return 0;
+
+ return 1;
+}
diff --git a/lib/format_text/import-export.h b/lib/format_text/import-export.h
index ddad50f..abb9b0e 100644
--- a/lib/format_text/import-export.h
+++ b/lib/format_text/import-export.h
@@ -62,6 +62,9 @@ struct text_vg_version_ops *text_vg_vsn1_init(void);
int print_flags(char *buffer, size_t size, enum pv_vg_lv_e type, int mask, uint64_t status);
int read_flags(uint64_t *status, enum pv_vg_lv_e type, int mask, const struct dm_config_value *cv);
+int print_segtype_lvflags(char *buffer, size_t size, uint64_t status);
+int read_segtype_lvflags(uint64_t *status, char *segtype_scr);
+
int text_vg_export_file(struct volume_group *vg, const char *desc, FILE *fp);
size_t text_vg_export_raw(struct volume_group *vg, const char *desc, char **buf);
struct volume_group *text_vg_import_file(struct format_instance *fid,
6 years, 11 months
master - cleanup: backtrace
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=1bb0c5197f00594e50f...
Commit: 1bb0c5197f00594e50fb2b8a92f96633f32a9817
Parent: 966d1130dbf1e9da5ae0b432296741ba4ad35b6a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon May 29 12:43:07 2017 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 29 14:48:33 2017 +0200
cleanup: backtrace
Add debug backtrace.
---
lib/format_text/flags.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c
index 4e49963..871eeab 100644
--- a/lib/format_text/flags.c
+++ b/lib/format_text/flags.c
@@ -132,7 +132,7 @@ int print_flags(char *buffer, size_t size, enum pv_vg_lv_e type, int mask, uint6
return_0;
if (!emit_to_buffer(&buffer, &size, "["))
- return 0;
+ return_0;
for (f = 0; flags[f].mask; f++) {
if (status & flags[f].mask) {
@@ -147,18 +147,18 @@ int print_flags(char *buffer, size_t size, enum pv_vg_lv_e type, int mask, uint6
if (!first) {
if (!emit_to_buffer(&buffer, &size, ", "))
- return 0;
+ return_0;
} else
first = 0;
if (!emit_to_buffer(&buffer, &size, "\"%s\"",
- flags[f].description))
- return 0;
+ flags[f].description))
+ return_0;
}
}
if (!emit_to_buffer(&buffer, &size, "]"))
- return 0;
+ return_0;
if (status)
log_warn(INTERNAL_ERROR "Metadata inconsistency: "
6 years, 11 months
master - cleanup: separate type and mask
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=966d1130dbf1e9da5ae...
Commit: 966d1130dbf1e9da5ae0b432296741ba4ad35b6a
Parent: 8e0bc73eba4db74cb92fe884687f1cbfd4b20930
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri May 26 15:47:17 2017 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 29 14:47:26 2017 +0200
cleanup: separate type and mask
Split misused 'enum' into 2 fields - one for type
of PV, VG, LV and other for mask.
---
lib/format_text/export.c | 5 +++--
lib/format_text/flags.c | 15 ++++++++-------
lib/format_text/import-export.h | 13 +++++++------
lib/format_text/import_vsn1.c | 4 ++--
4 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/lib/format_text/export.c b/lib/format_text/export.c
index f530ec9..829b46d 100644
--- a/lib/format_text/export.c
+++ b/lib/format_text/export.c
@@ -358,11 +358,12 @@ static int _print_header(struct cmd_context *cmd, struct formatter *f,
static int _print_flag_config(struct formatter *f, uint64_t status, int type)
{
char buffer[4096];
- if (!print_flags(status, type | STATUS_FLAG, buffer, sizeof(buffer)))
+
+ if (!print_flags(buffer, sizeof(buffer), type, STATUS_FLAG, status))
return_0;
outf(f, "status = %s", buffer);
- if (!print_flags(status, type, buffer, sizeof(buffer)))
+ if (!print_flags(buffer, sizeof(buffer), type, COMPATIBLE_FLAG, status))
return_0;
outf(f, "flags = %s", buffer);
diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c
index 41f3608..4e49963 100644
--- a/lib/format_text/flags.c
+++ b/lib/format_text/flags.c
@@ -101,9 +101,9 @@ static const struct flag _lv_flags[] = {
{0, NULL, 0}
};
-static const struct flag *_get_flags(int type)
+static const struct flag *_get_flags(enum pv_vg_lv_e type)
{
- switch (type & ~STATUS_FLAG) {
+ switch (type) {
case VG_FLAGS:
return _vg_flags;
@@ -123,7 +123,7 @@ static const struct flag *_get_flags(int type)
* using one of the tables defined at the top of
* the file.
*/
-int print_flags(uint64_t status, int type, char *buffer, size_t size)
+int print_flags(char *buffer, size_t size, enum pv_vg_lv_e type, int mask, uint64_t status)
{
int f, first = 1;
const struct flag *flags;
@@ -167,9 +167,9 @@ int print_flags(uint64_t status, int type, char *buffer, size_t size)
return 1;
}
-int read_flags(uint64_t *status, int type, const struct dm_config_value *cv)
+int read_flags(uint64_t *status, enum pv_vg_lv_e type, int mask, const struct dm_config_value *cv)
{
- int f;
+ unsigned f;
uint64_t s = UINT64_C(0);
const struct flag *flags;
@@ -186,7 +186,8 @@ int read_flags(uint64_t *status, int type, const struct dm_config_value *cv)
}
for (f = 0; flags[f].description; f++)
- if (!strcmp(flags[f].description, cv->v.str)) {
+ if ((flags[f].kind & mask) &&
+ !strcmp(flags[f].description, cv->v.str)) {
s |= flags[f].mask;
break;
}
@@ -200,7 +201,7 @@ int read_flags(uint64_t *status, int type, const struct dm_config_value *cv)
* by this case.
*/
s |= PARTIAL_VG;
- } else if (!flags[f].description && (type & STATUS_FLAG)) {
+ } else if (!flags[f].description && (mask & STATUS_FLAG)) {
log_error("Unknown status flag '%s'.", cv->v.str);
return 0;
}
diff --git a/lib/format_text/import-export.h b/lib/format_text/import-export.h
index c081c51..ddad50f 100644
--- a/lib/format_text/import-export.h
+++ b/lib/format_text/import-export.h
@@ -35,14 +35,15 @@
* VGs, PVs and LVs all have status bitsets, we gather together
* common code for reading and writing them.
*/
-enum {
- COMPATIBLE_FLAG = 0x0,
+enum pv_vg_lv_e {
+ PV_FLAGS = 1,
VG_FLAGS,
- PV_FLAGS,
LV_FLAGS,
- STATUS_FLAG = 0x8,
};
+#define COMPATIBLE_FLAG 0x01
+#define STATUS_FLAG 0x02
+
struct text_vg_version_ops {
int (*check_version) (const struct dm_config_tree * cf);
struct volume_group *(*read_vg) (struct format_instance * fid,
@@ -58,8 +59,8 @@ struct text_vg_version_ops {
struct text_vg_version_ops *text_vg_vsn1_init(void);
-int print_flags(uint64_t status, int type, char *buffer, size_t size);
-int read_flags(uint64_t *status, int type, const struct dm_config_value *cv);
+int print_flags(char *buffer, size_t size, enum pv_vg_lv_e type, int mask, uint64_t status);
+int read_flags(uint64_t *status, enum pv_vg_lv_e type, int mask, const struct dm_config_value *cv);
int text_vg_export_file(struct volume_group *vg, const char *desc, FILE *fp);
size_t text_vg_export_raw(struct volume_group *vg, const char *desc, char **buf);
diff --git a/lib/format_text/import_vsn1.c b/lib/format_text/import_vsn1.c
index e545008..6acfe1d 100644
--- a/lib/format_text/import_vsn1.c
+++ b/lib/format_text/import_vsn1.c
@@ -140,13 +140,13 @@ static int _read_flag_config(const struct dm_config_node *n, uint64_t *status, i
return 0;
}
- if (!(read_flags(status, type | STATUS_FLAG, cv))) {
+ if (!(read_flags(status, type, STATUS_FLAG, cv))) {
log_error("Could not read status flags.");
return 0;
}
if (dm_config_get_list(n, "flags", &cv)) {
- if (!(read_flags(status, type, cv))) {
+ if (!(read_flags(status, type, COMPATIBLE_FLAG, cv))) {
log_error("Could not read flags.");
return 0;
}
6 years, 11 months
master - cleanup: bad flag is internal error here
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=8e0bc73eba4db74cb92...
Commit: 8e0bc73eba4db74cb92fe884687f1cbfd4b20930
Parent: 597b3576c7399d76ab4da5dccf505f2f2cc4fce2
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri May 26 15:45:37 2017 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 29 14:47:16 2017 +0200
cleanup: bad flag is internal error here
Convert to internal error.
---
lib/format_text/flags.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/format_text/flags.c b/lib/format_text/flags.c
index a9f81f5..41f3608 100644
--- a/lib/format_text/flags.c
+++ b/lib/format_text/flags.c
@@ -114,7 +114,7 @@ static const struct flag *_get_flags(int type)
return _lv_flags;
}
- log_error("Unknown flag set requested.");
+ log_error(INTERNAL_ERROR "Unknown flag set requested.");
return NULL;
}
6 years, 11 months
master - tests: wait for raid in sync
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=597b3576c7399d76ab4...
Commit: 597b3576c7399d76ab4da5dccf505f2f2cc4fce2
Parent: 223c594f0e9e0248739a3bbb1c98fbf509140e6b
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Thu May 25 15:06:57 2017 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon May 29 14:41:53 2017 +0200
tests: wait for raid in sync
Lvchange needs synchronized raid.
---
test/shell/lvchange-raid.sh | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/test/shell/lvchange-raid.sh b/test/shell/lvchange-raid.sh
index 34a40dc..7418cd5 100644
--- a/test/shell/lvchange-raid.sh
+++ b/test/shell/lvchange-raid.sh
@@ -42,6 +42,7 @@ run_writemostly_check() {
printf "#\n#\n#\n# %s/%s (%s): run_writemostly_check\n#\n#\n#\n" \
$vg $lv $segtype
+ aux wait_for_sync $vg $lv
# No writemostly flag should be there yet.
check lv_attr_bit health $vg/${lv}_rimage_0 "-"
6 years, 11 months
master - test: Fix dbus testing using testsuite
by Marian Csontos
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=223c594f0e9e0248739...
Commit: 223c594f0e9e0248739a3bbb1c98fbf509140e6b
Parent: 7687ab82c8d71e5d11c915a4dd390249b8124b9a
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Fri May 26 15:34:47 2017 +0200
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Fri May 26 15:39:20 2017 +0200
test: Fix dbus testing using testsuite
- Must reread all objects as PVs might be removed.
- Never consider testsuite provided PVs nested, or tearDown fails to
remove any outstanding VGs on them.
---
test/dbus/lvmdbustest.py | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/test/dbus/lvmdbustest.py b/test/dbus/lvmdbustest.py
index d9f0f8c..3dca9d5 100755
--- a/test/dbus/lvmdbustest.py
+++ b/test/dbus/lvmdbustest.py
@@ -70,8 +70,12 @@ def lv_n(suffix=None):
return g_prefix + rs(8, s)
+def _is_testsuite_pv(pv_name):
+ return g_prefix != "" and pv_name[-1].isdigit() and pv_name[:-1].endswith(g_prefix + "pv")
+
+
def is_nested_pv(pv_name):
- return pv_name.count('/') == 3
+ return pv_name.count('/') == 3 and not _is_testsuite_pv(pv_name)
def _root_pv_name(res, pv_name):
@@ -241,6 +245,7 @@ class TestDbusService(unittest.TestCase):
# Check to make sure the PVs we had to start exist, else re-create
# them
+ self.objs, self.bus = get_objects()
if len(self.pvs) != len(self.objs[PV_INT]):
for p in self.pvs:
found = False
6 years, 11 months
master - test: Use _pv suffix for nested devices
by Marian Csontos
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=7687ab82c8d71e5d11c...
Commit: 7687ab82c8d71e5d11c915a4dd390249b8124b9a
Parent: 3745b52ed4ff28e553e1372e425491d11cc78031
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Fri May 26 08:33:39 2017 +0200
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Fri May 26 08:33:39 2017 +0200
test: Use _pv suffix for nested devices
Testsuite uses global_filter to accept only test devices with
suffix matching /_pv[0-9_]*$/ set by generate_config in aux.sh.
---
test/dbus/lvmdbustest.py | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/test/dbus/lvmdbustest.py b/test/dbus/lvmdbustest.py
index e3eeb6e..d9f0f8c 100755
--- a/test/dbus/lvmdbustest.py
+++ b/test/dbus/lvmdbustest.py
@@ -716,9 +716,9 @@ class TestDbusService(unittest.TestCase):
LV_BASE_INT)
self._validate_lookup("%s/%s" % (vg.Name, lv_name), lv.object_path)
- def _create_lv(self, thinpool=False, size=None, vg=None):
+ def _create_lv(self, thinpool=False, size=None, vg=None, suffix=None):
- lv_name = lv_n()
+ lv_name = lv_n(suffix=suffix)
interfaces = list(LV_BASE_INT)
if thinpool:
@@ -1842,7 +1842,8 @@ class TestDbusService(unittest.TestCase):
self.assertIn(pv_object_path, vg.Vg.Pvs,
"Expecting PV object path in Vg.Pvs")
- lv = self._create_lv(vg=vg.Vg, size=vg.Vg.FreeBytes)
+ lv = self._create_lv(vg=vg.Vg, size=vg.Vg.FreeBytes,
+ suffix="_pv")
device_path = '/dev/%s/%s' % (vg.Vg.Name, lv.LvCommon.Name)
new_pv_object_path = self._pv_create(device_path)
6 years, 11 months
master - spec: Enable notify-dbus in builds with dbus
by Marian Csontos
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3745b52ed4ff28e553e...
Commit: 3745b52ed4ff28e553e1372e425491d11cc78031
Parent: 65b10281f8b10c51730ab74e2d384d5d03d32f96
Author: Marian Csontos <mcsontos(a)redhat.com>
AuthorDate: Fri May 26 07:40:09 2017 +0200
Committer: Marian Csontos <mcsontos(a)redhat.com>
CommitterDate: Fri May 26 07:40:09 2017 +0200
spec: Enable notify-dbus in builds with dbus
---
spec/build.inc | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/spec/build.inc b/spec/build.inc
index 5321a70..5fb38f7 100644
--- a/spec/build.inc
+++ b/spec/build.inc
@@ -34,6 +34,7 @@
%enableif %{enable_python3} python3-bindings
%enableif %{enable_python} applib
%enableif %{enable_dbusd} dbus-service
+%enableif %{enable_dbusd} notify-dbus
%enableif %{enable_dmfilemapd} dmfilemapd
%build
6 years, 11 months
master - Proper dm_snprintf return checks
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=65b10281f8b10c51730...
Commit: 65b10281f8b10c51730ab74e2d384d5d03d32f96
Parent: 3da5cdc5dc5cca04dae105c5a33c87d1c99a5b6c
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Wed May 24 14:00:44 2017 +0200
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Wed May 24 14:00:44 2017 +0200
Proper dm_snprintf return checks
---
lib/metadata/raid_manip.c | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index e0e988c..8a70600 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -1017,8 +1017,8 @@ static struct logical_volume *_alloc_image_component(struct logical_volume *lv,
return 0;
}
- if (!dm_snprintf(img_name, sizeof(img_name), "%s_%s_%%d",
- (alt_base_name) ? : lv->name, type_suffix)) {
+ if (dm_snprintf(img_name, sizeof(img_name), "%s_%s_%%d",
+ (alt_base_name) ? : lv->name, type_suffix) < 0) {
log_error("Component name for raid %s is too long.", display_lvname(lv));
return 0;
}
@@ -4483,7 +4483,7 @@ static const char *_get_segtype_alias_str(const struct logical_volume *lv, const
char *buf = dm_pool_alloc(lv->vg->cmd->mem, sz);
if (buf)
- alias = dm_snprintf(buf, sz, "%s%s)", msg, alias) ? buf : "";
+ alias = (dm_snprintf(buf, sz, "%s%s)", msg, alias) < 0) ? "" : buf;
}
return alias;
@@ -4769,7 +4769,7 @@ static int _rename_area_lvs(struct logical_volume *lv, const char *suffix)
/* Create _generate_raid_name() suffixes w/ or w/o passed in @suffix */
for (s = 0; s < SLV_COUNT; s++)
if (!(sfx[s] = dm_pool_alloc(lv->vg->cmd->mem, sz)) ||
- !dm_snprintf(sfx[s], sz, suffix ? "%s%s" : "%s", s ? "rmeta" : "rimage", suffix))
+ dm_snprintf(sfx[s], sz, suffix ? "%s%s" : "%s", s ? "rmeta" : "rimage", suffix) < 0)
return_0;
/* Change names (temporarily) to be able to shift numerical name suffixes */
@@ -4964,8 +4964,8 @@ static int _takeover_downconvert_wrapper(TAKEOVER_FN_ARGS)
}
if (seg->area_count > 2) {
- if (!dm_snprintf(res_str, sizeof(res_str), " losing %s resilience",
- segtype_is_striped(new_segtype) ? "all" : "some"))
+ if (dm_snprintf(res_str, sizeof(res_str), " losing %s resilience",
+ segtype_is_striped(new_segtype) ? "all" : "some") < 0)
return_0;
} else
*res_str = '\0';
@@ -6080,7 +6080,7 @@ static int _conversion_options_allowed(const struct lv_segment *seg_from,
if (!(fmt = dm_pool_alloc(seg_from->lv->vg->cmd->mem, sz)))
return_0;
- if (!dm_snprintf(fmt, sz, "%s%s%s", basic_fmt, (seg_from->segtype == *segtype_to) ? "" : type_fmt, question_fmt)) {
+ if (dm_snprintf(fmt, sz, "%s%s%s", basic_fmt, (seg_from->segtype == *segtype_to) ? "" : type_fmt, question_fmt) < 0) {
log_error(INTERNAL_ERROR "dm_snprintf failed.");
return_0;
}
6 years, 11 months
master - Fix typo
by Heinz Mauelshagen
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3da5cdc5dc5cca04dae...
Commit: 3da5cdc5dc5cca04dae105c5a33c87d1c99a5b6c
Parent: 7a0f46e2f87f28e17c0ea6b6d58ffd90b37bc6f0
Author: Heinz Mauelshagen <heinzm(a)redhat.com>
AuthorDate: Wed May 24 13:47:45 2017 +0200
Committer: Heinz Mauelshagen <heinzm(a)redhat.com>
CommitterDate: Wed May 24 13:47:45 2017 +0200
Fix typo
---
lib/metadata/merge.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/lib/metadata/merge.c b/lib/metadata/merge.c
index 3d82a05..e642459 100644
--- a/lib/metadata/merge.c
+++ b/lib/metadata/merge.c
@@ -222,7 +222,7 @@ static void _check_non_raid_seg_members(struct lv_segment *seg, int *error_count
}
/*
- * Check RAID segment sruct members of @seg for acceptable
+ * Check RAID segment struct members of @seg for acceptable
* properties and increment @error_count for any bogus ones.
*/
static void _check_raid_seg(struct lv_segment *seg, int *error_count)
6 years, 11 months