]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add SCAN, PRE_SCAN lock states
authorSage Weil <sage@newdream.net>
Fri, 10 Jul 2009 19:25:53 +0000 (12:25 -0700)
committerSage Weil <sage@newdream.net>
Fri, 10 Jul 2009 22:32:55 +0000 (15:32 -0700)
Also clean up state machine array sizes

src/mds/SimpleLock.h
src/mds/locks.c
src/mds/locks.h

index d47dd924bc87f7e8f490d1baf5a678a2131a31b7..3bc2aee3fa64c3b8da1d7fb41bc07db2127433ed 100644 (file)
@@ -87,6 +87,9 @@ public:
     case LOCK_EXCL_MIX: return "excl->mix";
     case LOCK_MIX_EXCL: return "mix->excl";
 
+    case LOCK_PRE_SCAN: return "*->scan";
+    case LOCK_SCAN: return "scan";
+
     default: assert(0); return 0;
     }
   }
index cb84ec65cad99d1fea57c6263ef8b705f89a07ea..eee76c148b005c0cda94f97f4a25976021417ae2 100644 (file)
@@ -12,7 +12,7 @@ typedef char bool;
 #include "include/ceph_fs.h"
 #include "locks.h"
 
-struct sm_state_t simplelock[20] = {
+struct sm_state_t simplelock[LOCK_MAX] = {
                       // stable     loner  rep state  r     rp   rd   wr   l    x    caps,other
     [LOCK_SYNC]      = { 0,         false, LOCK_SYNC, ANY,  0,   ANY, 0,   ANY, 0,   CEPH_CAP_GSHARED,0,0,CEPH_CAP_GSHARED },
     [LOCK_LOCK_SYNC] = { LOCK_SYNC, false, LOCK_SYNC, ANY,  XCL, XCL, 0,   XCL, 0,   0,0,0,0 },
@@ -48,7 +48,7 @@ struct sm_t sm_simplelock = {
 //  Tempsync _/
 // (out of date)
 
-struct sm_state_t scatterlock[30] = {
+struct sm_state_t scatterlock[LOCK_MAX] = {
                       // stable     loner  rep state  r     rp   rd   wr   l    x    caps,other
     [LOCK_SYNC]      = { 0,         false, LOCK_SYNC, ANY,  0,   ANY, 0,   ANY, 0,   CEPH_CAP_GSHARED,0,0,CEPH_CAP_GSHARED },
     [LOCK_LOCK_SYNC] = { LOCK_SYNC, false, LOCK_LOCK, AUTH, 0,   0,   0,   0,   0,   0,0,0,0 },
@@ -77,7 +77,7 @@ struct sm_t sm_scatterlock = {
        .can_remote_xlock = 0,
 };
 
-struct sm_state_t filelock[30] = {
+struct sm_state_t filelock[LOCK_MAX] = {
                       // stable     loner  rep state  r     rp   rd   wr   l    x    caps(any,loner,xlocker,replica)
     [LOCK_SYNC]      = { 0,         false, LOCK_SYNC, ANY,  0,   ANY, 0,   ANY, 0,   CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD,0,0,CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD },
     [LOCK_LOCK_SYNC] = { LOCK_SYNC, false, LOCK_SYNC, AUTH, 0,   AUTH,0,   0,   0,   CEPH_CAP_GCACHE,0,0,0 },
@@ -104,6 +104,9 @@ struct sm_state_t filelock[30] = {
     [LOCK_SYNC_EXCL] = { LOCK_EXCL, true,  LOCK_LOCK, AUTH, 0,   0,   0,   0,   0,   0,CEPH_CAP_GSHARED|CEPH_CAP_GCACHE|CEPH_CAP_GRD,0,0 },
     [LOCK_MIX_EXCL]  = { LOCK_EXCL, true,  LOCK_LOCK, 0,    0,   0,   XCL, 0,   0,   0,CEPH_CAP_GRD|CEPH_CAP_GWR,0,0 },
     [LOCK_LOCK_EXCL] = { LOCK_EXCL, true,  LOCK_LOCK, AUTH, 0,   0,   0,   0,   0,   0,CEPH_CAP_GCACHE|CEPH_CAP_GBUFFER,0,0 },
+
+    [LOCK_PRE_SCAN]  = { LOCK_SCAN, false, LOCK_LOCK, 0,    0,   0,   0,   0,   0,   0,0,0,0 },
+    [LOCK_SCAN]      = { 0,         false, LOCK_LOCK, 0,    0,   0,   0,   0,   0,   0,0,0,0 },
 };
 
 struct sm_t sm_filelock = {
index fe2aee2b31e574b8e87553dbb01e923241ea344b..77a54c18bd7789ee0b5ccbef48e5efa0386af6e5 100644 (file)
@@ -80,6 +80,10 @@ extern struct sm_t sm_scatterlock;
 #define LOCK_LOCK_TSYN 27
 #define LOCK_MIX_TSYN  28
 
+#define LOCK_PRE_SCAN 29
+#define LOCK_SCAN     30
+
+#define LOCK_MAX      31
 
 // -------------------------
 // lock actions