diff options
author | Alasdair Kergon <agk@redhat.com> | 2008-06-25 16:52:27 +0000 |
---|---|---|
committer | Alasdair Kergon <agk@redhat.com> | 2008-06-25 16:52:27 +0000 |
commit | 36081ccf2d078e6940fb533e3f2eb856da3a1416 (patch) | |
tree | 6b3d8fbde8675cf1d187a74326ab839092054be3 /lib/freeseg | |
parent | 937a25249f9eb3ac9eb2245b413ca9525f0c92f6 (diff) | |
download | lvm2-36081ccf2d078e6940fb533e3f2eb856da3a1416.tar.gz |
Fix reporting of LV fields alongside unallocated PV segments.
Diffstat (limited to 'lib/freeseg')
-rw-r--r-- | lib/freeseg/freeseg.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/freeseg/freeseg.c b/lib/freeseg/freeseg.c new file mode 100644 index 000000000..08f310067 --- /dev/null +++ b/lib/freeseg/freeseg.c @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. + * + * This file is part of LVM2. + * + * This copyrighted material is made available to anyone wishing to use, + * modify, copy, or redistribute it subject to the terms and conditions + * of the GNU Lesser General Public License v.2.1. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "lib.h" +#include "toolcontext.h" +#include "segtype.h" +#include "display.h" +#include "text_export.h" +#include "text_import.h" +#include "config.h" +#include "str_list.h" +#include "targets.h" +#include "lvm-string.h" +#include "activate.h" +#include "str_list.h" +#include "metadata.h" + +static const char *_freeseg_name(const struct lv_segment *seg) +{ + return seg->segtype->name; +} + +static void _freeseg_destroy(const struct segment_type *segtype) +{ + dm_free((void *)segtype); +} + +static struct segtype_handler _freeseg_ops = { + .name = _freeseg_name, + .destroy = _freeseg_destroy, +}; + +struct segment_type *init_free_segtype(struct cmd_context *cmd) +{ + struct segment_type *segtype = dm_malloc(sizeof(*segtype)); + + if (!segtype) + return_NULL; + + segtype->cmd = cmd; + segtype->ops = &_freeseg_ops; + segtype->name = "free"; + segtype->private = NULL; + segtype->flags = SEG_VIRTUAL | SEG_CANNOT_BE_ZEROED; + + log_very_verbose("Initialised segtype: %s", segtype->name); + + return segtype; +} |