[lvm-devel] [RFC PATCH 5/7] add metadata cache interface
Takahiro Yasui
tyasui at redhat.com
Thu Apr 2 17:19:28 UTC 2009
Metadata cache is loaded into lvmcache if the lvm configuration parameter,
"backup/metadata_cache" has a value of "1" and MCACHE_DISABLE flag is not
set in its lvm command context.
Signed-off-by: Takahiro Yasui <tyasui at redhat.com>
---
lib/commands/toolcontext.c | 14 ++++++++++++++
lib/config/defaults.h | 1 +
tools/lvmcmdline.c | 4 ++++
tools/tools.h | 3 ++-
4 files changed, 21 insertions(+), 1 deletion(-)
Index: LVM2.02.46-cvs-20090324/lib/commands/toolcontext.c
===================================================================
--- LVM2.02.46-cvs-20090324.orig/lib/commands/toolcontext.c
+++ LVM2.02.46-cvs-20090324/lib/commands/toolcontext.c
@@ -929,6 +929,7 @@ static int _init_backup(struct cmd_conte
log_warn("WARNING: Metadata changes will NOT be backed up");
backup_init(cmd, "", 0);
archive_init(cmd, "", 0, 0, 0);
+ mcache_init(cmd, "", 0);
return 1;
}
@@ -980,6 +981,19 @@ static int _init_backup(struct cmd_conte
return 0;
}
+ /* set up the metadata cache */
+ cmd->default_settings.mcache =
+ find_config_tree_bool(cmd, "backup/metadata_cache",
+ DEFAULT_MCACHE_ENABLED);
+
+ /* TODO: Currently mcache uses the same directory as backup, but
+ * mcache should be put in its own directory, ex) /etc/lvm/mcache.
+ */
+ if (!mcache_init(cmd, dir, cmd->default_settings.mcache)) {
+ log_debug("mcache_init failed.");
+ return 0;
+ }
+
return 1;
}
Index: LVM2.02.46-cvs-20090324/lib/config/defaults.h
===================================================================
--- LVM2.02.46-cvs-20090324.orig/lib/config/defaults.h
+++ LVM2.02.46-cvs-20090324/lib/config/defaults.h
@@ -18,6 +18,7 @@
#define DEFAULT_ARCHIVE_ENABLED 1
#define DEFAULT_BACKUP_ENABLED 1
+#define DEFAULT_MCACHE_ENABLED 0
#define DEFAULT_ARCHIVE_SUBDIR "archive"
#define DEFAULT_BACKUP_SUBDIR "backup"
Index: LVM2.02.46-cvs-20090324/tools/lvmcmdline.c
===================================================================
--- LVM2.02.46-cvs-20090324.orig/tools/lvmcmdline.c
+++ LVM2.02.46-cvs-20090324/tools/lvmcmdline.c
@@ -777,6 +777,7 @@ static int _get_settings(struct cmd_cont
cmd->current_settings.archive = arg_int_value(cmd, autobackup_ARG, cmd->current_settings.archive);
cmd->current_settings.backup = arg_int_value(cmd, autobackup_ARG, cmd->current_settings.backup);
+ cmd->current_settings.mcache &= cmd->command->flags & MCACHE_DISABLE ? 0 : 1;
cmd->current_settings.cache_vgmetadata = cmd->command->flags & CACHE_VGMETADATA ? 1 : 0;
cmd->partial_activation = 0;
@@ -892,6 +893,7 @@ static void _apply_settings(struct cmd_c
archive_enable(cmd, cmd->current_settings.archive);
backup_enable(cmd, cmd->current_settings.backup);
+ mcache_enable(cmd, cmd->current_settings.mcache);
set_activation(cmd->current_settings.activation);
@@ -1004,6 +1006,8 @@ int lvm_run_command(struct cmd_context *
goto out;
}
+ mcache_load(cmd);
+
ret = cmd->command->fn(cmd, argc, argv);
fin_locking();
Index: LVM2.02.46-cvs-20090324/tools/tools.h
===================================================================
--- LVM2.02.46-cvs-20090324.orig/tools/tools.h
+++ LVM2.02.46-cvs-20090324/tools/tools.h
@@ -116,7 +116,8 @@ struct arg {
void *ptr;
};
-#define CACHE_VGMETADATA 0x00000001
+#define CACHE_VGMETADATA 0x00000001
+#define MCACHE_DISABLE 0x00000002
/* a register of the lvm commands */
struct command {
More information about the lvm-devel
mailing list