mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-03 05:18:29 +03:00
fix some issues when compiling with -D DEBUG_POOL
- fix compilation issues - fix wrong pool object maipulation (lvm dumpconfig triggers assert) - second iteration in loop _log_parallel_areas operates on non-existing object
This commit is contained in:
parent
0ef8308f1b
commit
aa8111b3cd
@ -457,9 +457,9 @@ static int _write_config(struct config_node *n, int only_one,
|
|||||||
line_append(" {");
|
line_append(" {");
|
||||||
if (!_line_end(outline))
|
if (!_line_end(outline))
|
||||||
return_0;
|
return_0;
|
||||||
|
_write_config(n->child, 0, outline, level + 1);
|
||||||
if (!_line_start(outline))
|
if (!_line_start(outline))
|
||||||
return_0;
|
return_0;
|
||||||
_write_config(n->child, 0, outline, level + 1);
|
|
||||||
line_append("%s}", space);
|
line_append("%s}", space);
|
||||||
} else {
|
} else {
|
||||||
/* it's a value */
|
/* it's a value */
|
||||||
|
@ -611,12 +611,12 @@ static int _log_parallel_areas(struct dm_pool *mem, struct dm_list *parallel_are
|
|||||||
if (!parallel_areas)
|
if (!parallel_areas)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (!dm_pool_begin_object(mem, 256)) {
|
|
||||||
log_error("dm_pool_begin_object failed");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
dm_list_iterate_items(spvs, parallel_areas) {
|
dm_list_iterate_items(spvs, parallel_areas) {
|
||||||
|
if (!dm_pool_begin_object(mem, 256)) {
|
||||||
|
log_error("dm_pool_begin_object failed");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
dm_list_iterate_items(pvl, &spvs->pvs) {
|
dm_list_iterate_items(pvl, &spvs->pvs) {
|
||||||
if (!dm_pool_grow_object(mem, pv_dev_name(pvl->pv), strlen(pv_dev_name(pvl->pv)))) {
|
if (!dm_pool_grow_object(mem, pv_dev_name(pvl->pv), strlen(pv_dev_name(pvl->pv)))) {
|
||||||
log_error("dm_pool_grow_object failed");
|
log_error("dm_pool_grow_object failed");
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dmlib.h"
|
#include "dmlib.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
struct block {
|
struct block {
|
||||||
struct block *next;
|
struct block *next;
|
||||||
@ -43,7 +44,7 @@ struct dm_pool {
|
|||||||
/* by default things come out aligned for doubles */
|
/* by default things come out aligned for doubles */
|
||||||
#define DEFAULT_ALIGNMENT __alignof__ (double)
|
#define DEFAULT_ALIGNMENT __alignof__ (double)
|
||||||
|
|
||||||
struct pool *dm_pool_create(const char *name, size_t chunk_hint)
|
struct dm_pool *dm_pool_create(const char *name, size_t chunk_hint)
|
||||||
{
|
{
|
||||||
struct dm_pool *mem = dm_malloc(sizeof(*mem));
|
struct dm_pool *mem = dm_malloc(sizeof(*mem));
|
||||||
|
|
||||||
@ -130,8 +131,6 @@ static void _append_block(struct dm_pool *p, struct block *b)
|
|||||||
|
|
||||||
static struct block *_new_block(size_t s, unsigned alignment)
|
static struct block *_new_block(size_t s, unsigned alignment)
|
||||||
{
|
{
|
||||||
static const char *_oom = "Out of memory";
|
|
||||||
|
|
||||||
/* FIXME: I'm currently ignoring the alignment arg. */
|
/* FIXME: I'm currently ignoring the alignment arg. */
|
||||||
size_t len = sizeof(struct block) + s;
|
size_t len = sizeof(struct block) + s;
|
||||||
struct block *b = dm_malloc(len);
|
struct block *b = dm_malloc(len);
|
||||||
@ -144,12 +143,12 @@ static struct block *_new_block(size_t s, unsigned alignment)
|
|||||||
assert(alignment == DEFAULT_ALIGNMENT);
|
assert(alignment == DEFAULT_ALIGNMENT);
|
||||||
|
|
||||||
if (!b) {
|
if (!b) {
|
||||||
log_err(_oom);
|
log_err("Out of memory");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(b->data = dm_malloc(s))) {
|
if (!(b->data = dm_malloc(s))) {
|
||||||
log_err(_oom);
|
log_err("Out of memory");
|
||||||
dm_free(b);
|
dm_free(b);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user