提交 ded3d47b 编写于 作者: M Michal Privoznik

Revert "lock_driver: Introduce new VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON"

This reverts commit 22baf6e0.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
上级 a8df9652
...@@ -42,8 +42,6 @@ typedef enum { ...@@ -42,8 +42,6 @@ typedef enum {
typedef enum { typedef enum {
/* The managed object is a virtual guest domain */ /* The managed object is a virtual guest domain */
VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN = 0, VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN = 0,
/* The managed object is a daemon (e.g. libvirtd) */
VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON = 1,
} virLockManagerObjectType; } virLockManagerObjectType;
typedef enum { typedef enum {
......
...@@ -56,21 +56,10 @@ struct _virLockManagerLockDaemonResource { ...@@ -56,21 +56,10 @@ struct _virLockManagerLockDaemonResource {
}; };
struct _virLockManagerLockDaemonPrivate { struct _virLockManagerLockDaemonPrivate {
virLockManagerObjectType type;
union {
struct {
unsigned char uuid[VIR_UUID_BUFLEN]; unsigned char uuid[VIR_UUID_BUFLEN];
char *name; char *name;
int id; int id;
pid_t pid; pid_t pid;
} dom;
struct {
unsigned char uuid[VIR_UUID_BUFLEN];
char *name;
pid_t pid;
} daemon;
} t;
size_t nresources; size_t nresources;
virLockManagerLockDaemonResourcePtr resources; virLockManagerLockDaemonResourcePtr resources;
...@@ -167,30 +156,10 @@ virLockManagerLockDaemonConnectionRegister(virLockManagerPtr lock, ...@@ -167,30 +156,10 @@ virLockManagerLockDaemonConnectionRegister(virLockManagerPtr lock,
memset(&args, 0, sizeof(args)); memset(&args, 0, sizeof(args));
args.flags = 0; args.flags = 0;
memcpy(args.owner.uuid, priv->uuid, VIR_UUID_BUFLEN);
switch (priv->type) { args.owner.name = priv->name;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN: args.owner.id = priv->id;
memcpy(args.owner.uuid, priv->t.dom.uuid, VIR_UUID_BUFLEN); args.owner.pid = priv->pid;
args.owner.name = priv->t.dom.name;
args.owner.id = priv->t.dom.id;
args.owner.pid = priv->t.dom.pid;
break;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON:
memcpy(args.owner.uuid, priv->t.daemon.uuid, VIR_UUID_BUFLEN);
args.owner.name = priv->t.daemon.name;
args.owner.pid = priv->t.daemon.pid;
/* This one should not be needed. However, virtlockd
* checks for ID because not every domain has a PID. */
args.owner.id = priv->t.daemon.pid;
break;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown lock manager object type %d"),
priv->type);
return -1;
}
if (virNetClientProgramCall(program, if (virNetClientProgramCall(program,
client, client,
...@@ -422,18 +391,7 @@ virLockManagerLockDaemonPrivateFree(virLockManagerLockDaemonPrivatePtr priv) ...@@ -422,18 +391,7 @@ virLockManagerLockDaemonPrivateFree(virLockManagerLockDaemonPrivatePtr priv)
} }
VIR_FREE(priv->resources); VIR_FREE(priv->resources);
switch (priv->type) { VIR_FREE(priv->name);
case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN:
VIR_FREE(priv->t.dom.name);
break;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON:
VIR_FREE(priv->t.daemon.name);
break;
default:
break;
}
VIR_FREE(priv); VIR_FREE(priv);
} }
...@@ -462,82 +420,46 @@ static int virLockManagerLockDaemonNew(virLockManagerPtr lock, ...@@ -462,82 +420,46 @@ static int virLockManagerLockDaemonNew(virLockManagerPtr lock,
if (VIR_ALLOC(priv) < 0) if (VIR_ALLOC(priv) < 0)
return -1; return -1;
priv->type = type; switch (type) {
switch ((virLockManagerObjectType) type) {
case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN: case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN:
for (i = 0; i < nparams; i++) { for (i = 0; i < nparams; i++) {
if (STREQ(params[i].key, "uuid")) { if (STREQ(params[i].key, "uuid")) {
memcpy(priv->t.dom.uuid, params[i].value.uuid, VIR_UUID_BUFLEN); memcpy(priv->uuid, params[i].value.uuid, VIR_UUID_BUFLEN);
} else if (STREQ(params[i].key, "name")) { } else if (STREQ(params[i].key, "name")) {
if (VIR_STRDUP(priv->t.dom.name, params[i].value.str) < 0) if (VIR_STRDUP(priv->name, params[i].value.str) < 0)
goto cleanup; goto cleanup;
} else if (STREQ(params[i].key, "id")) { } else if (STREQ(params[i].key, "id")) {
priv->t.dom.id = params[i].value.iv; priv->id = params[i].value.iv;
} else if (STREQ(params[i].key, "pid")) { } else if (STREQ(params[i].key, "pid")) {
priv->t.dom.pid = params[i].value.iv; priv->pid = params[i].value.iv;
} else if (STREQ(params[i].key, "uri")) { } else if (STREQ(params[i].key, "uri")) {
/* ignored */ /* ignored */
} else { } else {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unexpected parameter %s for domain object"), _("Unexpected parameter %s for object"),
params[i].key); params[i].key);
goto cleanup; goto cleanup;
} }
} }
if (priv->t.dom.id == 0) { if (priv->id == 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing ID parameter for domain object")); _("Missing ID parameter for domain object"));
goto cleanup; goto cleanup;
} }
if (priv->t.dom.pid == 0) if (priv->pid == 0)
VIR_DEBUG("Missing PID parameter for domain object"); VIR_DEBUG("Missing PID parameter for domain object");
if (!priv->t.dom.name) { if (!priv->name) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing name parameter for domain object")); _("Missing name parameter for domain object"));
goto cleanup; goto cleanup;
} }
if (!virUUIDIsValid(priv->t.dom.uuid)) { if (!virUUIDIsValid(priv->uuid)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing UUID parameter for domain object")); _("Missing UUID parameter for domain object"));
goto cleanup; goto cleanup;
} }
break; break;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON:
for (i = 0; i < nparams; i++) {
if (STREQ(params[i].key, "uuid")) {
memcpy(priv->t.daemon.uuid, params[i].value.uuid, VIR_UUID_BUFLEN);
} else if (STREQ(params[i].key, "name")) {
if (VIR_STRDUP(priv->t.daemon.name, params[i].value.str) < 0)
goto cleanup;
} else if (STREQ(params[i].key, "pid")) {
priv->t.daemon.pid = params[i].value.iv;
} else {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unexpected parameter %s for daemon object"),
params[i].key);
goto cleanup;
}
}
if (!virUUIDIsValid(priv->t.daemon.uuid)) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing UUID parameter for daemon object"));
goto cleanup;
}
if (!priv->t.daemon.name) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing name parameter for daemon object"));
goto cleanup;
}
if (priv->t.daemon.pid == 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Missing PID parameter for daemon object"));
goto cleanup;
}
break;
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown lock manager object type %d"), _("Unknown lock manager object type %d"),
...@@ -572,9 +494,6 @@ static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock, ...@@ -572,9 +494,6 @@ static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock,
if (flags & VIR_LOCK_MANAGER_RESOURCE_READONLY) if (flags & VIR_LOCK_MANAGER_RESOURCE_READONLY)
return 0; return 0;
switch (priv->type) {
case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN:
switch (type) { switch (type) {
case VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK: case VIR_LOCK_MANAGER_RESOURCE_TYPE_DISK:
if (params || nparams) { if (params || nparams) {
...@@ -676,15 +595,6 @@ static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock, ...@@ -676,15 +595,6 @@ static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock,
goto cleanup; goto cleanup;
} break; } break;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown lock manager object type %d for domain lock object"),
type);
goto cleanup;
}
break;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON:
default: default:
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown lock manager object type %d"), _("Unknown lock manager object type %d"),
...@@ -729,8 +639,7 @@ static int virLockManagerLockDaemonAcquire(virLockManagerPtr lock, ...@@ -729,8 +639,7 @@ static int virLockManagerLockDaemonAcquire(virLockManagerPtr lock,
virCheckFlags(VIR_LOCK_MANAGER_ACQUIRE_REGISTER_ONLY | virCheckFlags(VIR_LOCK_MANAGER_ACQUIRE_REGISTER_ONLY |
VIR_LOCK_MANAGER_ACQUIRE_RESTRICT, -1); VIR_LOCK_MANAGER_ACQUIRE_RESTRICT, -1);
if (priv->type == VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN && if (priv->nresources == 0 &&
priv->nresources == 0 &&
priv->hasRWDisks && priv->hasRWDisks &&
driver->requireLeaseForDisks) { driver->requireLeaseForDisks) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
......
...@@ -509,8 +509,6 @@ static int virLockManagerSanlockNew(virLockManagerPtr lock, ...@@ -509,8 +509,6 @@ static int virLockManagerSanlockNew(virLockManagerPtr lock,
priv->flags = flags; priv->flags = flags;
switch ((virLockManagerObjectType) type) {
case VIR_LOCK_MANAGER_OBJECT_TYPE_DOMAIN:
for (i = 0; i < nparams; i++) { for (i = 0; i < nparams; i++) {
param = &params[i]; param = &params[i];
...@@ -527,15 +525,6 @@ static int virLockManagerSanlockNew(virLockManagerPtr lock, ...@@ -527,15 +525,6 @@ static int virLockManagerSanlockNew(virLockManagerPtr lock,
priv->vm_uri = param->value.cstr; priv->vm_uri = param->value.cstr;
} }
} }
break;
case VIR_LOCK_MANAGER_OBJECT_TYPE_DAEMON:
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown lock manager object type %d"),
type);
goto error;
}
/* Sanlock needs process registration, but the only way how to probe /* Sanlock needs process registration, but the only way how to probe
* whether a process has been registered is to inquire the lock. If * whether a process has been registered is to inquire the lock. If
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册