From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32201 invoked by alias); 21 Feb 2011 12:17:56 -0000 Received: (qmail 32182 invoked by uid 9796); 21 Feb 2011 12:17:55 -0000 Date: Mon, 21 Feb 2011 12:17:00 -0000 Message-ID: <20110221121755.32180.qmail@sourceware.org> From: prajnoha@sourceware.org To: lvm-devel@redhat.com, lvm2-cvs@sourceware.org Subject: LVM2/lib format_text/format-text.c format_text ... Mailing-List: contact lvm2-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: lvm2-cvs-owner@sourceware.org X-SW-Source: 2011-02/txt/msg00057.txt.bz2 CVSROOT: /cvs/lvm2 Module name: LVM2 Changes by: prajnoha@sourceware.org 2011-02-21 12:17:54 Modified files: lib/format_text: format-text.c format-text.h lib/metadata : metadata.h Log message: Add new pv_remove_metadata_area interface function. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.159&r2=1.160 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.h.diff?cvsroot=lvm2&r1=1.30&r2=1.31 http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.h.diff?cvsroot=lvm2&r1=1.234&r2=1.235 --- LVM2/lib/format_text/format-text.c 2011/02/21 12:17:26 1.159 +++ LVM2/lib/format_text/format-text.c 2011/02/21 12:17:54 1.160 @@ -2272,6 +2272,29 @@ return 0; } +int remove_metadata_area_from_pv(struct physical_volume *pv, + unsigned mda_index) +{ + if (mda_index >= FMT_TEXT_MAX_MDAS_PER_PV) { + log_error(INTERNAL_ERROR "can't remove metadata area with " + "index %u from PV %s. Metadata " + "layou not supported by %s format.", + mda_index, dev_name(pv->dev), + pv->fmt->name); + return 0; + } + + return fid_remove_mda(pv->fid, NULL, (const char *) &pv->id, + ID_LEN, mda_index); +} + +static int _text_pv_remove_metadata_area(const struct format_type *fmt, + struct physical_volume *pv, + unsigned mda_index) +{ + return remove_metadata_area_from_pv(pv, mda_index); +} + /* NULL vgname means use only the supplied context e.g. an archive file */ static struct format_instance *_text_create_text_instance(const struct format_type *fmt, const struct format_instance_ctx *fic) @@ -2347,6 +2370,7 @@ .pv_read = _text_pv_read, .pv_setup = _text_pv_setup, .pv_add_metadata_area = _text_pv_add_metadata_area, + .pv_remove_metadata_area = _text_pv_remove_metadata_area, .pv_write = _text_pv_write, .vg_setup = _text_vg_setup, .lv_setup = _text_lv_setup, --- LVM2/lib/format_text/format-text.h 2011/02/21 12:17:26 1.30 +++ LVM2/lib/format_text/format-text.h 2011/02/21 12:17:54 1.31 @@ -61,6 +61,8 @@ uint64_t mda_start, uint64_t mda_size, unsigned mda_ignored); +int remove_metadata_area_from_pv(struct physical_volume *pv, + unsigned mda_index); int add_mda(const struct format_type *fmt, struct dm_pool *mem, struct dm_list *mdas, struct device *dev, uint64_t start, uint64_t size, unsigned ignored); void del_mdas(struct dm_list *mdas); --- LVM2/lib/metadata/metadata.h 2011/02/21 12:17:26 1.234 +++ LVM2/lib/metadata/metadata.h 2011/02/21 12:17:54 1.235 @@ -278,6 +278,13 @@ unsigned metadata_ignored); /* + * Remove metadata area from a PV. Changes will take effect on pv_write. + */ + int (*pv_remove_metadata_area) (const struct format_type *fmt, + struct physical_volume *pv, + unsigned metadata_index); + + /* * Write a PV structure to disk. Fails if the PV is in a VG ie * pv->vg_name must be a valid orphan VG name */