linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / fs / ocfs2 / dlm / dlmast.c
index 42775e2..8d17d28 100644 (file)
@@ -197,14 +197,12 @@ static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
                                  lock->ml.node == dlm->node_num ? "master" :
                                  "remote");
                        memcpy(lksb->lvb, res->lvb, DLM_LVB_LEN);
+               } else if (lksb->flags & DLM_LKSB_PUT_LVB) {
+                       mlog(0, "setting lvb from lockres for %s node\n",
+                                 lock->ml.node == dlm->node_num ? "master" :
+                                 "remote");
+                       memcpy(res->lvb, lksb->lvb, DLM_LVB_LEN);
                }
-               /* Do nothing for lvb put requests - they should be done in
-                * place when the lock is downconverted - otherwise we risk
-                * racing gets and puts which could result in old lvb data
-                * being propagated. We leave the put flag set and clear it
-                * here. In the future we might want to clear it at the time
-                * the put is actually done.
-                */
                spin_unlock(&res->spinlock);
        }
 
@@ -309,11 +307,8 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
 
        if (past->type != DLM_AST &&
            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),
-                    locklen, name);
+               mlog(ML_ERROR, "Unknown ast type! %d, cookie=%"MLFu64", "
+                    "name=%.*s\n", past->type, cookie, locklen, name);
                ret = DLM_IVLOCKID;
                goto leave;
        }
@@ -321,11 +316,9 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
        res = dlm_lookup_lockres(dlm, name, locklen);
        if (!res) {
                mlog(ML_ERROR, "got %sast for unknown lockres! "
-                              "cookie=%u:%llu, name=%.*s, namelen=%u\n",
+                              "cookie=%"MLFu64", name=%.*s, namelen=%u\n",
                     past->type == DLM_AST ? "" : "b",
-                    dlm_get_lock_cookie_node(cookie),
-                    dlm_get_lock_cookie_seq(cookie),
-                    locklen, name, locklen);
+                    cookie, locklen, name, locklen);
                ret = DLM_IVLOCKID;
                goto leave;
        }
@@ -367,12 +360,9 @@ int dlm_proxy_ast_handler(struct o2net_msg *msg, u32 len, void *data)
                        goto do_ast;
        }
 
-       mlog(ML_ERROR, "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),
-                      locklen, name, locklen);
+       mlog(ML_ERROR, "got %sast for unknown lock!  cookie=%"MLFu64", "
+                      "name=%.*s, namelen=%u\n",
+             past->type == DLM_AST ? "" : "b", cookie, locklen, name, locklen);
 
        ret = DLM_NORMAL;
 unlock_out:
@@ -383,7 +373,8 @@ do_ast:
        ret = DLM_NORMAL;
        if (past->type == DLM_AST) {
                /* do not alter lock refcount.  switching lists. */
-               list_move_tail(&lock->list, &res->granted);
+               list_del_init(&lock->list);
+               list_add_tail(&lock->list, &res->granted);
                mlog(0, "ast: adding to granted list... type=%d, "
                          "convert_type=%d\n", lock->ml.type, lock->ml.convert_type);
                if (lock->ml.convert_type != LKM_IVMODE) {