[lvm-devel] LVM2 lib/metadata/lv_manip.c lib/metadata/meta ...
agk at sourceware.org
agk at sourceware.org
Thu Dec 20 22:37:43 UTC 2007
CVSROOT: /cvs/lvm2
Module name: LVM2
Changes by: agk at sourceware.org 2007-12-20 22:37:42
Modified files:
lib/metadata : lv_manip.c metadata-exported.h mirror.c
tools : toollib.c toollib.h
Log message:
various cleanups in recent patches
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/lv_manip.c.diff?cvsroot=lvm2&r1=1.138&r2=1.139
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/metadata-exported.h.diff?cvsroot=lvm2&r1=1.27&r2=1.28
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/metadata/mirror.c.diff?cvsroot=lvm2&r1=1.47&r2=1.48
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.c.diff?cvsroot=lvm2&r1=1.120&r2=1.121
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/tools/toollib.h.diff?cvsroot=lvm2&r1=1.53&r2=1.54
--- LVM2/lib/metadata/lv_manip.c 2007/12/20 18:55:46 1.138
+++ LVM2/lib/metadata/lv_manip.c 2007/12/20 22:37:42 1.139
@@ -2280,7 +2280,7 @@
struct segment_type *segtype;
struct lv_segment *mapseg;
- if (!(segtype = get_segtype_from_string(lv_where->vg->cmd, "striped")))
+ if (!(segtype = get_segtype_from_string(cmd, "striped")))
return_NULL;
/* create an empty layer LV */
@@ -2310,7 +2310,7 @@
_move_lv_segments(layer_lv, lv_where, 0, 0);
/* allocate a new linear segment */
- if (!(mapseg = alloc_lv_segment(lv_where->vg->cmd->mem, segtype,
+ if (!(mapseg = alloc_lv_segment(cmd->mem, segtype,
lv_where, 0, layer_lv->le_count,
status, 0, NULL, 1, layer_lv->le_count,
0, 0, 0)))
@@ -2520,3 +2520,51 @@
return 1;
}
+
+/*
+ * Initialize the LV with 'value'.
+ */
+int set_lv(struct cmd_context *cmd, struct logical_volume *lv,
+ uint64_t sectors, int value)
+{
+ struct device *dev;
+ char *name;
+
+ /*
+ * FIXME:
+ * <clausen> also, more than 4k
+ * <clausen> say, reiserfs puts it's superblock 32k in, IIRC
+ * <ejt_> k, I'll drop a fixme to that effect
+ * (I know the device is at least 4k, but not 32k)
+ */
+ if (!(name = dm_pool_alloc(cmd->mem, PATH_MAX))) {
+ log_error("Name allocation failed - device not cleared");
+ return 0;
+ }
+
+ if (dm_snprintf(name, PATH_MAX, "%s%s/%s", cmd->dev_dir,
+ lv->vg->name, lv->name) < 0) {
+ log_error("Name too long - device not cleared (%s)", lv->name);
+ return 0;
+ }
+
+ log_verbose("Clearing start of logical volume \"%s\"", lv->name);
+
+ if (!(dev = dev_cache_get(name, NULL))) {
+ log_error("%s: not found: device not cleared", name);
+ return 0;
+ }
+
+ if (!dev_open_quiet(dev))
+ return 0;
+
+ dev_set(dev, UINT64_C(0),
+ sectors ? (size_t) sectors << SECTOR_SHIFT : (size_t) 4096,
+ value);
+ dev_flush(dev);
+ dev_close_immediate(dev);
+
+ return 1;
+}
+
+
--- LVM2/lib/metadata/metadata-exported.h 2007/12/20 18:55:46 1.27
+++ LVM2/lib/metadata/metadata-exported.h 2007/12/20 22:37:42 1.28
@@ -88,6 +88,10 @@
#define CORRECT_INCONSISTENT 0x00000001U /* Correct inconsistent metadata */
#define FAIL_INCONSISTENT 0x00000002U /* Fail if metadata inconsistent */
+/* Mirror conversion type flags */
+#define MIRROR_BY_SEG 0x00000001U /* segment-by-segment mirror */
+#define MIRROR_BY_LV 0x00000002U /* mirror by mimage LVs */
+
/* Ordered list - see lv_manip.c */
typedef enum {
ALLOC_INVALID,
@@ -355,6 +359,10 @@
int import,
struct volume_group *vg);
+/* Write out LV contents */
+int set_lv(struct cmd_context *cmd, struct logical_volume *lv,
+ uint64_t sectors, int value);
+
/* Reduce the size of an LV by extents */
int lv_reduce(struct logical_volume *lv, uint32_t extents);
@@ -457,9 +465,6 @@
int lv_remove_mirrors(struct cmd_context *cmd, struct logical_volume *lv,
uint32_t mirrors, uint32_t log_count,
struct list *pvs, uint32_t status_mask);
-/* conversion flags */
-#define MIRROR_BY_SEG 0x00000001U /* segment-by-segment mirror */
-#define MIRROR_BY_LV 0x00000002U /* mirror by mimage LVs */
int is_temporary_mirror_layer(const struct logical_volume *lv);
uint32_t lv_mirror_count(const struct logical_volume *lv);
--- LVM2/lib/metadata/mirror.c 2007/12/20 18:55:46 1.47
+++ LVM2/lib/metadata/mirror.c 2007/12/20 22:37:42 1.48
@@ -27,6 +27,11 @@
#include "defaults.h" /* FIXME: should this be defaults.h? */
+/* These are necessary for _write_log_header() */
+#include "xlate.h"
+#define MIRROR_MAGIC 0x4D695272
+#define MIRROR_DISK_VERSION 2
+
/* These are the flags that represent the mirror failure restoration policies */
#define MIRROR_REMOVE 0
#define MIRROR_ALLOCATE 1
@@ -332,7 +337,7 @@
static int _merge_mirror_images(struct logical_volume *lv,
const struct list *mimages)
{
- int addition = list_size(mimages);
+ uint32_t addition = list_size(mimages);
struct logical_volume **img_lvs;
struct lv_list *lvl;
int i = 0;
@@ -893,60 +898,10 @@
}
/*
- * Initialize the LV with 'value'.
- */
-static int _set_lv(struct cmd_context *cmd, struct logical_volume *lv,
- uint64_t sectors, int value)
-{
- struct device *dev;
- char *name;
-
- /*
- * FIXME:
- * <clausen> also, more than 4k
- * <clausen> say, reiserfs puts it's superblock 32k in, IIRC
- * <ejt_> k, I'll drop a fixme to that effect
- * (I know the device is at least 4k, but not 32k)
- */
- if (!(name = dm_pool_alloc(cmd->mem, PATH_MAX))) {
- log_error("Name allocation failed - device not cleared");
- return 0;
- }
-
- if (dm_snprintf(name, PATH_MAX, "%s%s/%s", cmd->dev_dir,
- lv->vg->name, lv->name) < 0) {
- log_error("Name too long - device not cleared (%s)", lv->name);
- return 0;
- }
-
- log_verbose("Clearing start of logical volume \"%s\"", lv->name);
-
- if (!(dev = dev_cache_get(name, NULL))) {
- log_error("%s: not found: device not cleared", name);
- return 0;
- }
-
- if (!dev_open_quiet(dev))
- return 0;
-
- dev_set(dev, UINT64_C(0),
- sectors ? (size_t) sectors << SECTOR_SHIFT : (size_t) 4096,
- value);
- dev_flush(dev);
- dev_close_immediate(dev);
-
- return 1;
-}
-
-/*
* This function writes a new header to the mirror log header to the lv
*
* Returns: 1 on success, 0 on failure
*/
-#include "xlate.h"
-#define MIRROR_MAGIC 0x4D695272
-#define MIRROR_DISK_VERSION 2
-
static int _write_log_header(struct cmd_context *cmd, struct logical_volume *lv)
{
struct device *dev;
@@ -1036,7 +991,7 @@
log_error("Failed to remove tag %s from mirror log.",
sl->str);
- if (activation() && !_set_lv(cmd, log_lv, log_lv->size,
+ if (activation() && !set_lv(cmd, log_lv, log_lv->size,
in_sync ? -1 : 0)) {
log_error("Aborting. Failed to wipe mirror log.");
goto deactivate_and_revert_new_lv;
@@ -1072,11 +1027,10 @@
return 0;
}
-static struct logical_volume *_create_mirror_log(struct cmd_context *cmd,
- struct logical_volume *lv,
- struct alloc_handle *ah,
- alloc_policy_t alloc,
- const char *lv_name)
+static struct logical_volume *_create_mirror_log(struct logical_volume *lv,
+ struct alloc_handle *ah,
+ alloc_policy_t alloc,
+ const char *lv_name)
{
struct logical_volume *log_lv;
char *log_name;
@@ -1108,7 +1062,7 @@
struct alloc_handle *ah,
struct logical_volume *lv,
uint32_t log_count,
- uint32_t region_size,
+ uint32_t region_size __attribute((unused)),
alloc_policy_t alloc,
int in_sync)
{
@@ -1116,7 +1070,12 @@
init_mirror_in_sync(in_sync);
- if (!(log_lv = _create_mirror_log(cmd, lv, ah, alloc, lv->name))) {
+ if (log_count != 1) {
+ log_error("log_count != 1 is not supported.");
+ return NULL;
+ }
+
+ if (!(log_lv = _create_mirror_log(lv, ah, alloc, lv->name))) {
log_error("Failed to create mirror log.");
return NULL;
}
@@ -1341,7 +1300,8 @@
* 'mirror' is the number of mirrors to be removed.
* 'pvs' is removable pvs.
*/
-int lv_remove_mirrors(struct cmd_context *cmd, struct logical_volume *lv,
+int lv_remove_mirrors(struct cmd_context *cmd __attribute((unused)),
+ struct logical_volume *lv,
uint32_t mirrors, uint32_t log_count, struct list *pvs,
uint32_t status_mask)
{
--- LVM2/tools/toollib.c 2007/12/20 18:55:46 1.120
+++ LVM2/tools/toollib.c 2007/12/20 22:37:42 1.121
@@ -1246,50 +1246,3 @@
return 1;
}
-
-/*
- * Initialize the LV with 'value'.
- */
-int set_lv(struct cmd_context *cmd, struct logical_volume *lv,
- uint64_t sectors, int value)
-{
- struct device *dev;
- char *name;
-
- /*
- * FIXME:
- * <clausen> also, more than 4k
- * <clausen> say, reiserfs puts it's superblock 32k in, IIRC
- * <ejt_> k, I'll drop a fixme to that effect
- * (I know the device is at least 4k, but not 32k)
- */
- if (!(name = dm_pool_alloc(cmd->mem, PATH_MAX))) {
- log_error("Name allocation failed - device not cleared");
- return 0;
- }
-
- if (dm_snprintf(name, PATH_MAX, "%s%s/%s", cmd->dev_dir,
- lv->vg->name, lv->name) < 0) {
- log_error("Name too long - device not cleared (%s)", lv->name);
- return 0;
- }
-
- log_verbose("Clearing start of logical volume \"%s\"", lv->name);
-
- if (!(dev = dev_cache_get(name, NULL))) {
- log_error("%s: not found: device not cleared", name);
- return 0;
- }
-
- if (!dev_open_quiet(dev))
- return 0;
-
- dev_set(dev, UINT64_C(0),
- sectors ? (size_t) sectors << SECTOR_SHIFT : (size_t) 4096,
- value);
- dev_flush(dev);
- dev_close_immediate(dev);
-
- return 1;
-}
-
--- LVM2/tools/toollib.h 2007/12/20 15:42:55 1.53
+++ LVM2/tools/toollib.h 2007/12/20 22:37:42 1.54
@@ -98,7 +98,4 @@
int validate_new_vg_name(struct cmd_context *cmd, const char *vg_name);
-int set_lv(struct cmd_context *cmd, struct logical_volume *lv,
- uint64_t sectors, int value);
-
#endif
More information about the lvm-devel
mailing list