1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

move hostname into global

This commit is contained in:
Alasdair Kergon 2004-03-08 17:25:59 +00:00
parent cf6dd25126
commit a0313876e7
5 changed files with 46 additions and 20 deletions

View File

@ -33,6 +33,7 @@
#include <locale.h>
#include <sys/stat.h>
#include <sys/utsname.h>
#include <syslog.h>
#include <time.h>
@ -424,6 +425,23 @@ static int _init_formats(struct cmd_context *cmd)
return 0;
}
static int _init_hostname(struct cmd_context *cmd)
{
struct utsname uts;
if (uname(&uts)) {
log_sys_error("uname", "_init_hostname");
return 0;
}
if (!(cmd->hostname = pool_strdup(cmd->libmem, uts.nodename))) {
log_error("_init_hostname: pool_strdup failed");
return 0;
}
return 1;
}
/* Entry point */
struct cmd_context *create_toolcontext(struct arg *the_args)
{
@ -464,6 +482,11 @@ struct cmd_context *create_toolcontext(struct arg *the_args)
_init_logging(cmd);
if (!(cmd->libmem = pool_create(4 * 1024))) {
log_error("Library memory pool creation failed");
return 0;
}
if (!_process_config(cmd))
goto error;
@ -483,6 +506,9 @@ struct cmd_context *create_toolcontext(struct arg *the_args)
if (!_init_formats(cmd))
goto error;
if (!_init_hostname(cmd))
goto error;
cmd->current_settings = cmd->default_settings;
return cmd;
@ -523,6 +549,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
pool_destroy(cmd->mem);
dev_cache_exit();
destroy_config_tree(cmd->cf);
pool_destroy(cmd->libmem);
dbg_free(cmd);
release_log_memory();

View File

@ -42,13 +42,14 @@ struct config_info {
/* FIXME Split into tool & library contexts */
/* command-instance-related variables needed by library */
struct cmd_context {
/* format handler allocates all objects from here */
struct pool *mem;
struct pool *libmem; /* For permanent config data */
struct pool *mem; /* Transient: Cleared between each command */
const struct format_type *fmt; /* Current format to use by default */
struct format_type *fmt_backup; /* Format to use for backups */
struct list formats; /* Available formats */
const char *hostname;
char *cmd_line;
struct command *command;

View File

@ -10,6 +10,7 @@
#include "lvm-types.h"
#include "metadata.h"
#include "pool.h"
#include "toolcontext.h"
#define MAX_PV 256
#define MAX_LV 256
@ -196,7 +197,8 @@ int write_disks(const struct format_type *fmt, struct list *pvds);
int import_pv(struct pool *mem, struct device *dev,
struct volume_group *vg,
struct physical_volume *pv, struct pv_disk *pvd);
int export_pv(struct pool *mem, struct volume_group *vg,
int export_pv(struct cmd_context *cmd, struct pool *mem,
struct volume_group *vg,
struct pv_disk *pvd, struct physical_volume *pv);
int import_vg(struct pool *mem,

View File

@ -202,7 +202,8 @@ static struct volume_group *_vg_read(struct format_instance *fid,
return vg;
}
static struct disk_list *_flatten_pv(struct pool *mem, struct volume_group *vg,
static struct disk_list *_flatten_pv(struct format_instance *fid,
struct pool *mem, struct volume_group *vg,
struct physical_volume *pv,
const char *dev_dir)
{
@ -219,7 +220,7 @@ static struct disk_list *_flatten_pv(struct pool *mem, struct volume_group *vg,
list_init(&dl->uuids);
list_init(&dl->lvds);
if (!export_pv(mem, vg, &dl->pvd, pv) ||
if (!export_pv(fid->fmt->cmd, mem, vg, &dl->pvd, pv) ||
!export_vg(&dl->vgd, vg) ||
!export_uuids(dl, vg) ||
!export_lvs(dl, vg, pv, dev_dir) || !calculate_layout(dl)) {
@ -243,7 +244,7 @@ static int _flatten_vg(struct format_instance *fid, struct pool *mem,
list_iterate(pvh, &vg->pvs) {
pvl = list_item(pvh, struct pv_list);
if (!(data = _flatten_pv(mem, vg, pvl->pv, dev_dir))) {
if (!(data = _flatten_pv(fid, mem, vg, pvl->pv, dev_dir))) {
stack;
return 0;
}
@ -422,7 +423,7 @@ static int _pv_write(const struct format_type *fmt, struct physical_volume *pv,
dl->mem = mem;
dl->dev = pv->dev;
if (!export_pv(mem, NULL, &dl->pvd, pv)) {
if (!export_pv(fmt->cmd, mem, NULL, &dl->pvd, pv)) {
stack;
goto bad;
}

View File

@ -13,9 +13,9 @@
#include "list.h"
#include "lvm-string.h"
#include "filter.h"
#include "toolcontext.h"
#include <time.h>
#include <sys/utsname.h>
static int _check_vg_name(const char *name)
{
@ -81,17 +81,11 @@ int import_pv(struct pool *mem, struct device *dev,
return 1;
}
static int _system_id(char *s, const char *prefix)
static int _system_id(struct cmd_context *cmd, char *s, const char *prefix)
{
struct utsname uts;
if (uname(&uts) != 0) {
log_sys_error("uname", "_system_id");
return 0;
}
if (lvm_snprintf(s, NAME_LEN, "%s%s%lu",
prefix, uts.nodename, time(NULL)) < 0) {
prefix, cmd->hostname, time(NULL)) < 0) {
log_error("Generated system_id too long");
return 0;
}
@ -99,7 +93,8 @@ static int _system_id(char *s, const char *prefix)
return 1;
}
int export_pv(struct pool *mem, struct volume_group *vg,
int export_pv(struct cmd_context *cmd, struct pool *mem,
struct volume_group *vg,
struct pv_disk *pvd, struct physical_volume *pv)
{
memset(pvd, 0, sizeof(*pvd));
@ -130,7 +125,7 @@ int export_pv(struct pool *mem, struct volume_group *vg,
if (!*vg->system_id ||
strncmp(vg->system_id, EXPORTED_TAG,
sizeof(EXPORTED_TAG) - 1)) {
if (!_system_id(pvd->system_id, EXPORTED_TAG)) {
if (!_system_id(cmd, pvd->system_id, EXPORTED_TAG)) {
stack;
return 0;
}
@ -147,7 +142,7 @@ int export_pv(struct pool *mem, struct volume_group *vg,
/* Is VG being imported? */
if (vg && !(vg->status & EXPORTED_VG) && *vg->system_id &&
!strncmp(vg->system_id, EXPORTED_TAG, sizeof(EXPORTED_TAG) - 1)) {
if (!_system_id(pvd->system_id, IMPORTED_TAG)) {
if (!_system_id(cmd, pvd->system_id, IMPORTED_TAG)) {
stack;
return 0;
}
@ -155,7 +150,7 @@ int export_pv(struct pool *mem, struct volume_group *vg,
/* Generate system_id if PV is in VG */
if (!pvd->system_id || !*pvd->system_id)
if (!_system_id(pvd->system_id, "")) {
if (!_system_id(cmd, pvd->system_id, "")) {
stack;
return 0;
}