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;
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;
// 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();
}
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();
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
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++;
}
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);
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
}
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);
#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
#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