From de8a55e500de86bf7c9a2fd4363cbb2f9c4855c3 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 11 Mar 2010 09:41:30 -0800 Subject: [PATCH] mds: add locallock statemachine This is just for consistency; it's trivial. We lost the get_sm() pointer test, though. --- src/mds/SimpleLock.h | 5 ++++- src/mds/locks.c | 13 +++++++++++++ src/mds/locks.h | 2 +- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/mds/SimpleLock.h b/src/mds/SimpleLock.h index ec3b8b64dcbae..9f04d11908bf5 100644 --- a/src/mds/SimpleLock.h +++ b/src/mds/SimpleLock.h @@ -66,6 +66,9 @@ struct LockType { case CEPH_LOCK_IFILE: sm = &sm_filelock; break; + case CEPH_LOCK_IVERSION: + sm = &sm_locallock; + break; default: sm = 0; } @@ -252,7 +255,7 @@ public: } bool is_stable() { - return !get_sm() || get_sm()->states[state].next == 0; + return get_sm()->states[state].next == 0; } int get_next_state() { return get_sm()->states[state].next; diff --git a/src/mds/locks.c b/src/mds/locks.c index 7b23f6186b2bc..dcc2c3ed1bd77 100644 --- a/src/mds/locks.c +++ b/src/mds/locks.c @@ -131,3 +131,16 @@ struct sm_t sm_filelock = { .can_remote_xlock = 0, }; + +struct sm_state_t locallock[LOCK_MAX] = { + // stable loner rep state r rp rd wr l x caps(any,loner,xlocker,replica) + [LOCK_LOCK] = { 0, false, LOCK_LOCK, ANY, 0, ANY, 0, ANY, 0, 0,0,0,0 }, +}; + +struct sm_t sm_locallock = { + .states = locallock, + .allowed_ever_auth = 0, + .allowed_ever_replica = 0, + .careful = 0, + .can_remote_xlock = 0, +}; diff --git a/src/mds/locks.h b/src/mds/locks.h index 7c77cd70e35cc..39f96fab56c12 100644 --- a/src/mds/locks.h +++ b/src/mds/locks.h @@ -34,7 +34,7 @@ struct sm_t { extern struct sm_t sm_simplelock; extern struct sm_t sm_filelock; extern struct sm_t sm_scatterlock; - +extern struct sm_t sm_locallock; -- 2.39.5