master - pv_read: add missing check for valid info
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=401c9aba4a1d37...
Commit: 401c9aba4a1d37d2bb05467e8860876929db9a8c
Parent: 3e8dbfaecf5168ff8717e3eebabee06c27b44fe6
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 14:06:33 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
pv_read: add missing check for valid info
If the lvmcache_info_from_pvid() fails to find valid
info, invoke the lookup by dev, and only in this case
call lvmcache_info_from_pvid() again.
Also check for the result of info and return
error directly, so the NULL is not passed
to lvmcache_get_label().
---
WHATS_NEW | 1 +
lib/metadata/metadata.c | 7 ++++++-
2 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index b9cdfa7..106bee4 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Check lvmcache_info_from_pvid and recall only when needed in _pv_read.
Check for memory failure of dm_config_write_node() in lvmetad.
Fix socket leak on error path in lvmetad's handle_connect.
Check for failing id_read_format() in _pv_populate_lvmcache.
diff --git a/lib/metadata/metadata.c b/lib/metadata/metadata.c
index 549a356..807d06a 100644
--- a/lib/metadata/metadata.c
+++ b/lib/metadata/metadata.c
@@ -3633,8 +3633,13 @@ static struct physical_volume *_pv_read(struct cmd_context *cmd,
pv_name);
return NULL;
}
+ if (!(info = lvmcache_info_from_pvid(dev->pvid, 0))) {
+ if (warnings)
+ log_error("No cache info in lvmetad cache for %s.",
+ pv_name);
+ return NULL;
+ }
}
- info = lvmcache_info_from_pvid(dev->pvid, 0);
label = lvmcache_get_label(info);
} else {
if (!(label_read(dev, &label, UINT64_C(0)))) {
11 years, 4 months
master - lvmetad: add check for failure dm_config_write_node
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=3e8dbfaecf5168...
Commit: 3e8dbfaecf5168ff8717e3eebabee06c27b44fe6
Parent: 4008f4f891c948c1629ed0ee50e04d4c26001d0c
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 21:36:27 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
lvmetad: add check for failure dm_config_write_node
Detect if dm_config_write_node failed and fail correctly.
---
WHATS_NEW | 1 +
libdaemon/client/daemon-client.c | 5 ++++-
libdaemon/server/daemon-server.c | 3 ++-
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 701d502..b9cdfa7 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Check for memory failure of dm_config_write_node() in lvmetad.
Fix socket leak on error path in lvmetad's handle_connect.
Check for failing id_read_format() in _pv_populate_lvmcache.
Fix memleak on error path for lvmetad's pv_found.
diff --git a/libdaemon/client/daemon-client.c b/libdaemon/client/daemon-client.c
index 53bfa86..371dc5c 100644
--- a/libdaemon/client/daemon-client.c
+++ b/libdaemon/client/daemon-client.c
@@ -77,7 +77,10 @@ daemon_reply daemon_send(daemon_handle h, daemon_request rq)
buffer = rq.buffer;
if (!buffer.mem)
- dm_config_write_node(rq.cft->root, buffer_line, &buffer);
+ if (!dm_config_write_node(rq.cft->root, buffer_line, &buffer)) {
+ reply.error = ENOMEM;
+ return reply;
+ }
assert(buffer.mem);
if (!buffer_write(h.socket_fd, &buffer))
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 3c84e11..0237465 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -392,7 +392,8 @@ static void *client_thread(void *baton)
res = b->s.handler(b->s, b->client, req);
if (!res.buffer.mem) {
- dm_config_write_node(res.cft->root, buffer_line, &res.buffer);
+ if (!dm_config_write_node(res.cft->root, buffer_line, &res.buffer))
+ goto fail;
if (!buffer_append(&res.buffer, "\n\n"))
goto fail;
dm_config_destroy(res.cft);
11 years, 4 months
master - lvmetad: fix socket leak in handle_connect
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=4008f4f891c948...
Commit: 4008f4f891c948c1629ed0ee50e04d4c26001d0c
Parent: e012d0635d34edd98652c9425abb618a9565077a
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 21:31:22 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
lvmetad: fix socket leak in handle_connect
Close socket_fd and report error on malloc failure.
---
WHATS_NEW | 1 +
libdaemon/server/daemon-server.c | 6 +++++-
2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 2fc8acf..701d502 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Fix socket leak on error path in lvmetad's handle_connect.
Check for failing id_read_format() in _pv_populate_lvmcache.
Fix memleak on error path for lvmetad's pv_found.
Unlock vg mutex in error path when lvmetad tries to lock_vg.
diff --git a/libdaemon/server/daemon-server.c b/libdaemon/server/daemon-server.c
index 3711419..3c84e11 100644
--- a/libdaemon/server/daemon-server.c
+++ b/libdaemon/server/daemon-server.c
@@ -427,8 +427,12 @@ static int handle_connect(daemon_state s)
if (client.socket_fd < 0)
return 0;
- if (!(baton = malloc(sizeof(struct thread_baton))))
+ if (!(baton = malloc(sizeof(struct thread_baton)))) {
+ if (close(client.socket_fd))
+ perror("close");
+ ERROR(&s, "Failed to allocate thread baton");
return 0;
+ }
baton->s = s;
baton->client = client;
11 years, 4 months
master - lvmetad: check id_read_format error status
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e012d0635d34ed...
Commit: e012d0635d34edd98652c9425abb618a9565077a
Parent: ba3f37c9e4971ba4538cb74e9e7b60e3772da793
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 16:45:15 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
lvmetad: check id_read_format error status
Detect error from id_read_format() function.
---
WHATS_NEW | 1 +
lib/cache/lvmetad.c | 7 ++++---
2 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index d535d10..2fc8acf 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Check for failing id_read_format() in _pv_populate_lvmcache.
Fix memleak on error path for lvmetad's pv_found.
Unlock vg mutex in error path when lvmetad tries to lock_vg.
Add check for key string duplication in config_make_nodes_v.
diff --git a/lib/cache/lvmetad.c b/lib/cache/lvmetad.c
index 3ce2804..67e083b 100644
--- a/lib/cache/lvmetad.c
+++ b/lib/cache/lvmetad.c
@@ -249,9 +249,10 @@ static struct lvmcache_info *_pv_populate_lvmcache(
return NULL;
}
- if (vgid_txt)
- id_read_format(&vgid, vgid_txt);
- else
+ if (vgid_txt) {
+ if (!id_read_format(&vgid, vgid_txt))
+ return_NULL;
+ } else
strcpy((char*)&vgid, fmt->orphan_vg_name);
if (!vgname)
11 years, 4 months
master - lvmetad: fix memleak on pv_found error path
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=ba3f37c9e4971b...
Commit: ba3f37c9e4971ba4538cb74e9e7b60e3772da793
Parent: 399fc1bb33119d281f57108dba4bd9cd479ed8a0
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 16:43:42 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
lvmetad: fix memleak on pv_found error path
Free resources allocated in pv_found when going out
through error path.
---
WHATS_NEW | 1 +
daemons/lvmetad/lvmetad-core.c | 14 ++++++++++++--
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index dd8ae68..d535d10 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Fix memleak on error path for lvmetad's pv_found.
Unlock vg mutex in error path when lvmetad tries to lock_vg.
Add check for key string duplication in config_make_nodes_v.
Add check for created fid in _scan_file.
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index cbeaae1..ef3f8fe 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -827,7 +827,7 @@ static response pv_found(lvmetad_state *s, request r)
uint64_t device;
struct dm_config_tree *cft, *pvmeta_old_dev = NULL, *pvmeta_old_pvid = NULL;
char *old;
- const char *pvid_dup;
+ char *pvid_dup;
int complete = 0, orphan = 0;
int64_t seqno = -1, seqno_old = -1;
@@ -854,13 +854,23 @@ static response pv_found(lvmetad_state *s, request r)
if (!(cft = dm_config_create()) ||
!(cft->root = dm_config_clone_node(cft, pvmeta, 0))) {
unlock_pvid_to_pvmeta(s);
+ if (cft)
+ dm_config_destroy(cft);
+ return reply_fail("out of memory");
+ }
+
+ if (!(pvid_dup = dm_strdup(pvid))) {
+ unlock_pvid_to_pvmeta(s);
+ dm_config_destroy(cft);
return reply_fail("out of memory");
}
- pvid_dup = dm_strdup(pvid);
if (!dm_hash_insert(s->pvid_to_pvmeta, pvid, cft) ||
!dm_hash_insert_binary(s->device_to_pvid, &device, sizeof(device), (void*)pvid_dup)) {
unlock_pvid_to_pvmeta(s);
+ dm_hash_remove(s->pvid_to_pvmeta, pvid);
+ dm_config_destroy(cft);
+ dm_free(pvid_dup);
return reply_fail("out of memory");
}
if (pvmeta_old_pvid)
11 years, 4 months
master - lvmetad: keep returned struct fully initialized
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=399fc1bb33119d...
Commit: 399fc1bb33119d281f57108dba4bd9cd479ed8a0
Parent: a4269aadf320f36d3d6fa3a3b66dda98855e7bc3
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 16:38:07 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:27 2012 +0100
lvmetad: keep returned struct fully initialized
Always clear the response structure.
Simplify daemon_reply initialization.
---
daemons/lvmetad/lvmetad-core.c | 11 +++++------
libdaemon/client/daemon-client.c | 6 +++---
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index 6c00146..cbeaae1 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -292,7 +292,7 @@ static response pv_list(lvmetad_state *s, request r)
struct dm_config_node *cn = NULL, *cn_pvs;
struct dm_hash_node *n;
const char *id;
- response res;
+ response res = { 0 };
buffer_init( &res.buffer );
@@ -320,7 +320,7 @@ static response pv_lookup(lvmetad_state *s, request r)
{
const char *pvid = daemon_request_str(r, "uuid", NULL);
int64_t devt = daemon_request_int(r, "device", 0);
- response res;
+ response res = { 0 };
struct dm_config_node *pv;
buffer_init( &res.buffer );
@@ -364,7 +364,7 @@ static response vg_list(lvmetad_state *s, request r)
struct dm_hash_node *n;
const char *id;
const char *name;
- response res;
+ response res = { 0 };
buffer_init( &res.buffer );
@@ -434,7 +434,7 @@ static response vg_lookup(lvmetad_state *s, request r)
{
struct dm_config_tree *cft;
struct dm_config_node *metadata, *n;
- response res;
+ response res = { 0 };
const char *uuid = daemon_request_str(r, "uuid", NULL);
const char *name = daemon_request_str(r, "name", NULL);
@@ -492,7 +492,6 @@ static response vg_lookup(lvmetad_state *s, request r)
if (!(n = n->sib = dm_config_clone_node(res.cft, metadata, 1)))
goto bad;
n->parent = res.cft->root;
- res.error = 0;
unlock_vg(s, uuid);
update_pv_status(s, res.cft, n, 1); /* FIXME report errors */
@@ -987,7 +986,7 @@ static void _dump_pairs(struct buffer *buf, struct dm_hash_table *ht, const char
static response dump(lvmetad_state *s)
{
- response res;
+ response res = { 0 };
struct buffer *b = &res.buffer;
buffer_init(b);
diff --git a/libdaemon/client/daemon-client.c b/libdaemon/client/daemon-client.c
index a010cc0..53bfa86 100644
--- a/libdaemon/client/daemon-client.c
+++ b/libdaemon/client/daemon-client.c
@@ -27,7 +27,7 @@
daemon_handle daemon_open(daemon_info i) {
daemon_handle h = { .protocol_version = 0, .error = 0 };
- daemon_reply r = { .cft = NULL };
+ daemon_reply r = { 0 };
struct sockaddr_un sockaddr = { .sun_family = AF_UNIX };
if ((h.socket_fd = socket(PF_UNIX, SOCK_STREAM /* | SOCK_NONBLOCK */, 0)) < 0)
@@ -72,7 +72,7 @@ error:
daemon_reply daemon_send(daemon_handle h, daemon_request rq)
{
struct buffer buffer;
- daemon_reply reply = { .cft = NULL, .error = 0 };
+ daemon_reply reply = { 0 };
assert(h.socket_fd >= 0);
buffer = rq.buffer;
@@ -104,7 +104,7 @@ void daemon_reply_destroy(daemon_reply r) {
daemon_reply daemon_send_simple_v(daemon_handle h, const char *id, va_list ap)
{
- static const daemon_reply err = { .error = ENOMEM, .buffer = { 0, 0, NULL }, .cft = NULL };
+ static const daemon_reply err = { .error = ENOMEM };
daemon_request rq = { .cft = NULL };
daemon_reply repl;
11 years, 4 months
master - lvmetad: unlock vg on out-of-memory path
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=a4269aadf320f3...
Commit: a4269aadf320f36d3d6fa3a3b66dda98855e7bc3
Parent: 788ac7fa547fb98f0edd38685d40b80609f298dc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 16:35:26 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:26 2012 +0100
lvmetad: unlock vg on out-of-memory path
If we fail to get memory for mutex, hash the mutex
or fail somewhere along pthread function calls
return allocated resources back and unlock vg_lock_map mutex.
---
WHATS_NEW | 1 +
daemons/lvmetad/lvmetad-core.c | 24 ++++++++++++++----------
2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index e0ce819..dd8ae68 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Unlock vg mutex in error path when lvmetad tries to lock_vg.
Add check for key string duplication in config_make_nodes_v.
Add check for created fid in _scan_file.
Log output also to syslog when abort_on_internal_error is set.
diff --git a/daemons/lvmetad/lvmetad-core.c b/daemons/lvmetad/lvmetad-core.c
index e1cb583..6c00146 100644
--- a/daemons/lvmetad/lvmetad-core.c
+++ b/daemons/lvmetad/lvmetad-core.c
@@ -121,19 +121,18 @@ static response reply_unknown(const char *reason)
static struct dm_config_tree *lock_vg(lvmetad_state *s, const char *id) {
pthread_mutex_t *vg;
struct dm_config_tree *cft;
+ pthread_mutexattr_t rec;
pthread_mutex_lock(&s->lock.vg_lock_map);
- vg = dm_hash_lookup(s->lock.vg, id);
- if (!vg) {
- pthread_mutexattr_t rec;
- pthread_mutexattr_init(&rec);
- pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP);
- if (!(vg = malloc(sizeof(pthread_mutex_t))))
- return NULL;
- pthread_mutex_init(vg, &rec);
+ if (!(vg = dm_hash_lookup(s->lock.vg, id))) {
+ if (!(vg = malloc(sizeof(pthread_mutex_t))) ||
+ pthread_mutexattr_init(&rec) ||
+ pthread_mutexattr_settype(&rec, PTHREAD_MUTEX_RECURSIVE_NP) ||
+ pthread_mutex_init(vg, &rec))
+ goto bad;
if (!dm_hash_insert(s->lock.vg, id, vg)) {
- free(vg);
- return NULL;
+ pthread_mutex_destroy(vg);
+ goto bad;
}
}
/* We never remove items from s->lock.vg => the pointer remains valid. */
@@ -147,6 +146,11 @@ static struct dm_config_tree *lock_vg(lvmetad_state *s, const char *id) {
cft = dm_hash_lookup(s->vgid_to_metadata, id);
unlock_vgid_to_metadata(s);
return cft;
+bad:
+ pthread_mutex_unlock(&s->lock.vg_lock_map);
+ free(vg);
+ ERROR(s, "Out of memory");
+ return NULL;
}
static void unlock_vg(lvmetad_state *s, const char *id) {
11 years, 4 months
master - libdaemon: check for strdup result
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=788ac7fa547fb9...
Commit: 788ac7fa547fb98f0edd38685d40b80609f298dc
Parent: ff5612c0c3208276763348e9f9afa9a09096fbe1
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 01:00:36 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:26 2012 +0100
libdaemon: check for strdup result
Detect failure of dm_pool_strdup() and print error in fail path.
Save one extra strchr call - since we already know the distance
for the '=' character.
Drop stack trace from return after log_error().
---
WHATS_NEW | 1 +
libdaemon/client/config-util.c | 17 +++++++++++------
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index fcb8897..e0ce819 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Add check for key string duplication in config_make_nodes_v.
Add check for created fid in _scan_file.
Log output also to syslog when abort_on_internal_error is set.
Add LV snapshot support to liblvm and python-lvm.
diff --git a/libdaemon/client/config-util.c b/libdaemon/client/config-util.c
index 1c83134..34d755f 100644
--- a/libdaemon/client/config-util.c
+++ b/libdaemon/client/config-util.c
@@ -215,7 +215,8 @@ struct dm_config_node *config_make_nodes_v(struct dm_config_tree *cft,
const char *next;
struct dm_config_node *first = NULL;
struct dm_config_node *cn;
- const char *fmt, *key;
+ const char *fmt;
+ char *key;
while ((next = va_arg(ap, char *))) {
cn = NULL;
@@ -223,12 +224,16 @@ struct dm_config_node *config_make_nodes_v(struct dm_config_tree *cft,
if (!fmt) {
log_error(INTERNAL_ERROR "Bad format string '%s'", fmt);
- return_NULL;
+ return NULL;
+ }
+
+ if (!(key = dm_pool_strdup(cft->mem, next))) {
+ log_error("Failed to duplicate node key.");
+ return NULL;
}
- fmt += 2;
- key = dm_pool_strdup(cft->mem, next);
- *strchr(key, '=') = 0;
+ key[fmt - next] = '\0';
+ fmt += 2;
if (!strcmp(fmt, "%d") || !strcmp(fmt, "%" PRId64)) {
int64_t value = va_arg(ap, int64_t);
@@ -247,7 +252,7 @@ struct dm_config_node *config_make_nodes_v(struct dm_config_tree *cft,
chain_node(cn, parent, pre_sib);
} else {
log_error(INTERNAL_ERROR "Bad format string '%s'", fmt);
- return_NULL;
+ return NULL;
}
if (!first)
first = cn;
11 years, 4 months
master - format-text: check for _text_create_text_instance
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=ff5612c0c32082...
Commit: ff5612c0c3208276763348e9f9afa9a09096fbe1
Parent: 740ab81d03b1286096d9f8b35be15d54493db52f
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 21:34:28 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:23:23 2012 +0100
format-text: check for _text_create_text_instance
Test if 'fid' creation failed and report stack trace,
break the loop and do not pass NULL fid further.
---
WHATS_NEW | 1 +
lib/format_text/format-text.c | 5 ++++-
2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 249db0b..fcb8897 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Add check for created fid in _scan_file.
Log output also to syslog when abort_on_internal_error is set.
Add LV snapshot support to liblvm and python-lvm.
Avoid a global lock in pvs when lvmetad is in use.
diff --git a/lib/format_text/format-text.c b/lib/format_text/format-text.c
index 476d5d9..227289f 100644
--- a/lib/format_text/format-text.c
+++ b/lib/format_text/format-text.c
@@ -1089,7 +1089,10 @@ static int _scan_file(const struct format_type *fmt, const char *vgname)
/* FIXME: Check this fid is OK! */
fic.type = FMT_INSTANCE_PRIVATE_MDAS;
fic.context.private = NULL;
- fid = _text_create_text_instance(fmt, &fic);
+ if (!(fid = _text_create_text_instance(fmt, &fic))) {
+ stack;
+ break;
+ }
if ((vg = _vg_read_file_name(fid, scanned_vgname,
path))) {
/* FIXME Store creation host in vg */
11 years, 4 months
master - log: move abort past syslog
by Zdenek Kabelac
Gitweb: http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=740ab81d03b128...
Commit: 740ab81d03b1286096d9f8b35be15d54493db52f
Parent: 575c4ed96412edf513dbd0263983520a15b3b8bc
Author: Zdenek Kabelac <zkabelac(a)redhat.com>
AuthorDate: Fri Dec 14 13:57:01 2012 +0100
Committer: Zdenek Kabelac <zkabelac(a)redhat.com>
CommitterDate: Sat Dec 15 17:22:48 2012 +0100
log: move abort past syslog
When the abort_on_internal_errors is enabled, we aborted prior
the syslog logging output.
Since such fatal error gets level _LOG_FATAL it should
not be blocked by debug_level() check so lets move it further,
to get abort error logged also via syslog.
---
WHATS_NEW | 1 +
lib/log/log.c | 6 +++---
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/WHATS_NEW b/WHATS_NEW
index 697e4d2..249db0b 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.99 -
===================================
+ Log output also to syslog when abort_on_internal_error is set.
Add LV snapshot support to liblvm and python-lvm.
Avoid a global lock in pvs when lvmetad is in use.
Fix crash in pvscan --cache -aay triggered by non-mda PV.
diff --git a/lib/log/log.c b/lib/log/log.c
index d50cb4a..3c357f1 100644
--- a/lib/log/log.c
+++ b/lib/log/log.c
@@ -344,9 +344,6 @@ void print_log(int level, const char *file, int line, int dm_errno,
va_end(ap);
}
- if (fatal_internal_error)
- abort();
-
if (level > debug_level())
return;
@@ -368,6 +365,9 @@ void print_log(int level, const char *file, int line, int dm_errno,
va_end(ap);
}
+ if (fatal_internal_error)
+ abort();
+
/* FIXME This code is unfinished - pre-extend & condense. */
if (!_already_logging && _log_direct && critical_section()) {
_already_logging = 1;
11 years, 4 months