1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

Decode cluster locking state in log message. (untested)

Change file locking state messages from debug to very verbose.
This commit is contained in:
Alasdair Kergon 2007-11-16 21:16:20 +00:00
parent a68d8ec833
commit 3e50ea9eef
6 changed files with 55 additions and 15 deletions

View File

@ -1,5 +1,7 @@
Version 2.02.29 - Version 2.02.29 -
================================== ==================================
Decode cluster locking state in log message.
Change file locking state messages from debug to very verbose.
Fix --addtag to drop @ prefix from name. Fix --addtag to drop @ prefix from name.
Stop clvmd going haywire if a pre_function fails. Stop clvmd going haywire if a pre_function fails.
Convert some vg_reads into vg_lock_and_reads. Convert some vg_reads into vg_lock_and_reads.

View File

@ -378,6 +378,8 @@ int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags)
{ {
char lockname[PATH_MAX]; char lockname[PATH_MAX];
int cluster_cmd = 0; int cluster_cmd = 0;
const char *lock_scope;
const char *lock_type = "";
assert(strlen(resource) < sizeof(lockname)); assert(strlen(resource) < sizeof(lockname));
assert(resource); assert(resource);
@ -393,6 +395,7 @@ int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags)
dm_snprintf(lockname, sizeof(lockname), "V_%s", dm_snprintf(lockname, sizeof(lockname), "V_%s",
resource); resource);
lock_scope = "VG";
cluster_cmd = CLVMD_CMD_LOCK_VG; cluster_cmd = CLVMD_CMD_LOCK_VG;
flags &= LCK_TYPE_MASK; flags &= LCK_TYPE_MASK;
break; break;
@ -400,6 +403,7 @@ int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags)
case LCK_LV: case LCK_LV:
cluster_cmd = CLVMD_CMD_LOCK_LV; cluster_cmd = CLVMD_CMD_LOCK_LV;
strcpy(lockname, resource); strcpy(lockname, resource);
lock_scope = "LV";
flags &= 0xffdf; /* Mask off HOLD flag */ flags &= 0xffdf; /* Mask off HOLD flag */
break; break;
@ -409,9 +413,40 @@ int lock_resource(struct cmd_context *cmd, const char *resource, uint32_t flags)
return 0; return 0;
} }
/* Send a message to the cluster manager */ switch(flags & LCK_TYPE_MASK) {
log_very_verbose("Locking %s at 0x%x", lockname, flags); case LCK_UNLOCK:
lock_type = "UN";
break;
case LCK_NULL:
lock_type = "NL";
break;
case LCK_READ:
lock_type = "CR";
break;
case LCK_PREAD:
lock_type = "PR";
break;
case LCK_WRITE:
lock_type = "PW";
break;
case LCK_EXCL:
lock_type = "EX";
break;
default:
log_error("Unrecognised lock type: %u",
flags & LCK_TYPE_MASK);
return 0;
}
log_very_verbose("Locking %s %s %s %s%s%s%s (0x%x)", lock_scope, lockname,
lock_type,
flags & LCK_NONBLOCK ? "" : "B",
flags & LCK_HOLD ? "H" : "",
flags & LCK_LOCAL ? "L" : "",
flags & LCK_CLUSTER_VG ? "C" : "",
flags);
/* Send a message to the cluster manager */
return _lock_for_cluster(cluster_cmd, flags, lockname); return _lock_for_cluster(cluster_cmd, flags, lockname);
} }

View File

@ -208,8 +208,6 @@ static int _file_lock_resource(struct cmd_context *cmd, const char *resource,
{ {
char lockfile[PATH_MAX]; char lockfile[PATH_MAX];
assert(resource);
switch (flags & LCK_SCOPE_MASK) { switch (flags & LCK_SCOPE_MASK) {
case LCK_VG: case LCK_VG:
if (!*resource) /* FIXME Deprecated */ if (!*resource) /* FIXME Deprecated */
@ -238,27 +236,30 @@ static int _file_lock_resource(struct cmd_context *cmd, const char *resource,
case LCK_LV: case LCK_LV:
switch (flags & LCK_TYPE_MASK) { switch (flags & LCK_TYPE_MASK) {
case LCK_UNLOCK: case LCK_UNLOCK:
log_debug("Unlocking LV %s", resource); log_very_verbose("Unlocking LV %s", resource);
if (!lv_resume_if_active(cmd, resource)) if (!lv_resume_if_active(cmd, resource))
return 0; return 0;
break; break;
case LCK_NULL: case LCK_NULL:
log_debug("Locking LV %s (NL)", resource); log_very_verbose("Locking LV %s (NL)", resource);
if (!lv_deactivate(cmd, resource)) if (!lv_deactivate(cmd, resource))
return 0; return 0;
break; break;
case LCK_READ: case LCK_READ:
log_debug("Locking LV %s (R)", resource); log_very_verbose("Locking LV %s (R)", resource);
if (!lv_activate_with_filter(cmd, resource, 0)) if (!lv_activate_with_filter(cmd, resource, 0))
return 0; return 0;
break; break;
case LCK_PREAD:
log_very_verbose("Locking LV %s (PR) - ignored", resource);
break;
case LCK_WRITE: case LCK_WRITE:
log_debug("Locking LV %s (W)", resource); log_very_verbose("Locking LV %s (W)", resource);
if (!lv_suspend_if_active(cmd, resource)) if (!lv_suspend_if_active(cmd, resource))
return 0; return 0;
break; break;
case LCK_EXCL: case LCK_EXCL:
log_debug("Locking LV %s (EX)", resource); log_very_verbose("Locking LV %s (EX)", resource);
if (!lv_activate_with_filter(cmd, resource, 1)) if (!lv_activate_with_filter(cmd, resource, 1))
return 0; return 0;
break; break;

View File

@ -318,6 +318,8 @@ static int _lock_vol(struct cmd_context *cmd, const char *resource, uint32_t fla
_block_signals(flags); _block_signals(flags);
_lock_memory(flags); _lock_memory(flags);
assert(resource);
if (!(_locking.lock_resource(cmd, resource, flags))) { if (!(_locking.lock_resource(cmd, resource, flags))) {
_unlock_memory(flags); _unlock_memory(flags);
_unblock_signals(); _unblock_signals();

View File

@ -23,10 +23,10 @@ struct pvresize_params {
unsigned total; unsigned total;
}; };
int pv_resize_single(struct cmd_context *cmd, static int _pv_resize_single(struct cmd_context *cmd,
struct volume_group *vg, struct volume_group *vg,
struct physical_volume *pv, struct physical_volume *pv,
const uint64_t new_size) const uint64_t new_size)
{ {
struct pv_list *pvl; struct pv_list *pvl;
int consistent = 1; int consistent = 1;
@ -186,7 +186,7 @@ static int _pvresize_single(struct cmd_context *cmd,
params->total++; params->total++;
if (!pv_resize_single(cmd, vg, pv, params->new_size)) if (!_pv_resize_single(cmd, vg, pv, params->new_size))
return ECMD_FAILED; return ECMD_FAILED;
params->done++; params->done++;

View File

@ -428,7 +428,7 @@ int process_each_segment_in_pv(struct cmd_context *cmd,
int ret_max = 0; int ret_max = 0;
int ret; int ret;
if (!vg) { if (!vg && !is_orphan(pv)) {
vg_name = pv_vg_name(pv); vg_name = pv_vg_name(pv);
if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_READ, if (!(vg = vg_lock_and_read(cmd, vg_name, NULL, LCK_VG_READ,