diff options
author | Milan Broz <mbroz@redhat.com> | 2010-01-05 16:05:12 +0000 |
---|---|---|
committer | Milan Broz <mbroz@redhat.com> | 2010-01-05 16:05:12 +0000 |
commit | ac85c2e75bc3b2ecdf3bb8063ac473069adc4244 (patch) | |
tree | 7b4b2adc43af9a66a6cf4092166c130a85381ebe | |
parent | d7f44761abede516695eee34cc382f97e5ae3094 (diff) | |
download | lvm2-ac85c2e75bc3b2ecdf3bb8063ac473069adc4244.tar.gz lvm2-ac85c2e75bc3b2ecdf3bb8063ac473069adc4244.tar.xz lvm2-ac85c2e75bc3b2ecdf3bb8063ac473069adc4244.zip |
Move processing of VG locks to separate function (similar to LV locks).
And print some debugging info.
No functional change in this patch.
-rw-r--r-- | WHATS_NEW | 1 | ||||
-rw-r--r-- | daemons/clvmd/clvmd-command.c | 9 | ||||
-rw-r--r-- | daemons/clvmd/lvm-functions.c | 17 | ||||
-rw-r--r-- | daemons/clvmd/lvm-functions.h | 3 |
4 files changed, 20 insertions, 10 deletions
@@ -1,5 +1,6 @@ Version 2.02.57 - ==================================== + Move processing of VG locks to separate function in clvmd. Properly decode flags even for VG locks. Properly handle precommitted flag in cache when commited data only present. Resume renamed volumes in reverse order to preserve memlock pairing. diff --git a/daemons/clvmd/clvmd-command.c b/daemons/clvmd/clvmd-command.c index 2612a0e1..1f8d0cfc 100644 --- a/daemons/clvmd/clvmd-command.c +++ b/daemons/clvmd/clvmd-command.c @@ -119,15 +119,12 @@ int do_command(struct local_client *client, struct clvm_header *msg, int msglen, break; case CLVMD_CMD_LOCK_VG: + lock_cmd = args[0]; + lock_flags = args[1]; lockname = &args[2]; /* Check to see if the VG is in use by LVM1 */ status = do_check_lvm1(lockname); - /* P_#global causes a full cache refresh */ - if (!strcmp(lockname, "P_" VG_GLOBAL)) - do_refresh_cache(); - else - drop_metadata(lockname + 2); - + do_lock_vg(lock_cmd, lock_flags, lockname); break; case CLVMD_CMD_LOCK_LV: diff --git a/daemons/clvmd/lvm-functions.c b/daemons/clvmd/lvm-functions.c index c832ec59..983f90f3 100644 --- a/daemons/clvmd/lvm-functions.c +++ b/daemons/clvmd/lvm-functions.c @@ -676,12 +676,23 @@ static void drop_vg_locks() } /* - * Drop lvmcache metadata + * Handle VG lock - drop metadata or update lvmcache state */ -void drop_metadata(const char *vgname) +void do_lock_vg(unsigned char command, unsigned char lock_flags, char *resource) { - DEBUGLOG("Dropping metadata for VG %s\n", vgname); + char *vgname = resource + 2; + + DEBUGLOG("do_lock_vg: resource '%s', cmd = %s, flags = %s, memlock = %d\n", + resource, decode_locking_cmd(command), decode_flags(lock_flags), memlock()); + + /* P_#global causes a full cache refresh */ + if (!strcmp(resource, "P_" VG_GLOBAL)) { + do_refresh_cache(); + return; + } + pthread_mutex_lock(&lvm_lock); + DEBUGLOG("Dropping metadata for VG %s\n", vgname); lvmcache_drop_metadata(vgname); pthread_mutex_unlock(&lvm_lock); } diff --git a/daemons/clvmd/lvm-functions.h b/daemons/clvmd/lvm-functions.h index 3fc3e069..8b94e691 100644 --- a/daemons/clvmd/lvm-functions.h +++ b/daemons/clvmd/lvm-functions.h @@ -35,6 +35,7 @@ extern void lvm_do_backup(const char *vgname); extern int hold_unlock(char *resource); extern int hold_lock(char *resource, int mode, int flags); extern char *get_last_lvm_error(void); -extern void drop_metadata(const char *vgname); +extern void do_lock_vg(unsigned char command, unsigned char lock_flags, + char *resource); #endif |