From 50c7d85f5df16796e31eb1ce208fe4376a0ecb75 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 12 Mar 2009 12:22:42 -0700 Subject: [PATCH] mds: lock lock actions (no more LOCK_AC_SCATTER) --- src/mds/Locker.cc | 18 +++++++++--------- src/mds/locks.h | 40 ++++++++++++++++++++++++++++++++++++++++ src/messages/MLock.h | 38 +------------------------------------- 3 files changed, 50 insertions(+), 46 deletions(-) diff --git a/src/mds/Locker.cc b/src/mds/Locker.cc index ceed764198c2d..6c6b0fa647b3f 100644 --- a/src/mds/Locker.cc +++ b/src/mds/Locker.cc @@ -446,7 +446,7 @@ void Locker::eval_gather(SimpleLock *lock) case LOCK_SYNC_MIX: { - MLock *reply = new MLock(lock, LOCK_AC_MIXEDACK, mds->get_nodeid()); + MLock *reply = new MLock(lock, LOCK_AC_MIXACK, mds->get_nodeid()); mds->send_message_mds(reply, auth); } break; @@ -479,7 +479,7 @@ void Locker::eval_gather(SimpleLock *lock) if (in->is_replicated()) { bufferlist softdata; lock->encode_locked_state(softdata); - send_lock_message(lock, LOCK_AC_MIXED, softdata); + send_lock_message(lock, LOCK_AC_MIX, softdata); } break; @@ -2621,7 +2621,7 @@ bool Locker::scatter_scatter_fastpath(ScatterLock *lock) // encode and bcast bufferlist data; lock->encode_locked_state(data); - send_lock_message(lock, LOCK_AC_SCATTER, data); + send_lock_message(lock, LOCK_AC_MIX, data); } ((CInode *)lock->get_parent())->try_drop_loner(); @@ -2768,7 +2768,7 @@ void Locker::handle_scatter_lock(ScatterLock *lock, MLock *m) } break; - case LOCK_AC_SCATTER: + case LOCK_AC_MIX: assert(lock->get_state() == LOCK_LOCK); lock->decode_locked_state(m->get_data()); lock->clear_updated(); @@ -3074,7 +3074,7 @@ void Locker::file_mixed(ScatterLock *lock) lock->encode_locked_state(softdata); // bcast to replicas - send_lock_message(lock, LOCK_AC_MIXED, softdata); + send_lock_message(lock, LOCK_AC_MIX, softdata); } // change lock @@ -3090,7 +3090,7 @@ void Locker::file_mixed(ScatterLock *lock) int gather = 0; if (in->is_replicated()) { - send_lock_message(lock, LOCK_AC_MIXED); + send_lock_message(lock, LOCK_AC_MIX); if (lock->get_state() != LOCK_EXCL_MIX) { // EXCL replica is LOCK lock->init_gather(); gather++; @@ -3261,7 +3261,7 @@ void Locker::handle_file_lock(ScatterLock *lock, MLock *m) } break; - case LOCK_AC_MIXED: + case LOCK_AC_MIX: assert(lock->get_state() == LOCK_SYNC || lock->get_state() == LOCK_LOCK || lock->get_state() == LOCK_SYNC_MIX2); @@ -3281,7 +3281,7 @@ void Locker::handle_file_lock(ScatterLock *lock, MLock *m) lock->set_state(LOCK_SYNC_MIX2); // ack - MLock *reply = new MLock(lock, LOCK_AC_MIXEDACK, mds->get_nodeid()); + MLock *reply = new MLock(lock, LOCK_AC_MIXACK, mds->get_nodeid()); mds->send_message_mds(reply, from); } else { // LOCK @@ -3340,7 +3340,7 @@ void Locker::handle_file_lock(ScatterLock *lock, MLock *m) } break; - case LOCK_AC_MIXEDACK: + case LOCK_AC_MIXACK: assert(lock->get_state() == LOCK_SYNC_MIX); assert(lock->is_gathering(from)); lock->remove_gather(from); diff --git a/src/mds/locks.h b/src/mds/locks.h index 0af00b9f2546b..ba4380adee254 100644 --- a/src/mds/locks.h +++ b/src/mds/locks.h @@ -79,4 +79,44 @@ extern struct sm_t sm_scatterlock; #define LOCK_MIX_TSYN 27 +// ------------------------- +// lock actions + +// for replicas +#define LOCK_AC_SYNC -1 +#define LOCK_AC_MIX -2 +#define LOCK_AC_LOCK -3 + +// for auth +#define LOCK_AC_SYNCACK 1 +#define LOCK_AC_MIXACK 2 +#define LOCK_AC_LOCKACK 3 + +#define LOCK_AC_REQSCATTER 7 +#define LOCK_AC_REQUNSCATTER 8 +#define LOCK_AC_NUDGE 9 + +#define LOCK_AC_FOR_REPLICA(a) ((a) < 0) +#define LOCK_AC_FOR_AUTH(a) ((a) > 0) + + +static inline const char *get_lock_action_name(int a) { + switch (a) { + case LOCK_AC_SYNC: return "sync"; + case LOCK_AC_MIX: return "mix"; + case LOCK_AC_LOCK: return "lock"; + + case LOCK_AC_SYNCACK: return "syncack"; + case LOCK_AC_MIXACK: return "mixack"; + case LOCK_AC_LOCKACK: return "lockack"; + + case LOCK_AC_REQSCATTER: return "reqscatter"; + case LOCK_AC_REQUNSCATTER: return "requnscatter"; + case LOCK_AC_NUDGE: return "nudge"; + default: return "???"; + } +} + + + #endif diff --git a/src/messages/MLock.h b/src/messages/MLock.h index da92e85e92136..aaa456f934be1 100644 --- a/src/messages/MLock.h +++ b/src/messages/MLock.h @@ -17,43 +17,7 @@ #define __MLOCK_H #include "msg/Message.h" - -// for replicas -#define LOCK_AC_SYNC -1 -#define LOCK_AC_MIXED -2 -#define LOCK_AC_LOCK -3 - -#define LOCK_AC_SCATTER -6 - -// for auth -#define LOCK_AC_SYNCACK 1 -#define LOCK_AC_MIXEDACK 2 -#define LOCK_AC_LOCKACK 3 - -#define LOCK_AC_REQSCATTER 7 -#define LOCK_AC_REQUNSCATTER 8 -#define LOCK_AC_NUDGE 9 - -#define LOCK_AC_FOR_REPLICA(a) ((a) < 0) -#define LOCK_AC_FOR_AUTH(a) ((a) > 0) - - -static const char *get_lock_action_name(int a) { - switch (a) { - case LOCK_AC_SYNC: return "sync"; - case LOCK_AC_MIXED: return "mixed"; - case LOCK_AC_LOCK: return "lock"; - case LOCK_AC_SCATTER: return "scatter"; - case LOCK_AC_SYNCACK: return "syncack"; - case LOCK_AC_MIXEDACK: return "mixedack"; - case LOCK_AC_LOCKACK: return "lockack"; - case LOCK_AC_REQSCATTER: return "reqscatter"; - case LOCK_AC_REQUNSCATTER: return "requnscatter"; - case LOCK_AC_NUDGE: return "nudge"; - default: assert(0); return 0; - } -} - +#include "mds/locks.h" class MLock : public Message { int32_t action; // action type -- 2.39.5