mirror of
git://sourceware.org/git/lvm2.git
synced 2024-12-22 17:35:59 +03:00
ecb2be5d16
LVSINFO is exactly the same as existing LVS report type, but it has the "struct lvinfo" populated in addition for use - this is useful for fields that display the status of the LV device itself (e.g. suspended state, tables present/missing...). Currently, such properties are reported within the "lv_attr" field so separation is unnecessary - the "lvinfo" call to populate the "struct lvinfo" is directly a part of the field reporting function - _lvstatus_disp/lv_attr_dup. With upcoming patches, we'd like the lv_attr field bits to be separated into their own fields. To avoid calling "lvinfo" fn as many times as there are fields requiring the "lv_info" structure to be populated while reporting one row related to one LV, we're separating former LVS into LVS and LVSINFO report type. With this, there's just one "lvinfo" call for one report row and LV reporting fields will take the info needed from this struct then, hence reusing it and not calling "lvinfo" fn on their own.
53 lines
1.5 KiB
C
53 lines
1.5 KiB
C
/*
|
|
* Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved.
|
|
* Copyright (C) 2004-2009 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
|
|
*/
|
|
|
|
#ifndef _LVM_REPORT_H
|
|
#define _LVM_REPORT_H
|
|
|
|
#include "metadata-exported.h"
|
|
#include "label.h"
|
|
#include "activate.h"
|
|
|
|
typedef enum {
|
|
LVS = 1,
|
|
LVSINFO = 2,
|
|
PVS = 4,
|
|
VGS = 8,
|
|
SEGS = 16,
|
|
PVSEGS = 32,
|
|
LABEL = 64,
|
|
DEVTYPES = 128
|
|
} report_type_t;
|
|
|
|
struct field;
|
|
struct report_handle;
|
|
|
|
typedef int (*field_report_fn) (struct report_handle * dh, struct field * field,
|
|
const void *data);
|
|
|
|
void *report_init(struct cmd_context *cmd, const char *format, const char *keys,
|
|
report_type_t *report_type, const char *separator,
|
|
int aligned, int buffered, int headings, int field_prefixes,
|
|
int quoted, int columns_as_rows, const char *selection);
|
|
void report_free(void *handle);
|
|
int report_object(void *handle, struct volume_group *vg,
|
|
struct logical_volume *lv, struct physical_volume *pv,
|
|
struct lv_segment *seg, struct pv_segment *pvseg,
|
|
struct lvinfo *lvinfo, struct label *label);
|
|
int report_devtypes(void *handle);
|
|
int report_output(void *handle);
|
|
|
|
#endif
|