From: wysochanski@sourceware.org <wysochanski@sourceware.org>
To: lvm-devel@redhat.com
Subject: LVM2 lib/config/defaults.h lib/format_text/for ...
Date: 30 Jun 2010 12:17:29 -0000 [thread overview]
Message-ID: <20100630121729.17914.qmail@sourceware.org> (raw)
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: wysochanski at sourceware.org 2010-06-30 12:17:25
Modified files:
lib/config : defaults.h
lib/format_text: format-text.c format-text.h text_label.c
lib/metadata : metadata-exported.h metadata.c
tools : commands.h toollib.c
Log message:
Add --metadataignore to pvcreate.
Allow metadataignore flag to be passed in to pvcreate.
Ideally, more refactoring of the mda allocation / initialization
is warranted, but for now, we just add another parameter to 'add_mda'
to take an existing mda ignored flag. We need to do this or pv_write
loses the state of the mda 'ignored' flag before copying and writing
to disk.
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/config/defaults.h.diff?cvsroot=lvm2&r1=1.61&r2=1.62
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.c.diff?cvsroot=lvm2&r1=1.136&r2=1.137
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/format-text.h.diff?cvsroot=lvm2&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/format_text/text_label.c.diff?cvsroot=lvm2&r1=1.33&r2=1.34
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.160&r2=1.161
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata.c.diff?cvsroot=lvm2&r1=1.367&r2=1.368
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/commands.h.diff?cvsroot=lvm2&r1=1.150&r2=1.151
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.204&r2=1.205
--- LVM2/lib/config/defaults.h 2010/06/28 20:36:37 1.61
+++ LVM2/lib/config/defaults.h 2010/06/30 12:17:24 1.62
@@ -59,6 +59,7 @@
#define DEFAULT_FORMAT "lvm2"
#define DEFAULT_STRIPESIZE 64 /* KB */
+#define DEFAULT_PVMETADATAIGNORE 0
#define DEFAULT_PVMETADATASIZE 255
#define DEFAULT_PVMETADATACOPIES 1
#define DEFAULT_VGMETADATACOPIES 0
--- LVM2/lib/format_text/format-text.c 2010/06/29 22:37:32 1.136
+++ LVM2/lib/format_text/format-text.c 2010/06/30 12:17:24 1.137
@@ -1337,7 +1337,7 @@
/* FIXME If creating new mdas, wipe them! */
if (mda_size1) {
if (!add_mda(fmt, fmt->cmd->mem, mdas, pv->dev, start1,
- mda_size1))
+ mda_size1, 0))
return 0;
if (!dev_set((struct device *) pv->dev, start1,
@@ -1384,7 +1384,7 @@
if (mda_size2) {
if (!add_mda(fmt, fmt->cmd->mem, mdas, pv->dev, start2,
- mda_size2)) return 0;
+ mda_size2, 0)) return 0;
if (!dev_set(pv->dev, start2,
(size_t) (mda_size1 >
wipe_size ? : mda_size1), 0)) {
@@ -1440,7 +1440,7 @@
mdac->area.start >> SECTOR_SHIFT,
mdac->area.size >> SECTOR_SHIFT);
add_mda(fmt, NULL, &info->mdas, mdac->area.dev,
- mdac->area.start, mdac->area.size);
+ mdac->area.start, mdac->area.size, mda_is_ignored(mda));
}
/* FIXME Temporary until mda creation supported by tools */
} else if (!info->mdas.n) {
--- LVM2/lib/format_text/format-text.h 2010/06/28 20:31:01 1.27
+++ LVM2/lib/format_text/format-text.h 2010/06/30 12:17:24 1.28
@@ -56,7 +56,7 @@
void del_das(struct dm_list *das);
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);
+ struct device *dev, uint64_t start, uint64_t size, unsigned ignored);
void del_mdas(struct dm_list *mdas);
#endif
--- LVM2/lib/format_text/text_label.c 2010/06/29 22:25:58 1.33
+++ LVM2/lib/format_text/text_label.c 2010/06/30 12:17:24 1.34
@@ -182,8 +182,9 @@
}
}
+/* FIXME: refactor this function with other mda constructor code */
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)
+ struct device *dev, uint64_t start, uint64_t size, unsigned ignored)
{
/* FIXME List size restricted by pv_header SECTOR_SIZE */
struct metadata_area *mdal;
@@ -222,6 +223,7 @@
mdac->area.size = size;
mdac->free_sectors = UINT64_C(0);
memset(&mdac->rlocn, 0, sizeof(mdac->rlocn));
+ mda_set_ignored(mdal, ignored);
dm_list_add(mdas, &mdal->list);
return 1;
@@ -294,7 +296,7 @@
dlocn_xl++;
while ((offset = xlate64(dlocn_xl->offset))) {
add_mda(info->fmt, NULL, &info->mdas, dev, offset,
- xlate64(dlocn_xl->size));
+ xlate64(dlocn_xl->size), 0);
dlocn_xl++;
}
--- LVM2/lib/metadata/metadata-exported.h 2010/06/29 22:41:28 1.160
+++ LVM2/lib/metadata/metadata-exported.h 2010/06/30 12:17:24 1.161
@@ -453,6 +453,7 @@
const char *restorefile; /* 0 if no --restorefile option */
force_t force;
unsigned yes;
+ unsigned mda_ignore;
};
struct physical_volume *pvcreate_single(struct cmd_context *cmd,
--- LVM2/lib/metadata/metadata.c 2010/06/29 22:41:28 1.367
+++ LVM2/lib/metadata/metadata.c 2010/06/30 12:17:24 1.368
@@ -1580,6 +1580,7 @@
pp->restorefile = 0;
pp->force = PROMPT;
pp->yes = 0;
+ pp->mda_ignore = DEFAULT_PVMETADATAIGNORE;
}
/*
@@ -1602,6 +1603,7 @@
struct dm_list mdas;
struct pvcreate_params default_pp;
char buffer[64] __attribute((aligned(8)));
+ struct metadata_area *mda;
pvcreate_params_set_defaults(&default_pp);
if (!pp)
@@ -1667,6 +1669,13 @@
log_very_verbose("Writing physical volume data to disk \"%s\"",
pv_name);
+
+ if (pp->mda_ignore) {
+ dm_list_iterate_items(mda, &mdas) {
+ mda_set_ignored(mda, 1);
+ }
+ }
+
if (!(pv_write(cmd, pv, &mdas, pp->labelsector))) {
log_error("Failed to write physical volume \"%s\"", pv_name);
goto error;
--- LVM2/tools/commands.h 2010/06/28 20:39:24 1.150
+++ LVM2/tools/commands.h 2010/06/30 12:17:25 1.151
@@ -517,8 +517,8 @@
dataalignment_ARG, dataalignmentoffset_ARG, force_ARG, test_ARG,
labelsector_ARG, metadatatype_ARG, metadatacopies_ARG, pvmetadatacopies_ARG,
- metadatasize_ARG, physicalvolumesize_ARG, restorefile_ARG, uuidstr_ARG,
- yes_ARG, zero_ARG)
+ metadatasize_ARG, metadataignore_ARG, physicalvolumesize_ARG,
+ restorefile_ARG, uuidstr_ARG, yes_ARG, zero_ARG)
xx(pvdata,
"Display the on-disk metadata for physical volume(s)",
--- LVM2/tools/toollib.c 2010/06/28 20:38:23 1.204
+++ LVM2/tools/toollib.c 2010/06/30 12:17:25 1.205
@@ -1377,6 +1377,18 @@
return 0;
}
+ if (arg_count(cmd, metadataignore_ARG)) {
+ pp->mda_ignore = !strcmp(arg_str_value(cmd,
+ metadataignore_ARG,
+ "n"), "y");
+ }
+ if (arg_count(cmd, pvmetadatacopies_ARG) &&
+ !arg_int_value(cmd, pvmetadatacopies_ARG, -1) &&
+ pp->mda_ignore) {
+ log_error("metadataignore only applies to metadatacopies > 0");
+ return 0;
+ }
+
if (arg_count(cmd, zero_ARG))
pp->zero = strcmp(arg_str_value(cmd, zero_ARG, "y"), "n");
reply other threads:[~2010-06-30 12:17 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20100630121729.17914.qmail@sourceware.org \
--to=wysochanski@sourceware.org \
--cc=lvm-devel@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.