ocfs2_dlm: Cookies in locks not being printed correctly in error messages
authorKurt Hackel <kurt.hackel@oracle.com>
Wed, 17 Jan 2007 23:11:36 +0000 (15:11 -0800)
committerMark Fasheh <mark.fasheh@oracle.com>
Wed, 7 Feb 2007 20:06:24 +0000 (12:06 -0800)
The dlm encodes the node number and a sequence number in the lock cookie.
It also stores the cookie in the lockres in the big endian format to avoid
swapping 8 bytes on each lock request. The bug here was that it was assuming
the cookie to be in the cpu format when decoding it for printing the error
message. This patch swaps the bytes before the print.

Signed-off-by: Kurt Hackel <kurt.hackel@oracle.com>
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
fs/ocfs2/dlm/dlmast.c
fs/ocfs2/dlm/dlmconvert.c
fs/ocfs2/dlm/dlmdebug.c
fs/ocfs2/dlm/dlmrecovery.c
fs/ocfs2/dlm/dlmunlock.c

index 681046d51393ba3d3dad17c137ed1d4e42e590d7..ad5e7e1fa1ff6ece40f8beb0a25e1553c61515cc 100644 (file)
@@ -311,8 +311,8 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
            past->type != DLM_BAST) {
                mlog(ML_ERROR, "Unknown ast type! %d, cookie=%u:%llu"
                     "name=%.*s\n", past->type, 
-                    dlm_get_lock_cookie_node(cookie),
-                    dlm_get_lock_cookie_seq(cookie),
+                    dlm_get_lock_cookie_node(be64_to_cpu(cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(cookie)),
                     locklen, name);
                ret = DLM_IVLOCKID;
                goto leave;
@@ -323,8 +323,8 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
                mlog(0, "got %sast for unknown lockres! "
                     "cookie=%u:%llu, name=%.*s, namelen=%u\n",
                     past->type == DLM_AST ? "" : "b",
-                    dlm_get_lock_cookie_node(cookie),
-                    dlm_get_lock_cookie_seq(cookie),
+                    dlm_get_lock_cookie_node(be64_to_cpu(cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(cookie)),
                     locklen, name, locklen);
                ret = DLM_IVLOCKID;
                goto leave;
@@ -369,7 +369,8 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
 
        mlog(0, "got %sast for unknown lock!  cookie=%u:%llu, "
             "name=%.*s, namelen=%u\n", past->type == DLM_AST ? "" : "b", 
-            dlm_get_lock_cookie_node(cookie), dlm_get_lock_cookie_seq(cookie),
+            dlm_get_lock_cookie_node(be64_to_cpu(cookie)),
+            dlm_get_lock_cookie_seq(be64_to_cpu(cookie)),
             locklen, name, locklen);
 
        ret = DLM_NORMAL;
index 370f23c385f1594ffe9e7455cba6a1159710791d..59fb63da8b659b590f6fcca1a950f4b27aba35d2 100644 (file)
@@ -286,8 +286,8 @@ enum dlm_status dlmconvert_remote(struct dlm_ctxt *dlm,
                __dlm_print_one_lock_resource(res);
                mlog(ML_ERROR, "converting a remote lock that is already "
                     "converting! (cookie=%u:%llu, conv=%d)\n",
-                    dlm_get_lock_cookie_node(lock->ml.cookie),
-                    dlm_get_lock_cookie_seq(lock->ml.cookie),
+                    dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
                     lock->ml.convert_type);
                status = DLM_DENIED;
                goto bail;
@@ -484,8 +484,8 @@ int dlm_convert_lock_handler(struct o2net_msg *msg, u32 len, void *data)
                status = DLM_IVLOCKID;
                mlog(ML_ERROR, "did not find lock to convert on grant queue! "
                               "cookie=%u:%llu\n",
-                              dlm_get_lock_cookie_node(cnv->cookie),
-                              dlm_get_lock_cookie_seq(cnv->cookie));
+                    dlm_get_lock_cookie_node(be64_to_cpu(cnv->cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(cnv->cookie)));
                __dlm_print_one_lock_resource(res);
                goto leave;
        }
index 1015cc7bf9cb2f0787de6831f599d5de54801363..64239b37e5d4bcd9a48c902469f8a85881f38568 100644 (file)
@@ -90,8 +90,8 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
                mlog(ML_NOTICE, "    type=%d, conv=%d, node=%u, "
                       "cookie=%u:%llu, ast=(empty=%c,pend=%c), bast=(empty=%c,pend=%c)\n", 
                       lock->ml.type, lock->ml.convert_type, lock->ml.node, 
-                      dlm_get_lock_cookie_node(lock->ml.cookie), 
-                      dlm_get_lock_cookie_seq(lock->ml.cookie), 
+                    dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
                       list_empty(&lock->ast_list) ? 'y' : 'n',
                       lock->ast_pending ? 'y' : 'n',
                       list_empty(&lock->bast_list) ? 'y' : 'n',
@@ -105,8 +105,8 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
                mlog(ML_NOTICE, "    type=%d, conv=%d, node=%u, "
                       "cookie=%u:%llu, ast=(empty=%c,pend=%c), bast=(empty=%c,pend=%c)\n", 
                       lock->ml.type, lock->ml.convert_type, lock->ml.node, 
-                      dlm_get_lock_cookie_node(lock->ml.cookie), 
-                      dlm_get_lock_cookie_seq(lock->ml.cookie), 
+                    dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
                       list_empty(&lock->ast_list) ? 'y' : 'n',
                       lock->ast_pending ? 'y' : 'n',
                       list_empty(&lock->bast_list) ? 'y' : 'n',
@@ -120,8 +120,8 @@ void __dlm_print_one_lock_resource(struct dlm_lock_resource *res)
                mlog(ML_NOTICE, "    type=%d, conv=%d, node=%u, "
                       "cookie=%u:%llu, ast=(empty=%c,pend=%c), bast=(empty=%c,pend=%c)\n", 
                       lock->ml.type, lock->ml.convert_type, lock->ml.node, 
-                      dlm_get_lock_cookie_node(lock->ml.cookie), 
-                      dlm_get_lock_cookie_seq(lock->ml.cookie), 
+                    dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
                       list_empty(&lock->ast_list) ? 'y' : 'n',
                       lock->ast_pending ? 'y' : 'n',
                       list_empty(&lock->bast_list) ? 'y' : 'n',
index e57636c399f4e4ec4c5f2f16bc4bfc747298e8ac..38d7146453096e316f9a78affb10193f0e9e5b7a 100644 (file)
@@ -1766,8 +1766,8 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm,
                                u64 c = ml->cookie;
                                mlog(ML_ERROR, "could not find local lock "
                                               "with cookie %u:%llu!\n",
-                                              dlm_get_lock_cookie_node(c),
-                                              dlm_get_lock_cookie_seq(c));
+                                    dlm_get_lock_cookie_node(be64_to_cpu(c)),
+                                    dlm_get_lock_cookie_seq(be64_to_cpu(c)));
                                __dlm_print_one_lock_resource(res);
                                BUG();
                        }
@@ -1876,14 +1876,14 @@ skip_lvb:
                                mlog(ML_ERROR, "%s:%.*s: %u:%llu: lock already "
                                     "exists on this lockres!\n", dlm->name,
                                     res->lockname.len, res->lockname.name,
-                                    dlm_get_lock_cookie_node(c),
-                                    dlm_get_lock_cookie_seq(c));
+                                    dlm_get_lock_cookie_node(be64_to_cpu(c)),
+                                    dlm_get_lock_cookie_seq(be64_to_cpu(c)));
 
                                mlog(ML_NOTICE, "sent lock: type=%d, conv=%d, "
                                     "node=%u, cookie=%u:%llu, queue=%d\n",
                                     ml->type, ml->convert_type, ml->node,
-                                    dlm_get_lock_cookie_node(ml->cookie),
-                                    dlm_get_lock_cookie_seq(ml->cookie),
+                                    dlm_get_lock_cookie_node(be64_to_cpu(ml->cookie)),
+                                    dlm_get_lock_cookie_seq(be64_to_cpu(ml->cookie)),
                                     ml->list);
 
                                __dlm_print_one_lock_resource(res);
index 3c8a250fcfec018b0017f2dcbac5d9479a448bc0..fc8baa3e95396060bf60bedc37a52a4c732361a2 100644 (file)
@@ -248,8 +248,8 @@ leave:
                /* this should always be coupled with list removal */
                BUG_ON(!(actions & DLM_UNLOCK_REMOVE_LOCK));
                mlog(0, "lock %u:%llu should be gone now! refs=%d\n",
-                    dlm_get_lock_cookie_node(lock->ml.cookie),
-                    dlm_get_lock_cookie_seq(lock->ml.cookie),
+                    dlm_get_lock_cookie_node(be64_to_cpu(lock->ml.cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(lock->ml.cookie)),
                     atomic_read(&lock->lock_refs.refcount)-1);
                dlm_lock_put(lock);
        }
@@ -506,8 +506,8 @@ not_found:
        if (!found)
                mlog(ML_ERROR, "failed to find lock to unlock! "
                               "cookie=%u:%llu\n",
-                              dlm_get_lock_cookie_node(unlock->cookie),
-                              dlm_get_lock_cookie_seq(unlock->cookie));
+                    dlm_get_lock_cookie_node(be64_to_cpu(unlock->cookie)),
+                    dlm_get_lock_cookie_seq(be64_to_cpu(unlock->cookie)));
        else
                dlm_lock_put(lock);