main - handle bad metadata text in vg_read path
by David Teigland
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=939b4bc58719605aa7d...
Commit: 939b4bc58719605aa7d348d2b4e0fcf41aad0b17
Parent: e3b4c365a4d9fc3f88dcfaca6dff89b924fc4851
Author: David Teigland <teigland(a)redhat.com>
AuthorDate: Tue Sep 28 14:58:03 2021 -0500
Committer: David Teigland <teigland(a)redhat.com>
CommitterDate: Tue Sep 28 15:17:43 2021 -0500
handle bad metadata text in vg_read path
Corrupt metadata text (with good mda header) was being handled
in the label_scan phase, but not in the vg_read phase. This
was sufficient because metadata areas would always be read and
checksummed during label_scan (metadata parsing was skipped
previously as an optimization.)
This changed with the optimization in
commit 61a6f9905e87e650f0bddae83fec6923bb100a57
"metadata: optimize reading metadata copies in scan"
Now, some metadata areas will not be read and checksummed
at all during the label_scan phase, only during the vg_read
phase. This means that bad metadata text may first be detected
in the vg_read phase. So, add equivalent bad metadata handling
to the vg_read path to match the label_scan path.
---
lib/cache/lvmcache.c | 14 ++++++++++++++
lib/cache/lvmcache.h | 2 ++
lib/format_text/format-text.c | 18 ++++++++++++++++++
lib/format_text/import.c | 5 ++---
lib/metadata/metadata.c | 2 +-
test/shell/metadata-bad-text.sh | 23 ++++++++++++-----------
6 files changed, 49 insertions(+), 15 deletions(-)
diff --git a/lib/cache/lvmcache.c b/lib/cache/lvmcache.c
index 655f34bd8..7a7634074 100644
--- a/lib/cache/lvmcache.c
+++ b/lib/cache/lvmcache.c
@@ -237,6 +237,20 @@ void lvmcache_save_bad_mda(struct lvmcache_info *info, struct metadata_area *mda
dm_list_add(&info->bad_mdas, &mda->list);
}
+void lvmcache_del_save_bad_mda(struct lvmcache_info *info, int mda_num, int bad_mda_flag)
+{
+ struct metadata_area *mda, *mda_safe;
+
+ dm_list_iterate_items_safe(mda, mda_safe, &info->mdas) {
+ if (mda->mda_num == mda_num) {
+ dm_list_del(&mda->list);
+ mda->bad_fields |= bad_mda_flag;
+ lvmcache_save_bad_mda(info, mda);
+ break;
+ }
+ }
+}
+
void lvmcache_get_bad_mdas(struct cmd_context *cmd,
const char *vgname, const char *vgid,
struct dm_list *bad_mda_list)
diff --git a/lib/cache/lvmcache.h b/lib/cache/lvmcache.h
index d7e10f4f0..9511bb9e9 100644
--- a/lib/cache/lvmcache.h
+++ b/lib/cache/lvmcache.h
@@ -210,6 +210,8 @@ void lvmcache_del_outdated_devs(struct cmd_context *cmd,
void lvmcache_save_bad_mda(struct lvmcache_info *info, struct metadata_area *mda);
+void lvmcache_del_save_bad_mda(struct lvmcache_info *info, int mda_num, int bad_mda_flag);
+
void lvmcache_get_bad_mdas(struct cmd_context *cmd,
const char *vgname, const char *vgid,
struct dm_list *bad_mda_list);
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index c880f0eb6..6a4cc98d8 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -465,6 +465,24 @@ static struct volume_group *_vg_read_raw(struct cmd_context *cmd,
vg = _vg_read_raw_area(cmd, fid, vgname, &mdac->area, vg_fmtdata, use_previous_vg, 0, mda_is_primary(mda));
+ if (!vg && !*use_previous_vg) {
+ /*
+ * This condition (corrupt metadata text) is often seen in the
+ * label_scan()/_text_read() phase, where this code corresponds to
+ * the lvmcache_save_bad_mda() in _text_read(). In this case we
+ * have two mda structs to deal with, one in lvmcache from label scan,
+ * and the mda copy on fid->metadata_areas_in_use.
+ */
+ struct device *dev = mdac->area.dev;
+ struct lvmcache_info *info = lvmcache_info_from_pvid(dev->pvid, dev, 0);
+ log_warn("WARNING: reading %s mda%d failed to read metadata.", dev_name(dev), mda_is_primary(mda)?1:2);
+ log_warn("WARNING: repair VG metadata on %s with vgck --updatemetadata.", dev_name(dev));
+ /* remove mda from lvmcache, saving it in info->bad_mdas for possible repair with updatemetadata */
+ lvmcache_del_save_bad_mda(info, mda->mda_num, BAD_MDA_TEXT);
+ /* remove mda from fid */
+ fid_remove_mda(fid, mda, NULL, 0, 0);
+ }
+
return vg;
}
diff --git a/lib/format_text/import.c b/lib/format_text/import.c
index e4e526354..a3735369d 100644
--- a/lib/format_text/import.c
+++ b/lib/format_text/import.c
@@ -157,13 +157,12 @@ struct volume_group *text_read_metadata(struct format_instance *fid,
if (!config_file_read_fd(cft, dev, MDA_CONTENT_REASON(primary_mda), offset, size,
offset2, size2, checksum_fn, checksum,
skip_parse, 1)) {
- /* FIXME: handle errors */
- log_error("Couldn't read volume group metadata from %s.", dev_name(dev));
+ log_warn("WARNING: couldn't read volume group metadata from %s.", dev_name(dev));
goto out;
}
} else {
if (!config_file_read(cft)) {
- log_error("Couldn't read volume group metadata from file.");
+ log_warn("WARNING: couldn't read volume group metadata from file.");
goto out;
}
}
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index b37b91487..9a7d23365 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -4798,7 +4798,7 @@ static struct volume_group *_vg_read(struct cmd_context *cmd,
* fid->metadata_areas_in_use by create_instance above, and here we
* read VG metadata from each of those mdas.
*/
- dm_list_iterate_items(mda, &fid->metadata_areas_in_use) {
+ dm_list_iterate_items_safe(mda, mda2, &fid->metadata_areas_in_use) {
mda_dev = mda_get_device(mda);
/* I don't think this can happen */
diff --git a/test/shell/metadata-bad-text.sh b/test/shell/metadata-bad-text.sh
index 9ccfe5f76..038a88485 100644
--- a/test/shell/metadata-bad-text.sh
+++ b/test/shell/metadata-bad-text.sh
@@ -44,7 +44,7 @@ sed 's/flags =/flagx =/' meta1 > meta1.bad
dd if=meta1.bad of="$dev1"
pvs 2>&1 | tee out
-grep "bad metadata text" out
+grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
@@ -58,7 +58,7 @@ lvcreate -l1 $vg
vgck --updatemetadata $vg
pvs 2>&1 | tee out
-not grep "bad metadata text" out
+not grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
@@ -92,7 +92,8 @@ dd if=meta1.bad of="$dev1"
dd if=meta2.bad of="$dev2"
pvs 2>&1 | tee out
-grep "bad metadata text" out > out2
+# FIXME: find a better test than looking for a specific message
+grep "Checksum error" out > out2
grep "$dev1" out2
grep "$dev2" out2
@@ -108,7 +109,7 @@ lvcreate -l1 $vg
vgck --updatemetadata $vg
pvs 2>&1 | tee out
-not grep "bad metadata text" out
+not grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
@@ -149,7 +150,7 @@ dd if=meta2.bad of="$dev2"
dd if=meta3.bad of="$dev3"
pvs 2>&1 | tee out
-grep "bad metadata text" out > out2
+grep "Checksum error" out > out2
grep "$dev1" out2
grep "$dev2" out2
grep "$dev3" out2
@@ -166,7 +167,7 @@ lvcreate -l1 $vg
vgck --updatemetadata $vg
pvs 2>&1 | tee out
-not grep "bad metadata text" out
+not grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
@@ -197,7 +198,7 @@ sed 's/READ/RRRR/' meta1 > meta1.bad
dd if=meta1.bad of="$dev1"
pvs 2>&1 | tee out
-grep "bad metadata text" out > out2
+grep "Checksum error" out > out2
grep "$dev1" out2
# We can still use the VG with other available
@@ -224,7 +225,7 @@ aux enable_dev "$dev2"
# Both old and bad metadata are reported.
pvs 2>&1 | tee out
grep "ignoring metadata seqno" out
-grep "bad metadata text" out
+grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
pvs "$dev3"
@@ -238,7 +239,7 @@ vgck --updatemetadata $vg
pvs 2>&1 | tee out
not grep "ignoring metadata seqno" out
-not grep "bad metadata text" out
+not grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
pvs "$dev3"
@@ -282,7 +283,7 @@ dd if=meta1.bad of="$dev1"
dd if=meta2.bad of="$dev2"
pvs 2>&1 | tee out
-grep "bad metadata text" out > out2
+grep "Checksum error" out > out2
grep "$dev1" out2
grep "$dev2" out2
@@ -319,7 +320,7 @@ not ls "$RUNDIR/lvm/vgs_online/$vg"
vgck --updatemetadata $vg
pvs 2>&1 | tee out
-not grep "bad metadata text" out
+not grep "Checksum error" out
pvs "$dev1"
pvs "$dev2"
1 year, 11 months
main - debug: shorter code
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=e3b4c365a4d9fc3f88d...
Commit: e3b4c365a4d9fc3f88dcfaca6dff89b924fc4851
Parent: f74d30d411af0849e4c7f5ac6027899a32b48f52
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 27 11:52:16 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
debug: shorter code
---
lib/format_text/format-text.c | 71 ++++++++++---------------------------------
1 file changed, 16 insertions(+), 55 deletions(-)
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index e8b1865f8..c880f0eb6 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -1082,61 +1082,22 @@ static int _vg_commit_raw_rlocn(struct format_instance *fid,
rlocn_set_ignored(rlocn_slot0, mda_is_ignored(mda));
- if (mdac->rlocn.size) {
- if (precommit) {
- log_debug_metadata("VG %s metadata precommit seq %u on %s mda header at %llu %s",
- vg->name, vg->seqno, dev_name(mdac->area.dev),
- (unsigned long long)mdac->area.start,
- mda_is_ignored(mda) ? "(ignored)" : "(used)");
-
- log_debug_metadata("VG %s metadata precommit slot0 offset %llu size %llu slot1 offset %llu size %llu",
- vg->name,
- (unsigned long long)mdab->raw_locns[0].offset,
- (unsigned long long)mdab->raw_locns[0].size,
- (unsigned long long)mdab->raw_locns[1].offset,
- (unsigned long long)mdab->raw_locns[1].size);
-
- } else {
- log_debug_metadata("VG %s metadata commit seq %u on %s mda header at %llu %s",
- vg->name, vg->seqno, dev_name(mdac->area.dev),
- (unsigned long long)mdac->area.start,
- mda_is_ignored(mda) ? "(ignored)" : "(used)");
-
- log_debug_metadata("VG %s metadata commit slot0 offset %llu size %llu slot1 offset %llu size %llu",
- vg->name,
- (unsigned long long)mdab->raw_locns[0].offset,
- (unsigned long long)mdab->raw_locns[0].size,
- (unsigned long long)mdab->raw_locns[1].offset,
- (unsigned long long)mdab->raw_locns[1].size);
- }
- } else {
- if (precommit) {
- log_debug_metadata("VG %s metadata precommit empty seq %u on %s mda header at %llu %s",
- vg->name, vg->seqno, dev_name(mdac->area.dev),
- (unsigned long long)mdac->area.start,
- mda_is_ignored(mda) ? "(ignored)" : "(used)");
-
- log_debug_metadata("VG %s metadata precommit empty slot0 offset %llu size %llu slot1 offset %llu size %llu",
- vg->name,
- (unsigned long long)mdab->raw_locns[0].offset,
- (unsigned long long)mdab->raw_locns[0].size,
- (unsigned long long)mdab->raw_locns[1].offset,
- (unsigned long long)mdab->raw_locns[1].size);
-
- } else {
- log_debug_metadata("VG %s metadata commit empty seq %u on %s mda header at %llu %s",
- vg->name, vg->seqno, dev_name(mdac->area.dev),
- (unsigned long long)mdac->area.start,
- mda_is_ignored(mda) ? "(ignored)" : "(used)");
-
- log_debug_metadata("VG %s metadata commit empty slot0 offset %llu size %llu slot1 offset %llu size %llu",
- vg->name,
- (unsigned long long)mdab->raw_locns[0].offset,
- (unsigned long long)mdab->raw_locns[0].size,
- (unsigned long long)mdab->raw_locns[1].offset,
- (unsigned long long)mdab->raw_locns[1].size);
- }
- }
+ log_debug_metadata("VG %s metadata %scommit %sseq %u on %s mda header at %llu %s.",
+ vg->name,
+ (precommit) ? "pre" : "",
+ (!mdac->rlocn.size) ? "empty ": "",
+ vg->seqno, dev_name(mdac->area.dev),
+ (unsigned long long)mdac->area.start,
+ mda_is_ignored(mda) ? "(ignored)" : "(used)");
+
+ log_debug_metadata("VG %s metadata %scommit %sslot0 offset %llu size %llu slot1 offset %llu size %llu.",
+ vg->name,
+ (precommit) ? "pre" : "",
+ (!mdac->rlocn.size) ? "empty ": "",
+ (unsigned long long)mdab->raw_locns[0].offset,
+ (unsigned long long)mdab->raw_locns[0].size,
+ (unsigned long long)mdab->raw_locns[1].offset,
+ (unsigned long long)mdab->raw_locns[1].size);
rlocn_set_ignored(mdab->raw_locns, mda_is_ignored(mda));
1 year, 12 months
main - cleanup: use already known lv size
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=f74d30d411af0849e4c...
Commit: f74d30d411af0849e4c7f5ac6027899a32b48f52
Parent: a8a958cc04da2c23e2a7a168ae19f05d4fcab1ae
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 27 11:00:53 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
cleanup: use already known lv size
---
lib/metadata/lv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/metadata/lv.c b/lib/metadata/lv.c
index 475f21191..21aa3b422 100644
--- a/lib/metadata/lv.c
+++ b/lib/metadata/lv.c
@@ -951,7 +951,7 @@ uint64_t lv_origin_size(const struct logical_volume *lv)
struct lv_segment *seg;
if (lv_is_cow(lv))
- return (uint64_t) find_snapshot(lv)->len * lv->vg->extent_size;
+ return find_snapshot(lv)->lv->size;
if (lv_is_thin_volume(lv) && (seg = first_seg(lv)) &&
seg->external_lv)
1 year, 12 months
main - cleanup: reuse existing code for free path
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=a8a958cc04da2c23e2a...
Commit: a8a958cc04da2c23e2a7a168ae19f05d4fcab1ae
Parent: 9668427fe8d08f2c0e3f778c53bc00181478f71c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Mon Sep 27 11:42:45 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
cleanup: reuse existing code for free path
---
lib/format_text/format-text.c | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index b2bbf3c66..e8b1865f8 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -964,12 +964,8 @@ static int _vg_write_raw(struct format_instance *fid, struct volume_group *vg,
r = 1;
out:
- if (!r) {
- free(fidtc->write_buf);
- fidtc->write_buf = NULL;
- fidtc->write_buf_size = 0;
- fidtc->new_metadata_size = 0;
- }
+ if (!r)
+ free_text_fidtc(vg);
return r;
}
@@ -1154,12 +1150,8 @@ static int _vg_commit_raw_rlocn(struct format_instance *fid,
r = 1;
out:
- if (!precommit && !fidtc->preserve) {
- free(fidtc->write_buf);
- fidtc->write_buf = NULL;
- fidtc->write_buf_size = 0;
- fidtc->new_metadata_size = 0;
- }
+ if (!precommit && !fidtc->preserve)
+ free_text_fidtc(vg);
return r;
}
1 year, 12 months
main - cleanup: use first parameter uint
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9668427fe8d08f2c0e3...
Commit: 9668427fe8d08f2c0e3f778c53bc00181478f71c
Parent: 614d150a8c7387744804b90fddea99c7fb4511f2
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 22:16:07 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
cleanup: use first parameter uint
Easier with struct zeroing and matching assing of type uint.
---
tools/lvcreate.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index 0def23639..0121c09a8 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -18,9 +18,9 @@
#include <fcntl.h>
struct lvcreate_cmdline_params {
- percent_type_t percent;
uint64_t size;
uint64_t virtual_size; /* snapshot, thin */
+ percent_type_t percent;
char **pvs;
uint32_t pv_count;
};
1 year, 12 months
main - cov; matching enum type
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=614d150a8c738774480...
Commit: 614d150a8c7387744804b90fddea99c7fb4511f2
Parent: bf0d558067926e716a370165e323187cf44c050a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 22:14:53 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
cov; matching enum type
---
tools/lvconvert.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/lvconvert.c b/tools/lvconvert.c
index a7fb848be..34b82ea02 100644
--- a/tools/lvconvert.c
+++ b/tools/lvconvert.c
@@ -95,7 +95,7 @@ struct convert_poll_id_list {
};
/* FIXME Temporary function until the enum replaces the separate variables */
-static void _set_conv_type(struct lvconvert_params *lp, int conv_type)
+static void _set_conv_type(struct lvconvert_params *lp, conversion_type_t conv_type)
{
if (lp->conv_type != CONV_OTHER)
log_error(INTERNAL_ERROR "Changing conv_type from %d to %d.", lp->conv_type, conv_type);
1 year, 12 months
main - cov: ignoring
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=bf0d558067926e716a3...
Commit: bf0d558067926e716a370165e323187cf44c050a
Parent: dab4acb8f8b379f27bdd5cd2f9014385948cdcc0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 22:08:26 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
cov: ignoring
---
test/lib/not.c | 1 +
tools/lvm.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/test/lib/not.c b/test/lib/not.c
index 0245c3475..751c95b3d 100644
--- a/test/lib/not.c
+++ b/test/lib/not.c
@@ -82,6 +82,7 @@ int main(int args, char **argv) {
if (val)
(void) setenv("LVM_EXPECTED_EXIT_STATUS", val, 1);
+ /* coverity[os_cmd_sink] intentionally passing argv + 1 */
execvp(argv[1], &argv[1]);
/* should not be accessible */
return FAILURE;
diff --git a/tools/lvm.c b/tools/lvm.c
index cc67e924a..e80113e0d 100644
--- a/tools/lvm.c
+++ b/tools/lvm.c
@@ -19,6 +19,7 @@
int main(int argc, char **argv)
{
+ /* coverity[os_cmd_sink] intentionally passing argv */
return lvm2_main(argc, argv);
}
1 year, 12 months
main - make: build without versionsort
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=dab4acb8f8b379f27bd...
Commit: dab4acb8f8b379f27bdd5cd2f9014385948cdcc0
Parent: df70dca995e5593e27e13cf00311d961b4def0e2
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 23:04:37 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
make: build without versionsort
Reported-by: adamboardman of gemian
---
lib/format_text/archive.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/format_text/archive.c b/lib/format_text/archive.c
index 1528cb173..103b0608d 100644
--- a/lib/format_text/archive.c
+++ b/lib/format_text/archive.c
@@ -135,6 +135,10 @@ static struct dm_list *_scan_archive(struct dm_pool *mem,
dm_list_init(results);
+#ifndef HAVE_VERSIONSORT
+ /* fallback to alphasort when versionsort is not defined */
+ #define versionsort alphasort
+#endif /* !HAVE_VERSIONSORT */
/* Use versionsort to handle numbers beyond 5 digits */
if ((count = scandir(dir, &dirent, NULL, versionsort)) < 0) {
log_error("Couldn't scan the archive directory (%s).", dir);
1 year, 12 months
main - make: opened can be needed for either defines case
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=df70dca995e5593e27e...
Commit: df70dca995e5593e27e13cf00311d961b4def0e2
Parent: 9971459d19e93ff652eeaff165da72e51b256299
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 17:46:09 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
make: opened can be needed for either defines case
Reported-by: adamboardman of gemian
---
lib/device/dev-io.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c
index 17993d82c..b4f1930b1 100644
--- a/lib/device/dev-io.c
+++ b/lib/device/dev-io.c
@@ -380,8 +380,10 @@ int dev_open_flags(struct device *dev, int flags, int direct, int quiet)
return 0;
}
-#ifdef O_DIRECT_SUPPORT
+#if defined(O_NOATIME) || defined(O_DIRECT_SUPPORT)
opened:
+#endif
+#ifdef O_DIRECT_SUPPORT
if (direct)
dev->flags |= DEV_O_DIRECT_TESTED;
#endif
1 year, 12 months
main - make: replace legacy use rindex with strrchr
by Zdenek Kabelac
Gitweb: https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=9971459d19e93ff652e...
Commit: 9971459d19e93ff652eeaff165da72e51b256299
Parent: e585c10fade006e5fe3643b76b09501d54c20c9b
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Sep 24 17:40:35 2021 +0200
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Mon Sep 27 18:56:14 2021 +0200
make: replace legacy use rindex with strrchr
Seems already dropped by some systems.
Reported-by: adamboardman of gemian
---
device_mapper/libdm-deptree.c | 2 +-
lib/activate/dev_manager.c | 2 +-
libdm/libdm-deptree.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/device_mapper/libdm-deptree.c b/device_mapper/libdm-deptree.c
index a0f386e77..e4bf4c814 100644
--- a/device_mapper/libdm-deptree.c
+++ b/device_mapper/libdm-deptree.c
@@ -604,7 +604,7 @@ static struct dm_tree_node *_find_dm_tree_node_by_uuid(struct dm_tree *dtree,
default_uuid_prefix = dm_uuid_prefix();
default_uuid_prefix_len = strlen(default_uuid_prefix);
- if (suffix_list && (suffix_position = rindex(uuid, '-'))) {
+ if (suffix_list && (suffix_position = strrchr(uuid, '-'))) {
while ((suffix = suffix_list[i++])) {
if (strcmp(suffix_position + 1, suffix))
continue;
diff --git a/lib/activate/dev_manager.c b/lib/activate/dev_manager.c
index a8516d661..a73a556b2 100644
--- a/lib/activate/dev_manager.c
+++ b/lib/activate/dev_manager.c
@@ -838,7 +838,7 @@ static int _info(struct cmd_context *cmd,
return 1;
/* Check for original version of dlid before the suffixes got added in 2.02.106 */
- if ((suffix_position = rindex(dlid, '-'))) {
+ if ((suffix_position = strrchr(dlid, '-'))) {
while ((suffix = uuid_suffix_list[i++])) {
if (strcmp(suffix_position + 1, suffix))
continue;
diff --git a/libdm/libdm-deptree.c b/libdm/libdm-deptree.c
index d7fb5ef13..c14b6ef56 100644
--- a/libdm/libdm-deptree.c
+++ b/libdm/libdm-deptree.c
@@ -566,7 +566,7 @@ static struct dm_tree_node *_find_dm_tree_node_by_uuid(struct dm_tree *dtree,
default_uuid_prefix = dm_uuid_prefix();
default_uuid_prefix_len = strlen(default_uuid_prefix);
- if (suffix_list && (suffix_position = rindex(uuid, '-'))) {
+ if (suffix_list && (suffix_position = strrchr(uuid, '-'))) {
while ((suffix = suffix_list[i++])) {
if (strcmp(suffix_position + 1, suffix))
continue;
1 year, 12 months