]> sourceware.org Git - lvm2.git/commitdiff
Move processing of VG locks to separate function (similar to LV locks).
authorMilan Broz <mbroz@redhat.com>
Tue, 5 Jan 2010 16:05:12 +0000 (16:05 +0000)
committerMilan Broz <mbroz@redhat.com>
Tue, 5 Jan 2010 16:05:12 +0000 (16:05 +0000)
And print some debugging info.

No functional change in this patch.

WHATS_NEW
daemons/clvmd/clvmd-command.c
daemons/clvmd/lvm-functions.c
daemons/clvmd/lvm-functions.h

index 13232af050a6edcc2117e7694679b1a8d8f9aa2a..f40c5106acd5517a40416e457e977fc5e611d299 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -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.
index 2612a0e1e2e7ffca621828aa5e88e21b4f2a56da..1f8d0cfc18bac227115e5108cf7887f6b6ee3ef4 100644 (file)
@@ -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:
index c832ec59dc93b1cbc52977d7bc5f370759d57260..983f90f36bddcbcb84c926b1b1fc86fceb3fe50a 100644 (file)
@@ -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);
 }
index 3fc3e0695a93be698e976a8e0f82e7ea13b8d53f..8b94e6919acf7c8b630bc5a5427a808858888adc 100644 (file)
@@ -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
This page took 0.055517 seconds and 5 git commands to generate.